SQL fuskark

SQL Cheat Sheet Intro Image


I den här guiden hittar du ett användbart fuskark som dokumenterar några av de vanligare elementen i SQL, och till och med några av de mindre vanliga. Förhoppningsvis kommer det att hjälpa utvecklare – både nybörjare och erfaren nivå – bli mer skickliga i sin förståelse av SQL-språket.

Använd detta som en snabbreferens under utveckling, ett lärande hjälpmedel, eller till och med skriva ut det och binda det om du föredrar (vad som fungerar!).

Men innan vi kommer till fusksidan, för utvecklare som kanske inte känner till SQL, låt oss börja med …

Vad är SQL

SQL står för Structured Query Language. Det är det språk du väljer på dagens webb för att lagra, manipulera och hämta data i relationella databaser. De flesta, om inte Allt av de webbplatser du besöker kommer att använda det på något sätt, inklusive detta ett.

Så här ser en grundläggande relationsdatabas ut. Detta exempel lagrar i synnerhet e-handelsinformation, specifikt de produkter som är till försäljning, de användare som köper dem och poster av dessa beställningar som länkar dessa två enheter.

En grundläggande relationsdatabas

Med SQL kan du interagera med databasen genom att skriva frågor, som när de körs returnerar alla resultat som uppfyller dess kriterier.

Här är ett exempelfråga:-

VÄLJ * FRÅN användare;

Med hjälp av detta SELECT-uttalande väljer frågan all data från alla kolumner i användartabellen. Den returnerar sedan data som nedan, som vanligtvis kallas en resultatuppsättning:-

Exempel användare tabell

Om vi ​​istället skulle ersätta asterisk jokertecken (*) med specifika kolumnnamn, skulle bara data från dessa kolumner returneras från frågan.

VÄLJ förnamn, efternamn FRÅN användare;

Exempel på användartabell med reducerade kolumner

Vi kan lägga till lite komplexitet i ett standard SELECT-uttalande genom att lägga till en WHERE-klausul, som låter dig filtrera vad som kommer tillbaka.

VÄLJ * FRÅN produkter VAR lagerantal <= 10 ORDER BY stock_count ASC;

Denna fråga skulle returnera all data från produkttabellen med ett lagerantal på mindre än 10 i resultatuppsättningen.

Användningen av sökordet ORDER BY innebär att resultaten kommer att beställas med kolumnen stock_count, lägsta värden till högsta.

Exempel på produkttabell

Med INSERT INTO-uttalandet kan vi lägga till nya data i en tabell. Här är ett grundläggande exempel som lägger till en ny användare i användartabellen:-

INSERT INTO användare (förnamn, efternamn, adress, e-post)
VÄRDER ('Tester', 'Jester', '123 Fake Street, Sheffield, Storbritannien', '[e-postskyddad]');

Om du sedan skulle köra om frågan för att returnera all data från användarens tabell så ser resultaten upp så här:

Exempel tabell med ny rad

Naturligtvis visar dessa exempel bara ett mycket litet urval av vad SQL-språket kan.

SQL vs MySQL

Du kanske har hört talas om MySQL tidigare. Det är viktigt att du inte förväxlar detta med SQL själv, eftersom det är en tydlig skillnad.

SQL vs MySQLSQL är språk. Den beskriver syntax som låter dig skriva frågor som hanterar relationella databaser. Inget mer.

MySQL under tiden är en databas systemet som körs på en server. den redskap SQL-språket, så att du kan skriva frågor med syntaxen för att hantera MySQL-databaser.

Förutom MySQL finns det andra system som implementerar SQL. Några av de mer populära inkluderar:

  • PostgreSQL
  • SQLite
  • Oracle-databas
  • Microsoft SQL Server

Installera MySQL

Windows

Det rekommenderade sättet att installera MySQL på Windows är att använda det installationsprogram som du kan ladda ner från MySQL-webbplats.

Installera MySQL Windows

Mac OS

På macOS är det rekommenderade sättet att installera MySQL att använda ursprungliga paket, vilket låter mycket mer komplicerat än det faktiskt är. I huvudsak handlar det också bara om att ladda ner en installer.

Installera MySQL Mac

Alternativt, om du föredrar att använda pakethanterare som homebrew, du kan installera MySQL så:

brygga installera mysql

Om du behöver installera den äldre MySQL version 5.7, som fortfarande används i dag på webben, kan du:

brygga installation [e-postskyddad]

Använda MySQL

Med MySQL nu installerat på ditt system, för att komma igång så fort som möjligt att skriva SQL-frågor, rekommenderas det att du använder en SQL-hanteringsapplikation för att göra hantering av dina databaser till en mycket enklare och enklare process.

Det finns många appar att välja mellan som i stort sett gör samma jobb, så det beror på din egen personliga inställning som du ska använda:

  • MySQL Workbench är utvecklad av Oracle, ägaren av MySQL.
  • HeidiSQL (Rekommenderat Windows) är en gratis open source-app för Windows. För MacOS- och Linux-användare, Vin krävs först som en förutsättning.
  • phpMyAdmin är ett mycket populärt alternativ som fungerar i webbläsaren.
  • Sequel Pro (Rekommenderad macOS) är ett enda alternativ för macOS och vår favorit tack vare det tydliga och lättanvända gränssnittet.

När du är redo att börja skriva dina egna SQL-frågor, snarare än att spendera tid på att skapa din egen databas, kan du överväga att importera dummidata istället.

MySQL-webbplatsen innehåller ett antal dummy-databaser att du kan ladda ner gratis och sedan importera till din SQL-app.

Dummy-databas MySQL

Vår favorit av dessa är värld databas, som ger några intressanta data att öva på att skriva SQL-frågor för. Här är en skärmdump av landstabellen i Sequel Pro.

Sequel Pro-exempel

Detta exempelfråga returnerar alla länder med drottning Elizabeth II som statschef head.

