2.1 Introduksjon til SQL
Hvis du har en database (DB), og i den - en tabell med noen data, så er den vanligste oppgaven å finne visse data i denne tabellen. Det var det SQL ble oppfunnet for for 40 år siden.
SQL står for Structured Query Language .
Den enkleste SQL-spørringen ser slik ut:
SELECT column1, column2, … columnN FROM table
La oss si at du har en ansatttabell med en liste over oppstartens ansatte:
id | Navn | okkupasjon | lønn | alder | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmerer | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmerer | 80 000 | 23 | 2013-08-12 |
3 | Ivanov Sergey | Tester | 40 000 | tretti | 2014-01-01 |
4 | Rabinovich Moisha | Regissør | 200 000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Kontorsjef | 40 000 | 25 | 2015-10-10 |
6 | Vaska | katt | 1000 | 3 | 2018-01-01 |
Du vil skrive en spørring som employee names
også vil vise dem salaries
, så må du skrive en spørring:
SELECT name, salary FROM employee
Du vil få søkeresultatet:
Navn | lønn |
---|---|
Ivanov Ivan | 100 000 |
Petrov Petr | 80 000 |
Ivanov Sergey | 40 000 |
Rabinovich Moisha | 200 000 |
Kirienko Anastasia | 40 000 |
Vaska | 1000 |
Hvis du vil vise alle kolonnene i tabellen din , kan du bare skrive en stjerne i stedet for å liste opp navnene på alle kolonnene. Eksempel:
SELECT * FROM employee
Du vil få søkeresultatet:
id | Navn | okkupasjon | lønn | alder | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmerer | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmerer | 80 000 | 23 | 2013-08-12 |
3 | Ivanov Sergey | Tester | 40 000 | tretti | 2014-01-01 |
4 | Rabinovich Moisha | Regissør | 200 000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Kontorsjef | 40 000 | 25 | 2015-10-10 |
6 | Vaska | katt | 1000 | 3 | 2018-01-01 |
2.2 Avansert visning av SQL-spørring
SQL-språket ble designet så brukervennlig som mulig.
For det første spiller forespørselsteksten ingen rolle . Du kan skrive SELECT, Select eller select og alt vil fungere. For det andre blir det ikke tatt hensyn til linjeskift på noen måte . DBMS vil fortsatt gjøre spørringen om til en lang streng, slik at du kan skrive den slik du vil.
Som du sikkert allerede har gjettet, er ikke nøkkelordene SELECT og FROM begrenset. Ellers ville det ikke vært så mye snakk rundt SQL. Den utvidede visningen av SQL-spørringen ser slik ut:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting
Ved hjelp av et nøkkelord WHERE
kan du sette en betingelse / filter for de valgte radene.
Eksempel 1 . La oss skrive en spørring som vil velge ansatte med profesjonen "Programmer":
SELECT * FROM employee WHERE occupation = 'Programmer'
Og vi får følgende spørreresultat:
id | Navn | okkupasjon | lønn | alder | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmerer | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmerer | 80 000 | 23 | 2013-08-12 |
Som du kan se, vises kun rader der den ansattes yrke heter "Programmer", som et resultat av utføringen av spørringen.
Nøkkelordene GROUP BY
, ORDER BY
og HAVING
vi vil dekke i de neste forelesningene. Og i dette vil vi analysere et par flere eksempler med ordet WHERE.
Eksempel 2 . La oss nå skrive en spørring som viser oss alle ansatte med en lønn over 100K. Slik vil det se ut:
SELECT * FROM employee WHERE salary > 100000
Vi får følgende spørreresultat:
id | Navn | okkupasjon | lønn | alder | join_date |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Regissør | 200 000 | 35 | 2015-05-12 |
Eksempel 3 . La oss nå prøve noe vanskeligere. Hvordan vise alle ansatte som ble ansatt i 2015? Og slik:
SELECT * FROM employee WHERE YEAR(join_date) = 2015
Vi får følgende spørreresultat:
id | Navn | okkupasjon | lønn | alder | join_date |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Regissør | 200 000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Kontorsjef | 40 000 | 25 | 2015-10-10 |
I denne spørringen bruker vi en spesiell funksjon YEAR()
som lar oss hente året fra en dato og deretter sammenligne året for datoen med tallet 2015.
2.3 Kommentarer i SQL-spørringer
Og et viktig poeng er kommentarer i SQL-spørringer. Kommentarer er en veldig nyttig ting. For det første kan du skrive forklaringer og/eller ideene dine i dem. For det andre, ved hjelp av kommentarer, kan du deaktivere ødelagt kode. Eller kommenter ut den gamle versjonen av koden.
SQL, som Java, har enkeltlinje- og flerlinjekommentarer. Dessuten ser en flerlinjekommentar ut akkurat som i Java. Dens utseende:
/*
comment text
comment text
comment text
*/
Selvfølgelig kan den også brukes i en linje. Eksempel:
/*comment text*/
Det er også en type kommentar "fra begynnelsen til slutten av linjen", som ligner på Java "//". Bare i SQL trenger du å skrive to minustegn og et mellomrom . Generelt syn på en slik kommentar:
-- comment text
Eksempel:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
I eksemplet ovenfor kommenterte vi spørringsbetingelsen, så MySQL vil bare utføre spørringen:
SELECT * FROM employee
2.4 SQL-uttale
Hvis du kommuniserer med utenlandske kunder eller passerer et nettintervju for et amerikansk selskap, kan du bli spurt om din erfaring med oppfølgerspråket . Du vil ærlig si at du ikke jobbet med ham, og du lurte umiddelbart på intervjuet.
Og saken er at SQL-språket opprinnelig ble kalt SEQUEL, som uttales som en oppfølger (ˈsēkwəl), så veldig ofte vil du i USA og andre engelskspråklige kilder ikke høre "escuel", men "sequel". SQL skrives, og oppfølgeren leses. Her er et slikt historisk paradoks.