Kas ir SQL? Datu bāzu valoda vienkārši paskaidrota
SQL (Structured Query Language, sauc par „S-Q-L” vai „sequel”) ir standarta valoda darbam ar relāciju datu bāzēm — tādām, kas glabā datus tabulās ar rindām un kolonnām, piemēram, Postgres, MySQL, SQLite un SQL Server. Ar SQL uzdodat jautājumus par saviem datiem („kuri klienti rezervēja šomēnes?”) un pievienojat, maināt vai noņemat ierakstus. Tā pastāv kopš 1970. gadiem, ir starptautisks standarts un darbina lielu daļu pasaules lietotņu.
Kāpēc SQL ir svarīgs, veidojot ar MI
Kad lūdzat MI lietotņu veidotājam „saglabāt pasūtījumus” vai „parādīt gaidāmo rezervāciju sarakstu”, kaut kam jārunā ar datu bāzi — un vairumā lietotņu tā ir SQL, vai nu rakstīts tieši, vai ģenerēts ar ORM.
SQL pats rakstīt nav vajadzīgs, bet neliela izpratne atmaksājas:
- Varat pārbaudīt savus datus. Īss vaicājums atbild uz „cik reģistrāciju mēs saņēmām šonedēļ?” ātrāk nekā jauna ekrāna veidošana.
- Varat pieprasīt labākus pārskatus. „Apvienot ieņēmumus pa mēnešiem un pakalpojumiem” ir SQL ideja. Ja to zināt, jūsu pieprasījums kļūst skaidrāks.
- Varat pamanīt bīstamas izmaiņas.
DELETEvaiUPDATEbezWHEREklauzulas ietekmē katru rindu. To vērts pamanīt, pirms tas izpildās. - Jūsu dati nav ieslēgti. SQL ir kopīgs standarts, tāpēc dati SQL datu bāzē var tikt pārvietoti un nolasīti ar daudziem rīkiem.
Ikdienas salīdzinājums
Iedomājieties ļoti labi sakārtotu bibliotēku ar bibliotekāru, kas runā tikai precīzā, vienkāršā valodā.
Jūs paši nestaigājat pa plauktiem. Bibliotekārim pasniedzat kartīti: „Atrodi visas šī autora grāmatas, izdotas pēc 2010. gada, jaunākās pirmās.” Bibliotekārs zina ēku no iekšpuses un atgriežas tieši ar šīm grāmatām šādā secībā.
SQL ir valoda uz šīs kartītes. Jūs sakāt, ko vēlaties, nevis kā to atrast — datu bāze pati izvēlas ātrāko ceļu.
Kā darbojas SQL: tabulas, rindas un kolonnas
Relāciju datu bāze glabā datus tabulās. Katra tabula satur vienu veidu lietas, katra rinda ir viens ieraksts, un katra kolonna ir viena informācijas daļa:
customers
| id | name | city | |
|---|---|---|---|
| 1 | Lena Ortiz | lena@example.com | Lisbon |
| 2 | Sam Patel | sam@example.com | Leeds |
orders
| id | customer_id | total | placed_at |
|---|---|---|---|
| 101 | 1 | 42.00 | 2026-09-20 |
| 102 | 2 | 18.50 | 2026-09-22 |
| 103 | 1 | 25.00 | 2026-09-27 |
Kolonna customer_id saista katru pasūtījumu ar klientu. Šī saite padara datu bāzi „relāciju”.
Darba piemērs: reālu jautājumu atbildēšana
1. Datu nolasīšana — „parādi visus klientus Lisabonā”:
SELECT name, email
FROM customers
WHERE city = 'Lisbon';
2. Kārtošana un ierobežošana — „pieci jaunākie pasūtījumi”:
SELECT id, total, placed_at
FROM orders
ORDER BY placed_at DESC
LIMIT 5;
3. Tabulu apvienošana — „katrs pasūtījums ar klienta vārdu”:
SELECT o.id, c.name, o.total
FROM orders o
JOIN customers c ON c.id = o.customer_id;
4. Apkopošana — „kopējā iztērētā summa katram klientam”:
SELECT c.name, SUM(o.total) AS total_spent
FROM customers c
JOIN orders o ON o.customer_id = c.id
GROUP BY c.name
ORDER BY total_spent DESC;
Ar šiem piemēra datiem tiek atgriezta Lena Ortiz ar 67.00 un Sam Patel ar 18.50.
5. Datu maiņa:
INSERT INTO customers (name, email, city)
VALUES ('Ana Silva', 'ana@example.com', 'Porto');
UPDATE customers SET city = 'Porto' WHERE id = 1;
DELETE FROM orders WHERE id = 102;
Tie atbilst četrām pamatdarbībām, ko izmanto gandrīz katra lietotne — izveidot, lasīt, atjaunināt un dzēst, pazīstamas kā CRUD.
Brīdinājums: UPDATE customers SET city = 'Porto'; bez WHERE klauzulas maina katru klientu. Vienmēr pārbaudiet WHERE pirms izmaiņas palaišanas.
SQL galvenās daļas
| Komanda | Ko tā dara |
|---|---|
SELECT | Nolasa datus |
INSERT | Pievieno jaunas rindas |
UPDATE | Maina esošās rindas |
DELETE | Noņem rindas |
CREATE TABLE / ALTER TABLE | Izveido vai maina tabulas struktūru |
WHERE | Filtrē, kuras rindas tiek ietekmētas |
JOIN | Apvieno saistītās tabulas |
GROUP BY | Apkopo rindas grupās ar COUNT, SUM, AVG |
ORDER BY / LIMIT | Kārto un ierobežo rezultātus |
SQL ir standartizēts, bet katra datu bāze pievieno savus papildinājumus, ko sauc par dialektu. Postgres, MySQL un SQLite saprot iepriekš minētos piemērus, taču tādas detaļas kā datumu funkcijas nedaudz atšķiras.
Galvenie termini
| Termins | Nozīme |
|---|---|
| Vaicājums (query) | SQL paziņojums, īpaši tāds, kas nolasa datus. |
| Tabula / rinda / kolonna | Veida lieta / viens ieraksts / viens atribūts. |
| Primārā atslēga | Kolonna, kas unikāli identificē katru rindu, parasti id. |
| Ārējā atslēga | Kolonna, kas norāda uz rindu citā tabulā, piemēram, customer_id. |
| Indekss | Meklēšanas struktūra, kas padara kolonnas meklēšanu daudz ātrāku. |
| Shēma (schema) | Visu tabulu un kolonnu struktūra. |
| Transakcija | Izmaiņu grupa, kas vai nu izdodas kopā, vai neizdodas kopā. |
| SQL injekcija | Uzbrukums, kurā lietotāja ievade iespiežas vaicājumā. Novērš parametrizēti vaicājumi. |
Biežākie nepareizi priekšstati
- „SQL ir datu bāze.” SQL ir valoda; Postgres, MySQL un SQLite ir datu bāzes, kas to runā.
- „SQL ir vecs, tātad novecojis.” Tas ir nobriedis, nevis novecojis. Mūsdienu datu bāzes un datu rīki joprojām to izmanto, un jaunākie bieži pievieno SQL atbalstu.
- „Tikai programmētāji var lietot SQL.” Analītiķi, mārketinga speciālisti un uzņēmumu īpašnieki ikdienā izmanto vienkāršus vaicājumus.
- „SQL nespēj apstrādāt elastīgus datus.” Daudzas SQL datu bāzes glabā arī JSON. Piemēram, Postgres ir tips
jsonb. Skatiet SQL vs NoSQL. - „Ļaut MI izpildīt jebkuru SQL produkcijā ir kārtībā.” Lasīšana ir ar mazu risku; izmaiņas un dzēšana dzīvos datos prasa dublējumu un otru skatienu. Skatiet kā dublēt savas lietotnes datu bāzi.
Ko prasīt no sava MI veidotāja
- „Parādi man tabulas manā datu bāzē un to, ko katra kolonna nozīmē.”
- „Uzraksti vaicājumu tikai lasīšanai: cik jaunu reģistrāciju bija katrā dienā pēdējo 30 dienu laikā?”
- „Pirms jebkura UPDATE vai DELETE palaišanas parādi man vaicājumu un to, cik rindu tas ietekmēs.”
- „Pievieno indeksus kolonnām, pēc kurām visbiežāk filtrējam un kārtojam.”
- „Pārliecinies, ka katrs vaicājums, kas izmanto lietotāja ievadi, ir parametrizēts.”
- „Ietin pasūtījumu un maksājumu atjauninājumus transakcijā, lai tie nevar izdoties tikai daļēji.”
SQL Mythex
Kad jūsu lietotnei vajag glabāt datus, Mythex projektam pievieno īpašu Postgres datu bāzi — pajautājiet tērzēšanā, piemēram, „saglabā gaidītāju sarakstā e-pasta adreses datu bāzē”, vai izmantojiet komandu /database (Database). Aģents izveido tabulas un raksta vaicājumus, un Ask režīmā varat lūgt jebkuru vaicājumu paskaidrot vienkāršā valodā. Vairāk par pašu datu bāzi lasiet kas ir Postgres.
Jautājumi
Kas ir SQL vienkāršos vārdos?
SQL (Structured Query Language) ir standarta valoda darbam ar relāciju datu bāzēm. To lieto, lai uzdotu jautājumus par saviem datiem, piemēram, „kuri pasūtījumi tika veikti šonedēj”, un lai pievienotu, mainītu vai dzēstu ierakstus.
Kā izrunā SQL?
Gan „S-Q-L” (burtus nosaucot pa vienam), gan „sequel” ir izplatītas un pareizas izrunas. Valoda sākotnēji tika saukta par SEQUEL, un no tā rodas otrā izruna.
Vai SQL ir programmēšanas valoda?
SQL ir vaicājumu valoda, kas paredzēta datu pārvaldībai. Jūs aprakstāt, kādu rezultātu vēlaties, un datu bāze pati izdomā, kā to iegūt. Ar to vien nevar veidot veselas lietotnes, bet tā ir daļa no gandrīz katras lietotnes, kas izmanto relāciju datu bāzi.
Vai SQL ir grūti apgūt?
Pamati ir pieejami: SELECT, WHERE, ORDER BY, INSERT, UPDATE un DELETE apmierina lielāko daļu ikdienas vajadzību, un tos lasīt gandrīz kā angļu valodu. Savienojumi (joins), grupēšana un veiktspējas optimizācija prasa ilgāku apguvi.
Vai man jāzina SQL, lai veidotu lietotni ar MI?
Nē. MI veidotājs SQL vai datu bāzes kodu uzraksta jūsu vietā. Nedaudz to zinot, varat pārbaudīt savus datus, pieprasīt pārskatus un pamanīt riskantas izmaiņas, pirms tās notiek.