Sequel Pro-exempel

Medan denna återvänder alla europeiska länder med en befolkning på över 50 miljoner tillsammans med deras huvudstad och dess befolkning.

Sequel Pro-exempel

Och denna sista ger den genomsnittliga andelen fransktalande i länder där det totala antalet fransktalande är högre än 10%.

Sequel Pro-exempel

Fusklapp

Nyckelord

En samling nyckelord som används i SQL-satser, en beskrivning och i förekommande fall ett exempel. Några av de mer avancerade nyckelorden har ett eget dedikerat avsnitt senare i fusket.

Där MySQL nämns bredvid ett exempel betyder detta att detta exempel endast är tillämpligt på MySQL-databaser (i motsats till något annat databassystem).

SQL-nyckelord
NyckelordBeskrivning
LÄGG TILLLägger till en ny kolumn i en befintlig tabell.

Exempel: Lägger till en ny kolumn med namnet "e-postadress" i en tabell med namnet "användare".

ALTER TABLE användare
LÄGG TILL e-postadressadress varchar (255);
LÄGG TILL CONSTRAINTDet skapar en ny begränsning på en befintlig tabell, som används för att specificera regler för alla data i tabellen.

Exempel: Lägger till en ny PRIMARY KEY-begränsning med namnet 'user' i kolumnerna ID och SURNAME.

ALTER TABLE användare
LÄGG TILL CONSTRAINT-användare PRIMÄRKNYCKEL (ID, SURNAME);
ÄNDRA TABELLLägger till, raderar eller redigerar kolumner i en tabell. Det kan också användas för att lägga till och ta bort begränsningar i en tabell enligt ovan.

Exempel: Lägger till en ny boolesk kolumn som heter 'godkänd' i en tabell med namnet 'erbjudanden'.

ALTER TABLE erbjudanden
LÄGG TILL godkänd booleska;

Exempel 2: Tar bort kolumnen "godkänd" från tabellen "erbjudanden"

ALTER TABLE erbjudanden
DROP COLUMN godkänd;
ALTER COLUMNÄndrar datatypen i en tabells kolumn.

Exempel: Gör kolumnen 'incept_date' i tabellen "användare" till en "datetime" -typ.

ALTER TABLE användare
ALTER COLUMN incept_date datetime;
ALLTReturnerar sant om alla undersökningsvärden uppfyller det godkända villkoret.

Exempel: Returnerar användare med ett högre antal uppgifter än användaren med det högsta antalet uppgifter i HR-avdelningen (id 2)

VÄLJ förnamn, efternamn, uppgifter_nr
FRÅN användare
VAR uppgifter_no> ALLA (VÄLJ uppgifter FRÅN användaren WHERE department_id = 2);
OCHAnvänds för att gå med i separata villkor inom en WHERE-klausul.

Exempel: Returnerar händelser i London, Storbritannien

VÄLJ * FRÅN händelser
VAR host_country = 'Storbritannien' OCH host_city = 'London';
NÅGRAReturnerar sant om något av undervärden uppfyller det givna villkoret.

Exempel: Returnerar produkter från produkttabellen som har fått beställningar - lagrade i ordertabellen - med en kvantitet på mer än 5.

VÄLJ namn
FRÅN produkter
VAR produktId = NÅGON (VÄLJ produktId FRÅN beställningar VAR kvantitet> 5);
SOMByt namn på en tabell eller kolumn med ett aliasvärde som endast finns under frågeställningens varaktighet.

Exempel: Aliaser north_east_user_subscribing kolumnen

VÄLJ north_east_user_subscribs AS ne_subs
FRÅN användare
VAR ne_subs> 5;
ASCAnvänds med ORDER BY för att returnera data i stigande ordning.

Exempel: Äpplen, bananer, persikor, rädisor

MELLANVäljer värden inom det givna intervallet.

Exempel 1: Väljer lager med en mängd mellan 100 och 150.

VÄLJ * FRÅN lager
VAR Mängd MELLAN 100 OCH 150;

Exempel 2: Väljer lager med en mängd INTE mellan 100 och 150. Alternativt, om du använder INTE nyckelordet här vänder du logiken och väljer värden utanför det givna intervallet.

VÄLJ * FRÅN lager
DÄR kvantitet INTE MELLAN 100 OCH 150;
FALLÄndra frågeställningen beroende på förhållanden.

Exempel: Returnerar användare och deras prenumerationer, tillsammans med en ny kolumn som heter aktivitet_nivåer som gör en bedömning baserad på antalet prenumerationer.

VÄLJ förnamn, efternamn, prenumerationer
FALL NÄR prenumerationer> 10 DET 'Mycket aktivt'
NÄR Mängd MELLAN 3 OCH 10 DAN 'Aktiv'
ELSE 'Inaktiv'
END AS aktivitetsnivåer
FRÅN användare;
KONTROLLERALägger till en begränsning som begränsar värdet som kan läggas till i en kolumn.

Exempel 1 (MySQL): Se till att alla användare som läggs till i användartabellen är 18 eller över.

SKAPA TABELL användare (
förnamn varchar (255),
ålder int,
KONTROLLERA (ålder> = 18)
);

Exempel 2 (MySQL): Lägger till en kontroll efter att tabellen redan har skapats.

ALTER TABLE användare
ADD CHECK (ålder> = 18);
SKAPA DATABASERINGSkapar en ny databas.

Exempel: Skapar en ny databas med namnet 'webbplatsuppsättning'.

SKAPA DATABASE webbplatsuppsättning;
SKAPA BORDSkapar ett nytt bord .

Exempel: Skapar en ny tabell som heter 'användare' i databasen 'webbplatsuppsättning'.

SKAPA TABELL användare (
id int,
förnamn varchar (255),
efternamn varchar (255),
adress varchar (255),
kontaktnummer int
);
STANDARDStäller in ett standardvärde för en kolumn;

