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 namesockså 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 WHEREkan 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 BYoch HAVINGvi 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.