SQL je kratica za Structured Query Language, kar pomeni strukturirani poizvedovalni jezik. Uporabljamo ga za delo z relacijskimi podatkovnimi bazami, kjer so podatki shranjeni v tabelah.
Z jezikom SQL lahko ustvarjamo podatkovne baze in tabele, vstavljamo nove podatke, spreminjamo obstoječe zapise, brišemo podatke ter iz podatkovne baze pridobivamo izbrane informacije.
Pomni: SQL ni splošen programski jezik, temveč jezik za delo s podatki v podatkovnih bazah. Namenjen je predvsem poizvedovanju, urejanju in upravljanju podatkov.
Osnovni ukazi SQL so pri različnih sistemih podatkovnih baz zelo podobni. Posamezni sistemi, kot so MySQL, MariaDB, PostgreSQL ali SQLite, pa imajo lahko tudi svoje posebnosti.
Vsebina strani
Osnovna pravila
Pri pisanju ukazov SQL je pomembno, da ločimo med ukazi, imeni tabel, imeni stolpcev in vrednostmi. Ukazi povedo, kaj želimo narediti, tabele in stolpci pa povedo, s katerimi podatki delamo.
- Ukazi SQL so pogosto zapisani z velikimi črkami, na primer
SELECT,INSERTinCREATE TABLE. - Imena tabel in stolpcev naj bodo kratka, razumljiva in brez presledkov.
- Besedilne vrednosti zapišemo med enojne narekovaje, na primer
'ana'. - Vsak ukaz se običajno konča s podpičjem
;. - Pri ukazih za spreminjanje in brisanje podatkov moramo paziti na pogoj
WHERE.
Pozor: V SQL stavkih ni pomembna samo izbira ukaza, ampak tudi natančen zapis imen tabel, stolpcev, vrednosti in pogojev.
Deli jezika SQL
SQL običajno razdelimo na več vsebinskih delov. Vsak del je namenjen drugi nalogi pri delu s podatkovno bazo.
- DDL (Data Definition Language) je namenjen ustvarjanju in spreminjanju strukture podatkovne baze. Značilni ukazi so
CREATE,ALTERinDROP. - DML (Data Manipulation Language) je namenjen delu s podatki v tabelah. Sem spadajo ukazi
SELECT,INSERT,UPDATEinDELETE. - DCL (Data Control Language) je povezan s pravicami dostopa do podatkovne baze. Tipična ukaza sta
GRANTinREVOKE. - TCL (Transaction Control Language) je namenjen upravljanju transakcij. Pogosti ukazi so
COMMIT,ROLLBACKinSTART TRANSACTION.
Pomni: Za začetno delo so najpomembnejši ukazi iz skupin DDL in DML. Z DDL določimo zgradbo podatkov, z DML pa podatke vstavljamo, beremo, spreminjamo in brišemo.
Primerjava skupin ukazov
Skupine ukazov SQL se razlikujejo po tem, ali vplivajo na zgradbo podatkovne baze, na podatke ali na pravice uporabnikov.
| Skupina | Namen | Primeri ukazov |
|---|---|---|
| DDL | Ustvarjanje in spreminjanje zgradbe podatkovne baze. | CREATE, ALTER, DROP |
| DML | Delo s podatki v tabelah. | SELECT, INSERT, UPDATE, DELETE |
| DCL | Upravljanje pravic uporabnikov. | GRANT, REVOKE |
| TCL | Upravljanje transakcij. | COMMIT, ROLLBACK, START TRANSACTION |
Najpogostejše operacije v SQL
Pri začetnem delu se najpogosteje srečamo z osnovnimi postopki, ki jih potrebujemo pri skoraj vsaki podatkovni bazi.
- ustvarjanje podatkovnih baz in tabel,
- vstavljanje novih zapisov,
- iskanje in izpis podatkov,
- razvrščanje in filtriranje podatkov,
- spreminjanje obstoječih zapisov,
- brisanje zapisov,
- določanje uporabniških pravic,
- upravljanje transakcij.
Primeri osnovnih ukazov SQL
Primer ukaza DDL
Z ukazom CREATE TABLE ustvarimo novo tabelo. V naslednjem primeru ustvarimo tabelo uporabniki s stolpci id, uporabnisko_ime in email:
CREATE TABLE uporabniki (
id INT PRIMARY KEY AUTO_INCREMENT,
uporabnisko_ime VARCHAR(50),
email VARCHAR(100)
);
Primer ukaza DML za vstavljanje podatkov
Z ukazom INSERT vstavimo nov zapis v tabelo uporabniki:
INSERT INTO uporabniki (uporabnisko_ime, email)
VALUES ('ana', 'ana@example.com');
Primer poizvedbe
Z ukazom SELECT pridobimo podatke iz tabele. Znak * pomeni, da želimo izpisati vse stolpce:
SELECT * FROM uporabniki;
Pogosto je pregledneje izbrati samo tiste stolpce, ki jih potrebujemo:
SELECT uporabnisko_ime, email
FROM uporabniki;
Primer spreminjanja podatkov
Z ukazom UPDATE spremenimo obstoječe podatke. Pogoj WHERE določi, kateri zapis bo spremenjen:
UPDATE uporabniki
SET email = 'novi.email@example.com'
WHERE id = 1;
Primer brisanja podatkov
Z ukazom DELETE izbrišemo zapis iz tabele. Tudi pri brisanju je pogoj WHERE zelo pomemben:
DELETE FROM uporabniki
WHERE id = 1;
Pri ukazih UPDATE in DELETE lahko manjkajoč pogoj WHERE povzroči spremembo ali izbris vseh zapisov v tabeli.
Priporočila
- Ukaze SQL piši pregledno in jih razdeli v več vrstic, kadar so daljši.
- Za imena tabel in stolpcev uporabljaj jasna in dosledna poimenovanja.
- Pri poizvedbah izberi samo tiste stolpce, ki jih potrebuješ.
- Pred izvajanjem ukazov
UPDATEinDELETEvedno preveri pogojWHERE. - Za vaje uporabljaj testne podatke, da se izogneš izgubi pomembnih zapisov.
- Pri učenju najprej razumi namen ukaza, nato pa njegovo natančno sintakso.
Pogoste napake
- Manjkajoče podpičje na koncu SQL stavka.
- Zamenjava vrstnega reda delov stavka, na primer pri ukazu
SELECT. - Nepravilno zapisano ime tabele ali stolpca.
- Manjkajoči enojni narekovaji pri besedilnih vrednostih.
- Uporaba ukaza
UPDATEaliDELETEbrez pogojaWHERE. - Neustrezna uporaba znaka
*, kadar potrebujemo samo nekaj stolpcev.
Pozor: Pred izvajanjem ukazov, ki spreminjajo ali brišejo podatke, je smiselno najprej preveriti, katere zapise bi izbral enak pogoj z ukazom SELECT.