Exempel 1 (MySQL): Skapar en ny tabell som heter Produkter som har en namnkolumn med ett standardvärde för 'Platshållarnamn' och en tillgänglig kolumn med ett standardvärde för dagens datum.

SKAPA TABELL-produkter (
id int,
namn varchar (255) FUNKTION "Namn på platshållare",
tillgängligt från datum DEFAULT GETDATE ()
);

Exempel 2 (MySQL): Samma som ovan, men redigering av en befintlig tabell.

ALTER TABLE produkter
ALTER name SET DEFAULT 'Placeholder Name',
ALTER available_from SET DEFAULT GETDATE ();
RADERATa bort data från en tabell.

Exempel: Tar bort en användare med ett användarnummer på 674.

RADERA FRÅN användare VAR user_id = 674;
DESCAnvänds med ORDER BY för att returnera data i fallande ordning.

Exempel: Rädisa, persikor, bananer, äpplen

DROP KOLONNTar bort en kolumn från en tabell.

Exempel: Tar bort kolumnen förnamn från användartabellen.

ALTER TABLE användare
DROP COLUMN förnamn
DROP DATABASERINGTar bort hela databasen.

Exempel: Tar bort en databas med namnet 'webbplatsuppsättning'.

DROP DATABASE webbplatsinställningar;
DROPFUNKTIONTar bort ett standardvärde för en kolumn.

Exempel (MySQL): Tar bort standardvärdet från kolumnen "namn" i tabellen "produkter".

ALTER TABLE produkter
ALTER COLUMN name DROP DEFAULT;
SLÄPP BORDTar bort en tabell från en databas.

Exempel: Tar bort användartabellen.

DROP TABELL användare;
EXISTERARKontrollerar om det finns någon post i underkuran, returnerar sant om en eller flera poster returneras.

Exempel: Listar alla återförsäljare med en procentsats för finansiering mindre än 10.

VÄLJ återförsäljarnamn
FRÅN återförsäljare
VARA EXISTER (VÄLJ deal_name FRA erbjudanden VAR dealerhip_id = deals.dealership_id OCH finans_percentage < 10);
FRÅNAnger vilken tabell du vill välja eller ta bort data från.

Exempel: Väljer data från användartabellen.

SELECT area_manager
FRÅN områdesledare
VAR EXISTER (VÄLJ Produktnamn FRÅN produkter WHERE area_manager_id = erbjudanden.area_manager_id OCH Pris < 20);
IAnvänds tillsammans med en WHERE-klausul som en kortfattning för flera OR-förhållanden.

Så istället för:-

VÄLJ * FRÅN användare
VAR land = 'USA' ELLER land = 'Storbritannien' ELLER land = 'Ryssland' ELLER land = 'Australien';

Du kan använda:-

VÄLJ * FRÅN användare
VAR land i ('USA', 'Storbritannien', 'Ryssland', 'Australien');
SÄTT IN ILägg till nya rader i en tabell.

Exempel: Lägger till ett nytt fordon.

INSERT INTO bilar (märke, modell, körsträcka, år)
VÄRDER ('Audi', 'A3', 30000, 2016);
ÄR INGETTestar för tomma (NULL) värden.

Exempel: Returnerar användare som inte har angett ett kontaktnummer.

VÄLJ * FRÅN användare
VAR kontaktnummer är NULL;
ÄR INTE NULLBaksidan av NULL. Testar för värden som inte är tomma / NULL.
TYCKA OMReturnerar sant om operandvärdet matchar ett mönster.

Exempel: Returnerar sant om användarens förnamn slutar med "son".

VÄLJ * FRÅN användare
VAR förnamn Gillar "% son";
INTEReturnerar sant om en post INTE uppfyller villkoret.

Exempel: Returnerar sant om användarens förnamn inte slutar med "son".

VÄLJ * FRÅN användare
VAR förnamn INTE Gillar '% son';
ELLERAnvänds tillsammans med WHERE för att inkludera data när båda villkoren är sanna.

Exempel: Returnerar användare som bor i antingen Sheffield eller Manchester.

VÄLJ * FRÅN användare
VAR stad = 'Sheffield' ELLER 'Manchester';
SORTERA EFTERAnvänds för att sortera resultatdata i stigande (standard) eller fallande ordning med hjälp av ASC- eller DESC-nyckelord.

Exempel: Returnerar länder i alfabetisk ordning.

VÄLJ * FRÅN länder
BESTÄLLNING MED namn;
ROWNUMReturnerar resultat där radnumret uppfyller det godkända villkoret.

Exempel: Returnerar de 10 bästa länderna från landstabellen.

VÄLJ * FRÅN länder
VAR ROWNUM <= 10;
VÄLJAnvänds för att välja data från en databas, som sedan returneras i en resultatuppsättning.

Exempel 1: Väljer alla kolumner från alla användare.

VÄLJ * FRÅN användare;

Exempel 2: Väljer kolumnerna förnamn och efternamn från alla användare.xx

VÄLJ förnamn, efternamn FRÅN användare;
VÄLJ DISTINKTNamn som VÄLJ, förutom duplikatvärden är uteslutna.

Exempel: Skapar en reservtabell med data från användartabellen.

VÄLJ * I användareBackup2020
FRÅN användare;
VÄLJ INNKopierar data från en tabell och infogar dem i en annan.

Exempel: Returnerar alla länder från användartabellen och tar bort alla duplicerade värden (vilket är mycket troligt)

VÄLJ DISTINCT-land från användare;
VÄLJ TOPTillåter dig att returnera ett bestämt antal poster för att återvända från en tabell.

Exempel: Returnerar de tre bästa bilarna från biltabellen.

VÄLJ TOP 3 * FRÅN bilar;
UPPSÄTTNINGAnvänds tillsammans med UPDATE för att uppdatera befintliga data i en tabell.

Exempel: Uppdaterar värden och kvantitetsvärden för en beställning med ett ID 642 i ordertabellen.

