2.1 Inleiding tot SQL
Als u een database (DB) heeft en daarin een tabel met wat gegevens, dan is de meest gebruikelijke taak om bepaalde gegevens in deze tabel te vinden. Daar is SQL 40 jaar geleden voor uitgevonden.
SQL staat voor Structured Query Language .
De eenvoudigste SQL-query ziet er als volgt uit:
SELECT column1, column2, … columnN FROM table
Stel dat u een werknemerstabel heeft met een lijst van de werknemers van uw startup:
ID kaart | naam | bezigheid | salaris | leeftijd | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmeur | 100.000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmeur | 80.000 | 23 | 2013-08-12 |
3 | Ivanov Sergej | Tester | 40.000 | dertig | 01-01-2014 |
4 | Rabinovich Moisha | Regisseur | 200.000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Officemanager | 40.000 | 25 | 2015-10-10 |
6 | Vaska | kat | 1.000 | 3 | 2018-01-01 |
employee names
U wilt een query schrijven die ze ook weergeeft salaries
, dan moet u een query schrijven:
SELECT name, salary FROM employee
U krijgt het queryresultaat:
naam | salaris |
---|---|
Ivanov Ivan | 100.000 |
Petrov Petr | 80.000 |
Ivanov Sergej | 40.000 |
Rabinovich Moisha | 200.000 |
Kirienko Anastasia | 40.000 |
Vaska | 1.000 |
Als u alle kolommen van uw tabel wilt weergeven , kunt u in plaats van de namen van alle kolommen op te sommen, eenvoudig een sterretje schrijven. Voorbeeld:
SELECT * FROM employee
U krijgt het queryresultaat:
ID kaart | naam | bezigheid | salaris | leeftijd | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmeur | 100.000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmeur | 80.000 | 23 | 2013-08-12 |
3 | Ivanov Sergej | Tester | 40.000 | dertig | 01-01-2014 |
4 | Rabinovich Moisha | Regisseur | 200.000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Officemanager | 40.000 | 25 | 2015-10-10 |
6 | Vaska | kat | 1.000 | 3 | 2018-01-01 |
2.2 Geavanceerde weergave van SQL-query
De SQL-taal is zo gebruiksvriendelijk mogelijk ontworpen.
Ten eerste doet de hoofdletter van de verzoektekst er niet toe . U kunt SELECT, Select of select schrijven en alles zal werken. Ten tweede wordt er op geen enkele manier rekening gehouden met regeleinden . Het DBMS verandert de query nog steeds in één lange reeks, zodat u deze kunt schrijven zoals u wilt.
Zoals je waarschijnlijk al geraden hebt, zijn de SELECT- en FROM-sleutelwoorden niet beperkt. Anders zou er niet zoveel over SQL worden gepraat. De uitgebreide weergave van de SQL-query ziet er als volgt uit:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting
Met behulp van een trefwoord WHERE
kunt u een voorwaarde / filter instellen voor de geselecteerde rijen.
Voorbeeld 1 . Laten we een query schrijven die werknemers selecteert met het beroep "Programmeur":
SELECT * FROM employee WHERE occupation = 'Programmer'
En we krijgen het volgende zoekresultaat:
ID kaart | naam | bezigheid | salaris | leeftijd | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmeur | 100.000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmeur | 80.000 | 23 | 2013-08-12 |
Zoals u kunt zien, worden als resultaat van de uitvoering van de query alleen rijen weergegeven waarin het beroep van de werknemer "Programmeur" wordt genoemd.
De kernwoorden GROUP BY
, ORDER BY
en HAVING
die behandelen we in de volgende colleges. En hierin zullen we nog een paar voorbeelden analyseren met het woord WAAR.
Voorbeeld 2 . Laten we nu een query schrijven die ons alle werknemers laat zien met een salaris van meer dan 100.000. Dit is hoe het eruit zal zien:
SELECT * FROM employee WHERE salary > 100000
We krijgen het volgende zoekresultaat:
ID kaart | naam | bezigheid | salaris | leeftijd | join_date |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Regisseur | 200.000 | 35 | 2015-05-12 |
Voorbeeld 3 . Laten we nu iets moeilijkers proberen. Hoe alle werknemers weergeven die in 2015 zijn aangenomen? En zo:
SELECT * FROM employee WHERE YEAR(join_date) = 2015
We krijgen het volgende zoekresultaat:
ID kaart | naam | bezigheid | salaris | leeftijd | join_date |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Regisseur | 200.000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Officemanager | 40.000 | 25 | 2015-10-10 |
In deze query gebruiken we een speciale functie YEAR()
waarmee we het jaar van een datum kunnen halen en vervolgens het jaar van de datum kunnen vergelijken met het getal 2015.
2.3 Opmerkingen in SQL-query's
En nog een belangrijk punt zijn opmerkingen in SQL-query's. Opmerkingen zijn erg handig. Ten eerste kun je er uitleg en/of je ideeën in schrijven. Ten tweede kunt u met behulp van opmerkingen kapotte code uitschakelen. Of becommentarieer de oude versie van de code.
SQL heeft, net als Java, enkelregelige en meerregelige commentaren. Bovendien ziet een commentaar van meerdere regels er net zo uit als in Java. Het uiterlijk:
/*
comment text
comment text
comment text
*/
Natuurlijk kan het ook in één regel worden gebruikt. Voorbeeld:
/*comment text*/
Er is ook een soort commentaar "van het begin tot het einde van de regel", vergelijkbaar met de Java "//". Alleen in SQL moet je twee mintekens en een spatie schrijven . Algemeen beeld van zo'n opmerking:
-- comment text
Voorbeeld:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
In het bovenstaande voorbeeld hebben we de queryvoorwaarde becommentarieerd, dus MySQL zal alleen de query uitvoeren:
SELECT * FROM employee
2.4 SQL-uitspraak
Als u communiceert met buitenlandse klanten of een online interview aflegt voor een Amerikaans bedrijf, dan wordt u mogelijk gevraagd naar uw ervaring met de vervolgtaal . Je zult eerlijk zeggen dat je niet met hem hebt gewerkt en het interview meteen laten zakken.
En het punt is dat de SQL-taal oorspronkelijk SEQUEL heette, wat wordt uitgesproken als een vervolg (ˈsēkwəl), dus heel vaak hoor je in de VS en andere Engelstalige bronnen niet "escuel", maar "vervolg". SQL wordt geschreven en het vervolg wordt gelezen. Hier is zo'n historische paradox.
GO TO FULL VERSION