Rokasgrāmatas

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. DELETE vai UPDATE bez WHERE klauzulas 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

idnameemailcity
1Lena Ortizlena@example.comLisbon
2Sam Patelsam@example.comLeeds

orders

idcustomer_idtotalplaced_at
101142.002026-09-20
102218.502026-09-22
103125.002026-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

KomandaKo tā dara
SELECTNolasa datus
INSERTPievieno jaunas rindas
UPDATEMaina esošās rindas
DELETENoņem rindas
CREATE TABLE / ALTER TABLEIzveido vai maina tabulas struktūru
WHEREFiltrē, kuras rindas tiek ietekmētas
JOINApvieno saistītās tabulas
GROUP BYApkopo rindas grupās ar COUNT, SUM, AVG
ORDER BY / LIMITKā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

TerminsNozīme
Vaicājums (query)SQL paziņojums, īpaši tāds, kas nolasa datus.
Tabula / rinda / kolonnaVeida lieta / viens ieraksts / viens atribūts.
Primārā atslēgaKolonna, kas unikāli identificē katru rindu, parasti id.
Ārējā atslēgaKolonna, kas norāda uz rindu citā tabulā, piemēram, customer_id.
IndekssMeklēšanas struktūra, kas padara kolonnas meklēšanu daudz ātrāku.
Shēma (schema)Visu tabulu un kolonnu struktūra.
TransakcijaIzmaiņu grupa, kas vai nu izdodas kopā, vai neizdodas kopā.
SQL injekcijaUzbrukums, 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.

Mythex · Pricing · Veidojiet jebko ar AI · Tīmekļa vietņu un lietotņu veidnes · Mythex salīdzinājumā · AI lietotņu veidošanas glosārijs · Bezmaksas rīki lietotņu veidošanai ar AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)