UPDATE-beställningar
SET-värde = 19,49, kvantitet = 2
VAR id = 642;
NÅGRAIdentisk med ALLA.
TOPPAnvänds tillsammans med SELECT för att returnera ett bestämt antal poster från en tabell.

Exempel: Returnerar de 5 bästa användarna från användartabellen.

VÄLJ TOP 5 * FRÅN användare;
TRUNKATBORDI likhet med DROP, men istället för att ta bort tabellen och dess data, raderar detta bara data.

Exempel: Tömmer sessionstabellen, men lämnar själva tabellen intakt.

TRUNCATE TABLE sessioner;
UNIONKombinerar resultaten från två eller flera SELECT-satser och returnerar endast distinkta värden.

Exempel: Returnerar städerna från tabellerna för evenemang och prenumeranter.

VÄLJ stad från händelser
UNION
VÄLJ stad från prenumeranter;
UNION ALLASamma som UNION, men innehåller dubbla värden.
UNIKDenna begränsning säkerställer att alla värden i en kolumn är unika.

Exempel 1 (MySQL): Lägger till en unik begränsning i id-kolumnen när du skapar en ny användartabell.

SKAPA TABELL användare (
ID int INTE NULL,
namn varchar (255) INTE NULL,
Unikt ID)
);

Exempel 2 (MySQL): Ändrar en befintlig kolumn för att lägga till en UNIK begränsning.

ALTER TABLE användare
LÄGG TILL UNIK (id);
UPPDATERINGUppdaterar befintliga data i en tabell.

Exempel: Uppdaterar körsträckan och serviceDue-värdena för ett fordon med en id på 45 i biltabellen.

UPPDATERA bilar
SET körsträcka = 23500, serviceDue = 0
VAR id = 45;
VÄRDENAnvänds tillsammans med INSERT INTO-nyckelordet för att lägga till nya värden i en tabell.

Exempel: Lägger till en ny bil till biltabellen.

INSERT INTO bilar (namn, modell, år)
VÄRDER ('Ford', 'Fiesta', 2010);
VARFiltreringsresultaten innehåller endast data som uppfyller det givna villkoret.

Exempel: Returnerar order med en kvantitet på mer än 1 artikel.

VÄLJ * FRÅN order
VAR kvantitet> 1;

kommentarer

Kommentarer låter dig förklara delar av dina SQL-uttalanden eller kommentera kod och förhindra dess körning.

I SQL finns det två typer av kommentarer, en rad och multiline.

Kommentarer med en rad

Kommentarer med en rad börjar med -. All text efter dessa två tecken till slutet av raden ignoreras.

-- Min Välj fråga
VÄLJ * FRÅN användare;

Multiline Kommentarer

Multiline-kommentarer börjar med / * och slutar med * /. De sträcker sig över flera rader tills de slutande karaktärerna har hittats.

/ *
Det här är min utvalda fråga.
Det tar alla rader med data från användartabellen
* /
VÄLJ * FRÅN användare;

/ *
Det här är en annan utvalda fråga som jag inte vill köra ännu

VÄLJ * FRÅN uppgifter;
* /

MySQL Datatyper

När du skapar en ny tabell eller redigerar en befintlig tabell måste du ange vilken typ av data som varje kolumn accepterar.

I exemplet nedan måste data som skickas till id-kolumnen vara en int, medan kolumnen first_name har en VARCHAR-datatyp med högst 255 tecken.

SKAPA TABELL användare (
id int,
förnamn varchar (255)
);

Strängdatatyper

Strängdatatyper
Data typBeskrivning
CHAR (storlek)Sträng med fast längd som kan innehålla bokstäver, siffror och specialtecken. Storleksparametern ställer in maximal stränglängd, från 0 - 255 med ett standardvärde på 1.
VARCHAR (storlek)Variabel längdsträng som liknar CHAR (), men med ett maximalt stränglängdsområde från 0 till 65535.
BINÄR (storlek)Liknar CHAR () men lagrar binära byte-strängar.
VARBINARY (storlek)Liknar VARCHAR () men för binära byte-strängar.
TINYBLOBInnehåller stora stora objekt (BLOB) med en maximal längd på 255 byte.
TINYTEXTHar en sträng med en maximal längd på 255 tecken. Använd istället VARCHAR () eftersom det hämtas mycket snabbare.
Textstorlek)Har en sträng med en maximal längd på 65535 byte. Återigen, bättre att använda VARCHAR ().
BLOB (storlek)Innehåller stora stora objekt (BLOB) med en maximal längd på 65535 byte.
MEDIUMTEXTHar en sträng med en maximal längd på 16 777 215 tecken.
MEDIUMBLOBInnehåller stora stora objekt (BLOB) med en maximal längd på 16 777 215 byte.
LONGTEXTHar en sträng med en maximal längd på 4 294 967 295 tecken.
LONGBLOBInnehåller stora stora objekt (BLOB) med en maximal längd på 4 294 967 295 byte.
ENUM (a, b, c, etc ...)Ett strängobjekt som bara har ett värde, som väljs från en lista med värden som du definierar, upp till maximalt 65535 värden. Om ett värde läggs till som inte finns i den här listan, ersätts det istället med ett tomt värde. Tänk på att ENUM liknar HTML-radioboxar i detta avseende.

SKAPA TABELL tshirts (färg ENUM ('röd', 'grön', 'blå', 'gul', 'lila'));
SET (a, b, c, etc ...)Ett strängobjekt som kan ha 0 eller fler värden, som väljs från en lista med värden som du definierar, upp till högst 64 värden. Tänk på att SET liknar HTML-kryssrutorna i detta avseende.

Numeriska datatyper

