2.1 Introduktion till SQL
Om du har en databas (DB), och i den - en tabell med lite data, är den vanligaste uppgiften att hitta vissa data i den här tabellen. Det var vad SQL uppfanns för 40 år sedan.
SQL står för Structured Query Language .
Den enklaste SQL-frågan ser ut så här:
SELECT column1, column2, … columnN FROM table
Låt oss säga att du har en personaltabell med en lista över din startups anställda:
id | namn | ockupation | lön | ålder | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmerare | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmerare | 80 000 | 23 | 2013-08-12 |
3 | Ivanov Sergey | Testare | 40 000 | trettio | 2014-01-01 |
4 | Rabinovich Moisha | Direktör | 200 000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Kontors chef | 40 000 | 25 | 2015-10-10 |
6 | Vaska | katt | 1 000 | 3 | 2018-01-01 |
Du vill skriva en fråga som employee names
också visar dem salaries
, då måste du skriva en fråga:
SELECT name, salary FROM employee
Du får frågeresultatet:
namn | 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 |
Om du vill visa alla kolumner i din tabell kan du istället för att lista namnen på alla kolumner helt enkelt skriva en asterisk. Exempel:
SELECT * FROM employee
Du får frågeresultatet:
id | namn | ockupation | lön | ålder | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmerare | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmerare | 80 000 | 23 | 2013-08-12 |
3 | Ivanov Sergey | Testare | 40 000 | trettio | 2014-01-01 |
4 | Rabinovich Moisha | Direktör | 200 000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Kontors chef | 40 000 | 25 | 2015-10-10 |
6 | Vaska | katt | 1 000 | 3 | 2018-01-01 |
2.2 Avancerad vy av SQL-fråga
SQL-språket utformades så användarvänligt som möjligt.
För det första spelar fallet med begäranstexten ingen roll . Du kan skriva SELECT, Select eller select och allt kommer att fungera. För det andra, radbrytningar beaktas inte på något sätt . DBMS kommer fortfarande att förvandla frågan till en lång sträng, så du kan skriva den hur du vill.
Som du säkert redan gissat är nyckelorden SELECT och FROM inte begränsade. Annars skulle det inte bli så mycket snack kring SQL. Den utökade vyn av SQL-frågan ser ut så här:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting
Med hjälp av ett nyckelord WHERE
kan du ställa in ett villkor/filter för de valda raderna.
Exempel 1 . Låt oss skriva en fråga som kommer att välja anställda med yrket "Programmerare":
SELECT * FROM employee WHERE occupation = 'Programmer'
Och vi får följande frågeresultat:
id | namn | ockupation | lön | ålder | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmerare | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmerare | 80 000 | 23 | 2013-08-12 |
Som du kan se visas endast rader där den anställdes yrke kallas "Programmerare", som ett resultat av exekveringen av frågan.
Nyckelorden GROUP BY
, ORDER BY
och HAVING
vi kommer att ta upp i nästa föreläsningar. Och i detta kommer vi att analysera ytterligare ett par exempel med ordet WHERE.
Exempel 2 . Låt oss nu skriva en fråga som visar oss alla anställda med en lön som är högre än 100 000. Så här kommer det att se ut:
SELECT * FROM employee WHERE salary > 100000
Vi får följande frågeresultat:
id | namn | ockupation | lön | ålder | join_date |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Direktör | 200 000 | 35 | 2015-05-12 |
Exempel 3 . Låt oss nu försöka något svårare. Hur visar man alla anställda som anställdes 2015? Och så här:
SELECT * FROM employee WHERE YEAR(join_date) = 2015
Vi får följande frågeresultat:
id | namn | ockupation | lön | ålder | join_date |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Direktör | 200 000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Kontors chef | 40 000 | 25 | 2015-10-10 |
I den här frågan använder vi en speciell funktion YEAR()
som gör att vi kan få årtalet från ett datum och sedan jämföra årtalet för datumet med talet 2015.
2.3 Kommentarer i SQL-frågor
Och ytterligare en viktig punkt är kommentarer i SQL-frågor. Kommentarer är en mycket användbar sak. För det första kan du skriva förklaringar och/eller dina idéer i dem. För det andra, med hjälp av kommentarer, kan du inaktivera trasig kod. Eller kommentera den gamla versionen av koden.
SQL, liksom Java, har enkelradiga och flerradiga kommentarer. Dessutom ser en kommentar med flera rader ut precis som i Java. Dess utseende:
/*
comment text
comment text
comment text
*/
Naturligtvis kan den användas i en rad också. Exempel:
/*comment text*/
Det finns också en typ av kommentar "från början till slutet av raden", liknande Java "//". Endast i SQL behöver du skriva två minustecken och ett mellanslag . Allmän syn på en sådan kommentar:
-- comment text
Exempel:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
I exemplet ovan kommenterade vi frågevillkoret, så MySQL kommer bara att köra frågan:
SELECT * FROM employee
2.4 SQL-uttal
Om du kommunicerar med utländska kunder eller klarar en onlineintervju för ett amerikanskt företag, kan du bli tillfrågad om din erfarenhet av uppföljarspråket . Du kommer ärligt att säga att du inte arbetade med honom och omedelbart flunkade intervjun.
Och grejen är att SQL-språket ursprungligen kallades SEQUEL, vilket uttalas som en uppföljare (ˈsēkwəl), så väldigt ofta i USA och andra engelskspråkiga källor kommer du inte att höra "escuel", utan "sequel". SQL skrivs och uppföljaren läses. Här finns en sådan historisk paradox.
GO TO FULL VERSION