2.1 Introduktion til SQL
Hvis du har en database (DB), og i den - en tabel med nogle data, så er den mest almindelige opgave at finde bestemte data i denne tabel. Det er, hvad SQL blev opfundet til for 40 år siden.
SQL står for Structured Query Language .
Den enkleste SQL-forespørgsel ser sådan ud:
SELECT колонка1, колонка2, … колонкаN FROM table
Lad os sige, at du har en medarbejdertabel med en liste over din startups medarbejdere:
id | navn | beskæftigelse | løn | alder | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmer | 100.000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmer | 80.000 | 23 | 2013-08-12 |
3 | Ivanov Sergey | Tester | 40.000 | tredive | 2014-01-01 |
4 | Rabinovich Moisha | Direktør | 200.000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Kontorchef | 40.000 | 25 | 2015-10-10 |
6 | Vaska | kat | 1.000 | 3 | 2018-01-01 |
Du vil skrive en forespørgsel, der employee names
også vil vise dem salaries
, så skal du skrive en forespørgsel:
SELECT name, salary FROM employee
Du får forespørgselsresultatet:
navn | løn |
---|---|
Ivanov Ivan | 100.000 |
Petrov Petr | 80.000 |
Ivanov Sergey | 40.000 |
Rabinovich Moisha | 200.000 |
Kirienko Anastasia | 40.000 |
Vaska | 1.000 |
Hvis du vil vise alle kolonnerne i din tabel , kan du i stedet for at angive navnene på alle kolonnerne blot skrive en stjerne. Eksempel:
SELECT * FROM employee
Du får forespørgselsresultatet:
id | navn | beskæftigelse | løn | alder | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmer | 100.000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmer | 80.000 | 23 | 2013-08-12 |
3 | Ivanov Sergey | Tester | 40.000 | tredive | 2014-01-01 |
4 | Rabinovich Moisha | Direktør | 200.000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Kontorchef | 40.000 | 25 | 2015-10-10 |
6 | Vaska | kat | 1.000 | 3 | 2018-01-01 |
2.2 Avanceret visning af SQL-forespørgsel
SQL-sproget er designet så brugervenligt som muligt.
For det første er tilfældet med anmodningsteksten ligegyldigt . Du kan skrive SELECT, Select eller select, og alt vil virke. For det andet tages der ikke højde for linjeskift på nogen måde . DBMS vil stadig gøre forespørgslen til en lang streng, så du kan skrive den, som du vil.
Som du sikkert allerede har gættet, er nøgleordene SELECT og FROM ikke begrænset. Ellers ville der ikke være så meget snak omkring SQL. Den udvidede visning af SQL-forespørgslen ser sådan ud:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting
Ved hjælp af et nøgleord WHERE
kan du indstille en betingelse / filter for de valgte rækker.
Eksempel 1 . Lad os skrive en forespørgsel, der vil udvælge medarbejdere med professionen "Programmer":
SELECT * FROM employee WHERE occupation = 'Programmer'
Og vi får følgende forespørgselsresultat:
id | navn | beskæftigelse | løn | alder | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmer | 100.000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmer | 80.000 | 23 | 2013-08-12 |
Som du kan se, vises der som følge af forespørgselsudførelsen kun rækker, hvor medarbejderens fag hedder "Programmer".
Nøgleordene GROUP BY
, ORDER BY
og HAVING
vi vil dække i de næste foredrag. Og i dette vil vi analysere et par flere eksempler med ordet WHERE.
Eksempel 2 . Lad os nu skrive en forespørgsel, der viser os alle medarbejdere med en løn på mere end 100.000. Sådan kommer det til at se ud:
SELECT * FROM employee WHERE salary > 100000
Vi får følgende forespørgselsresultat:
id | navn | beskæftigelse | løn | alder | join_date |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Direktør | 200.000 | 35 | 2015-05-12 |
Eksempel 3 . Lad os nu prøve noget mere vanskeligt. Hvordan viser man alle medarbejdere, der blev ansat i 2015? Og sådan her:
SELECT * FROM employee WHERE YEAR(join_date) = 2015
Vi får følgende forespørgselsresultat:
id | navn | beskæftigelse | løn | alder | join_date |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Direktør | 200.000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Kontorchef | 40.000 | 25 | 2015-10-10 |
I denne forespørgsel bruger vi en speciel funktion YEAR()
, der giver os mulighed for at få året fra en dato og derefter sammenligne året for datoen med tallet 2015.
2.3 Kommentarer i SQL-forespørgsler
Og endnu et vigtigt punkt er kommentarer i SQL-forespørgsler. Kommentarer er en meget nyttig ting. For det første kan du skrive forklaringer og/eller dine ideer i dem. For det andet kan du ved hjælp af kommentarer deaktivere ødelagt kode. Eller kommenter den gamle version af koden.
SQL har ligesom Java enkeltlinje- og flerlinjekommentarer. Desuden ser en kommentar med flere linjer ud ligesom i Java. Dens udseende:
/*
comment text
comment text
comment text
*/
Det kan selvfølgelig også bruges i én linje. Eksempel:
/*comment text*/
Der er også en type kommentar "fra begyndelsen til slutningen af linjen", svarende til Java "//". Kun i SQL skal du skrive to minustegn og et mellemrum . Generelt syn på en sådan kommentar:
-- comment text
Eksempel:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
I eksemplet ovenfor kommenterede vi forespørgselsbetingelsen, så MySQL vil kun udføre forespørgslen:
SELECT * FROM employee
2.4 SQL-udtale
Hvis du kommunikerer med udenlandske kunder eller består et onlineinterview for en amerikansk virksomhed, kan du blive spurgt om din oplevelse med efterfølgersproget . Du vil ærligt sige, at du ikke arbejdede sammen med ham, og straks fløjtede fra interviewet.
Og sagen er, at SQL-sproget oprindeligt hed SEQUEL, som udtales som en efterfølger (ˈsēkwəl), så meget ofte vil du i USA og andre engelsksprogede kilder ikke høre "escuel", men "sequel". SQL skrives, og efterfølgeren læses. Her er sådan et historisk paradoks.
GO TO FULL VERSION