Strängdatatyper
Data typBeskrivning
BIT (storlek)En bitvärdetyp med en standardvärde på 1. Det tillåtna antalet bitar i ett värde ställs in via storleksparametern, som kan hålla värden från 1 till 64.
Tinyint (storlek)Ett mycket litet heltal med ett signerat intervall från -128 till 127 och ett osignerat intervall från 0 till 255. Här anger storleksparametern den maximalt tillåtna visningsbredden, som är 255.
BOOLI huvudsak ett snabbt sätt att ställa in kolumnen till TINYINT med en storlek 1. 0 betraktas som falsk, medan 1 betraktas som sant.
BOOLEANSamma som BOOL.
SMALLINT (storlek)Ett litet heltal med ett signerat intervall från -32768 till 32767 och ett osignerat intervall från 0 till 65535. Här anger storleksparametern den maximalt tillåtna visningsbredden, som är 255.
MEDIUMINT (storlek)Ett medium heltal med ett signerat intervall från -8388608 till 8388607 och ett osignerat intervall från 0 till 16777215. Här anger storleksparametern den maximalt tillåtna visningsbredden, som är 255.
INT (storlek)Ett medium heltal med ett signerat intervall -2147483648 till 2147483647 och ett osignerat intervall från 0 till 4294967295. Här anger storleksparametern den maximala tillåtna visningsbredden, som är 255.
Heltal (storlek)Samma som INT.
Bigint (storlek)Ett medium heltal med ett signerat intervall från -9223372036854775808 till 9223372036854775807 och ett osignerat intervall från 0 till 18446744073709551615. Här anger storleksparametern den maximalt tillåtna visningsbredden, som är 255.
FLOAT (p)Ett värde för flytande punkt. Om precisionen (p) -parametern är mellan 0 och 24 är datatypen inställd på FLOAT (), medan om den är från 25 till 53, är datatypen inställd på DUBBEL (). Detta beteende är för att effektivisera lagring av värden.
DUBBEL (storlek, d)Ett värde för flytande punkt där de totala siffrorna ställs in med storleksparametern och antalet siffror efter decimalpunkten ställs in av d-parametern.
DECIMAL (storlek, d)Ett exakt fasta punktnummer där det totala antalet siffror ställs in av storleksparametrarna och det totala antalet siffror efter decimalpunkten ställs in av d-parametern.

För storlek är det maximala antalet 65 och standarden är 10, medan för d, det maximala antalet är 30 och standard är 10.

DEC (storlek, d)Samma som DECIMAL.

Datum / Tid Datatyper

Datum / Tid Datatyper
Data typBeskrivning
DATUMEtt enkelt datum i YYYY-MM – DD-format, med ett stött intervall från '1000-01-01' till '9999-12-31'.
DATETIME (fsp)En datumtid i YYYY-MM-DD hh: mm: ss-format, med ett stött intervall från '1000-01-01 00:00:00' till '9999-12-31 23:59:59'.

Genom att lägga till DEFAULT och ON UPDATE i kolumndefinitionen ställs det automatiskt till aktuellt datum / tid.

TIMESTAMP (fsp)En Unix-tidsstämpel, som är ett värde relativt antalet sekunder sedan Unix-epoken (‘1970-01-01 00:00:00’ UTC). Detta har ett stöd från intervallet ‘1970-01-01 00:00:01’ UTC till ‘2038-01-09 03:14:07’ UTC.

Genom att lägga till DEFAULT CURRENT_TIMESTAMP och ON UPDATE CURRENT TIMESTAMP i kolumndefinitionen ställs den automatiskt till aktuellt datum / tid.

TID (fsp)En tid i hh: mm: ss-format, med ett stött intervall från ‘-838: 59: 59’ till ‘838: 59: 59’.
ÅREtt år med ett stöd från 1901 till 2155.

operatörer

Aritmetiska operatörer

Aritmetiska operatörer
OperatörBeskrivning
+Lägg till
-Subtrahera
*Multiplicera
/Dela upp
%modulo

Bitvis operatör

Bitvisa operatörer
OperatörBeskrivning
&Bitvis OCH
|Bitvis ELLER
^Bitvis exklusiv ELLER

Jämförelseoperatörer

Jämförelseoperatörer
OperatörBeskrivning
=Lika med
>Större än
<Mindre än
> =Större än eller lika med
<=Mindre än eller lika med
<>Inte lika med

Compound Operators

Compound Operators
OperatörBeskrivning
+=Lägg till lika
-=Subtrahera är lika
* =Multiplicera lika
/ =Dela lika
% =Modulo är lika
& =Bitvis OCH är lika
^ - =Bitvis exklusiv är lika
| * =Bitvis ELLER är lika

funktioner

Strängfunktioner

Strängfunktioner
namnBeskrivning
ASCIIReturnerar motsvarande ASCII-värde för ett specifikt tecken.
CHAR_LENGTHReturnerar teckenlängden på en sträng.
CHARACTER_LENGTHSamma som CHAR_LENGTH.
CONCATLägger till uttryck tillsammans, med minst 2.
CONCAT_WSLägger till uttryck tillsammans, men med en separator mellan varje värde.
FÄLTReturnerar ett indexvärde relativt positionens värde i en lista med värden.
HITTA I SETReturnerar positionen för en sträng i en lista med strängar.
FORMATERANär passerat ett nummer returnerar det numret formaterat för att inkludera komma (t.ex. 3.400.000).
FÖRA INTillåter dig att infoga en sträng i en annan vid en viss punkt, för ett visst antal tecken.
INSTRReturnerar positionen för första gången en sträng visas i en annan.
lcaseKonvertera en sträng till små bokstäver.
VÄNSTERFrån vänster, extrahera det givna antalet tecken från en sträng och returnera dem som ett annat.
LÄNGDReturnerar längden på en sträng, men i byte.
LOKALISERAReturnerar den första förekomsten av en sträng inom en annan,
LÄGRESamma som LCASE.
LpAdVänster pads en sträng med en annan, till en viss längd.
LTRIMTa bort alla ledande mellanslag från den givna strängen.
MITTENExtraherar en sträng från en annan, med början från vilken position som helst.
PLACERAReturnerar positionen för första gången en substring visas inom en annan.
UPPREPAGör att du kan upprepa en sträng
BYTA UTTillåter dig att ersätta alla förekomster av en substring i en sträng med en ny substring.
OMVÄNDVänder strängen.
HÖGERFrån höger, extrahera det givna antalet tecken från en sträng och returnera dem som ett annat.
RPADHöger pads en sträng med en annan, till en viss längd.
RTRIMTar bort efterföljande utrymmen från den givna strängen.
PLATSReturnerar en sträng full av mellanslag motsvarande det belopp du passerar den.
strcmpJämför två strängar för skillnader
SUBSTRExtraherar en substring från en annan, med början från valfri position.
SUBSTRINGSamma som SUBSTR
SUBSTRING_INDEXReturnerar en substring från en sträng innan den passerade substringen hittas antalet gånger lika med det passerade numret.
TRIMMATar bort bakre och ledande utrymmen från den givna strängen. Samma som om du skulle köra LTRIM och RTRIM tillsammans.
ucaseKonvertera en sträng till versaler.
ÖVRESamma som UCASE.

Numeriska funktioner

Numeriska funktioner
namnBeskrivning
magmusklerReturnerar det absoluta värdet för det givna numret.
ACOSReturnerar ljusbågen för det givna numret.
SOM IReturnerar bågsinusen för det givna numret.
EN BRÄNNAReturnerar bågens tangens för ett eller två givna siffror.
ATAN2Returnera bågens tangens för 2 givna siffror.
AVGReturnerar medelvärdet för det givna uttrycket.
FÖRSE MED INNERTAKReturnerar det närmaste heltalet (heltal) uppåt från ett givet decimaltalsnummer.
TAKSamma som CEIL.
COSReturnerar kosinus för ett givet nummer.
SPJÄLSÄNGReturnerar cotangenten för ett givet nummer.
RÄKNAReturnerar mängden poster som returneras av en SELECT-fråga.
GRADERKonverterar ett radianvärde till grader.
DIVTillåter dig att dela heltal.
EXPÅtergår e till kraften i det givna numret.
GOLVReturnerar det närmaste heltalet (heltal) nedåt från ett givet decimaltalsnummer.
STÖRSTAReturnerar det högsta värdet i en lista med argument.
MINSTReturnerar det minsta värdet i en lista med argument.
LNReturnerar den naturliga logaritmen för det givna numret
LOGGAReturnerar den naturliga logaritmen för det givna numret eller logaritmen för det givna numret till den givna basen
LOG10Gör samma sak som LOG, men bas 10.
log2Gör samma sak som LOG, men till bas 2.
MAXReturnerar det högsta värdet från en uppsättning värden.
MINReturnerar det lägsta värdet från en uppsättning värden.
MODReturnerar återstoden av det givna numret dividerat med det andra givna numret.
PIReturnerar PI.
POWReturnerar värdet på det givna talet som höjs till kraften hos det andra givna numret.
KRAFTSamma som POW.
RADIANSKonverterar ett gradersvärde till radianer.
RANDReturnerar ett slumpmässigt nummer.
RUNDARunda det givna numret till det angivna antalet decimaler.
SKYLTReturnerar tecknet för det givna numret.
SYNDReturnerar sinusen för det givna numret.
SQRTReturnerar kvadratroten för det givna numret.
SUMMAReturnerar värdet på den angivna uppsättningen värden kombinerat.
SOLBRÄNNAReturnerar tangenten för det givna numret.
STYMPAReturnerar ett nummer som trunkeras till det givna antalet decimaler.

Datumfunktioner

Datumfunktioner
namnBeskrivning
ADDDATELägg till ett datumintervall (t.ex.: 10 DAG) till ett datum (t.ex.: 20/01/20) och returnera resultatet (t.ex.: 20/01/30).
ADDTIMELägg till ett tidsintervall (t.ex.: 02:00) till en tid eller datetime (05:00) och returnera resultatet (07:00).
CURDATESkaffa det aktuella datumet.
DAGENS DATUMSamma som CURDATE.
AKTUELL TIDFå den aktuella tiden.
CURRENT_TIMESTAMPFå aktuellt datum och tid.
CURTIMESamma som CURRENT_TIME.
DATUMExtraherar datumet från ett datetime-uttryck.
DateDiffReturnerar antalet dagar mellan de två givna datumen.
DATE_ADDSamma som ADDDATE.
DATUMFORMATFormaterar datumet till det givna mönstret.
DATE_SUBSubtrahera ett datumintervall (t.ex.: 10 DAG) till ett datum (t.ex.: 20/01/20) och returnera resultatet (t.ex.: 20/01/10).
DAGReturnerar dagen för det givna datumet.
DAYNAMEReturnerar namnet på veckodag för det givna datumet.
DAG I VECKANReturnerar indexet för veckodagen för det givna datumet.
DAYOFYEARReturnerar dagen på året för det givna datumet.
EXTRAHERAExtrahera från det datum den givna delen (t.ex. MÅNAD för 20/01/20 = 01).
FRÅN DAGARReturnera datumet från det angivna numeriska datumvärdet.
TIMMEÅterställ timmen från det angivna datumet.
SISTA DAGENFå den sista dagen i månaden för det givna datumet.
LOKAL TIDHämtar det aktuella lokala datumet och tiden.
LOCALTIMESTAMPSamma som LOCALTIME.
MAKEDATESkapar ett datum och returnerar det, baserat på det givna året och antalet dagarvärden.
GÖR TIDSkapar en tid och returnerar den, baserad på de angivna värdena för timme, minut och andra.
mikroReturnerar mikrosekundet för en viss tid eller en viss tid.
MINUTReturnerar minuten för den angivna tiden eller datatiden.
MÅNADReturnerar månaden för det givna datumet.
MONTHNAMEReturnerar namnet på månaden för det givna datumet.
NUSamma som LOCALTIME.
PERIOD_ADDLägger till det angivna antalet månader till den givna perioden.
PERIOD_DIFFReturnerar skillnaden mellan 2 givna perioder.
FJÄRDEDELReturnerar årskvartalet för det givna datumet.
ANDRAReturnerar den andra av en viss tid eller en viss tid.
SEC_TO_TIMEReturnerar en tid baserad på de givna sekunderna.
STR_TO_DATESkapar ett datum och returnerar det baserat på den givna strängen och formatet.
SUBDATESamma som DATE_SUB.
SUBTIMESubtraherar ett tidsintervall (t.ex.: 02:00) till en tid eller en tid (05:00) och returnerar resultatet (03:00).
SYSDATESamma som LOCALTIME.
TIDReturnerar tiden från en viss tid eller en viss tid.
TIDSFORMATReturnerar den angivna tiden i det givna formatet.
TIME_TO_SECKonverterar och returnerar en tid till sekunder.
TIMEDIFFReturnerar skillnaden mellan två givna tids- / datetime-uttryck.
TIDSSTÄMPELReturnerar datatvärdet för det givna datumet eller datetime.
TO_DAYSReturnerar det totala antalet dagar som har gått från '00 -00-0000 'till det angivna datumet.
VECKAReturnerar veckonummeret för det givna datumet.
VECKODAGReturnerar veckodagsnumret för det givna datumet.
WEEKOFYEARReturnerar veckonummeret för det givna datumet.
ÅRReturnerar året från det angivna datumet.
YEARWEEKReturnerar året och veckonummeret för det givna datumet.

Övriga funktioner

Övriga funktioner
namnBeskrivning
BINReturnerar det givna numret i binär.
BINÄRReturnerar det givna värdet som en binär sträng.
KASTAKonvertera en typ till en annan.
VÄXA SAMMANI en lista med värden returnerar du det första värdet som inte är noll.
CONNECTION_IDFör den aktuella anslutningen, returnera det unika anslutnings-ID.
CONVKonvertera det givna numret från ett numeriskt bassystem till ett annat.
KONVERTERAKonvertera det givna värdet till den givna datatypen eller teckenuppsättningen.
NUVARANDE ANVÄNDARENReturnera användaren och värdnamnet som användes för att verifiera med servern.
DATABASFå namnet på den aktuella databasen.
GRUPP AVAnvänds tillsammans med aggregerade funktioner (COUNT, MAX, MIN, SUM, AVG) för att gruppera resultaten.

Exempel: Listar antalet användare med aktiva beställningar.

SELECT COUNT (user_id), active_orders
FRÅN användare
GROUP BY active_orders;
HARDet används på plats där VAR med samlade funktioner.

Exempel: Listar antalet användare med aktiva beställningar, men inkluderar endast användare med mer än 3 aktiva beställningar.

SELECT COUNT (user_id), active_orders
FRÅN användare
GROUP BY active_orders
HAR COUNT (user_id)> 3;
OMOm villkoret är sant returnerar ett värde, annars returnerar du ett annat värde.
IFNULLOm det givna uttrycket är lika med noll, returnerar du det givna värdet.
ÄR INGETOm uttrycket är noll, returnera 1, annars returnera 0.
LAST_INSERT_IDFör den sista raden som läggs till eller uppdaterades i en tabell, returnera automatisk inkrement-ID.
NULLIFJämför de 2 givna uttrycken. Om de är lika returneras NULL, annars returneras det första uttrycket.
SESSION_USERReturnera nuvarande användare och värdnamn.
SYSTEM_USERSamma som SESSION_USER.
ANVÄNDARESamma som SESSION_USER.
VERSIONReturnerar den aktuella versionen av MySQL som driver databasen.

Wildcard-karaktärer

I SQL är Wildcards specialtecken som används med LIKE och NOT LIKE nyckelord som gör att vi kan söka data med sofistikerade mönster mycket mer effektivt

Jokertecken
namnBeskrivning
%Lika med noll eller fler tecken.

Exempel 1: Hitta alla användare med efternamn som slutar på "son".

VÄLJ * FRÅN användare
VAR efternamnet Gillar '% son';

Exempel 2: Hitta alla användare som bor i städer som innehåller mönstret 'che'

VÄLJ * FRÅN användare
VAR stad Gillar "% che%";
_Liknar alla karaktärer.

Exempel: Hitta alla användare som bor i städer som börjar med tre tecken, följt av 'chester'.

VÄLJ * FRÅN användare
VAR stad Gillar "___chester";
[Charlist]Stämmer med varje enskilt tecken i listan.

Exempel 1: Hitta alla användare med förnamn som börjar med J, H eller M.

VÄLJ * FRÅN användare
VAR förnamn Gillar '[jhm]%';

Exempel 2: Hitta alla användare med förnamn som börjar bokstäver mellan A - L.

VÄLJ * FRÅN användare
VAR förnamn Gillar '[a-l]%';

Exempel 3: Hitta alla användare med förnamn som inte slutar med bokstäver mellan n - s.

VÄLJ * FRÅN användare
VAR förnamn Gillar '% [! N-s]';

Keys

I relationsdatabaser finns det ett koncept med primära och främmande nycklar. I SQL-tabeller ingår dessa som begränsningar, där en tabell kan ha en primär nyckel, en främmande nyckel eller båda.

Primärnyckel

En primär nyckel gör att varje post i en tabell kan identifieras unikt. Det kan bara finnas en primär nyckel per tabell, och du kan tilldela denna begränsning till varje enskild eller kombination av kolumner. Detta betyder dock att varje värde i denna kolumn (er) måste vara unikt.

I en tabell är huvudnyckeln vanligtvis en ID-kolumn och är vanligtvis parad med AUTO_INCREMENT-nyckelordet. Detta innebär att värdet ökar automatiskt när nya poster skapas.

Exempel 1 (MySQL)

Skapa en ny tabell och ställ in primärnyckeln till ID-kolumnen.

SKAPA TABELL användare (
ID int INTE NULL AUTO_INCREMENT,
förnamn varchar (255),
efternamn varchar (255) INTE NULL,
adress varchar (255),
e-post varchar (255),
PRIMÄRKNAPP (id)
);

Exempel 2 (MySQL)

Ändra en befintlig tabell och ställ in primärnyckeln till kolumnen förnamn.

ALTER TABLE användare
LÄGG TILL PRIMÄRKNAPP (förnamn);

Främmande nyckel

En utländsk nyckel kan tillämpas på en eller flera kolumner och används för att länka två tabeller i en relationsdatabas.

Som framgår av diagrammet nedan kallas tabellen som innehåller den främmande nyckeln barnnyckeln, medan tabellen som innehåller den referensnyckeln, eller kandidatnyckeln, kallas överordnade tabellen.

MySQL-nycklar

Detta innebär i huvudsak att kolumndata delas mellan två tabeller, eftersom en utländsk nyckel också förhindrar att ogiltiga data läggs in som inte också finns i överordnade tabeller.

Exempel 1 (MySQL)

Skapa en ny tabell och förvandla alla kolumner som refererar till ID i andra tabeller till utländska nycklar.

SKAPA TABELL-beställningar (
ID int INTE NULL,
user_id int,
product_id int,
PRIMÄRKNAPP (id),
UTMÄRKNAD (user_id) REFERENSER användare (id),
UTLÄNGANDE nyckel (product_id) REFERENSER produkter (id)
);

Exempel 2 (MySQL)

Ändra en befintlig tabell och skapa en utländsk nyckel.

ALTER TABELL beställningar
LÄGG TILL UTELANDSKNAPP (user_id) REFERENSER användare (id);

index

Index är attribut som kan tilldelas kolumner som ofta söks mot för att göra datainsamling till en snabbare och effektivare process.

Det betyder dock inte att varje kolumn bör göras till ett index, eftersom det tar längre tid för en kolumn med ett index att uppdateras än en kolumn utan. Detta beror på att när indexerade kolumner uppdateras måste själva indexet också uppdateras.

index
namnBeskrivning
SKAPA INDEXSkapar ett index med namnet 'idx_test' i kolumnen förnamn och efternamn i användartabellen. I det här fallet är dubbla värden tillåtna.
SKAPA INDEX idx_test
PÅ användare (förnamn, efternamn);
SKAPA UNIK INDEXSamma som ovan, men inga duplikatvärden.

SKAPA UNIK INDEX idx_test
PÅ användare (förnamn, efternamn);
DROP INDEXTar bort ett index.

ALTER TABLE användare
DROP INDEX idx_test;

Fogar

I SQL används en JOIN-klausul för att returnera en resultatuppsättning som kombinerar data från flera tabeller, baserat på en gemensam kolumn som finns i båda

Det finns ett antal olika sammanfogningar som du kan använda:-

  • Inre medlem (standard): Returnerar alla poster som har matchande värden i båda tabellerna.
  • Left Join: Returnerar alla poster från den första tabellen, tillsammans med matchande poster från den andra tabellen.
  • Right Join: Returnerar alla poster från den andra tabellen, tillsammans med matchande poster från den första.
  • Fullständig medlem: Returnerar alla poster från båda tabellerna när det finns en matchning.

Ett vanligt sätt att visualisera hur man arbetar är så här:

MySQL går med

I följande exempel kommer en inre koppling att användas för att skapa en ny enhetlig vy som kombinerar ordertabellen och sedan 3 olika tabeller

Vi kommer att ersätta user_id och product_id med kolumnen förnamn och efternamn för den användare som har beställt, tillsammans med namnet på det objekt som köpts.

MySQL Exempel Tabell

VÄLJ order.id, users.first_name, users.name, products.name som 'produktnamn'
FRÅN order
INNER JOIN-användare på orders.user_id = users.id
INNER JOIN-produkter på orders.product_id = products.id;

Skulle returnera en resultatsats som ser ut:

MySQL Exempel Tabell

Se

En vy är i huvudsak en SQL-resultatuppsättning som lagras i databasen under en etikett, så att du kan återgå till den senare utan att behöva köra om frågan igen. Dessa är särskilt användbara när du har en kostsam SQL-fråga som kan behövas ett antal gånger, så istället för att köra den om och om igen för att generera samma resultatuppsättning, kan du bara göra det en gång och spara det som en vy.

Skapa vyer

För att skapa en vy kan du göra det så här:

SKAPA VIEW prioritetsanvändare AS
VÄLJ * FRÅN användare
VAR land = 'Storbritannien';

I framtiden, om du behöver komma åt den lagrade resultatsatsen, kan du göra det så här:

VÄLJ * FRÅN [prioritetsanvändare];

Byt ut vyer

Med kommandot CREATE OR REPLACE kan en vy uppdateras.

SKAPA ELLER Byt ut VIEW [prioritetsanvändare] AS
VÄLJ * FRÅN användare
VAR land = 'Storbritannien' ELLER land = 'USA';

Ta bort vyer

För att radera en vy använder du bara kommandot DROP VIEW.

DROP VIEW prioritetsanvändare;

Slutsats

Majoriteten av webbplatserna på dagens webb använder relationella databaser på något sätt. Detta gör SQL till ett värdefullt språk att veta, eftersom det låter dig skapa mer komplexa, funktionella webbplatser och system.

Se till att bokmärka den här sidan, så i framtiden, om du arbetar med SQL och inte riktigt kommer ihåg en specifik operatör, hur du skriver en viss fråga, eller bara är förvirrad över hur du går med i arbetet, kommer du att ha ett fuskark till hands som är redo, villigt och kan hjälpa.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map