Nem sikerült frissíteni a gépelési beállításokat. Töltsd be újra az oldalt, és próbáld újra.
Gépelési gyakorlat: Programozás SQL nyelven
A pontosság számításának szabályai megváltoztak. Ez a gyakorlat elölről kezdődik.
A befejezett munkamenet mentését nem sikerült megerősíteni. Próbáld meg újra menteni a szöveg újbóli begépelése nélkül.
Gépelési gyakorlat: Programozás SQL nyelven
A 10 ujjas gépelés jelentős a programozásban. A gyors gépelési technikák használatával hatékonyabban írhat kódot SQL programozási nyelven.
Programozás SQL nyelven és 10 ujjas gépelés
Az SQL tanulása és a gépelés gyakorlása jól kiegészítik egymást. Az SQL-lekérdezések tele vannak zárójelekkel, vesszőkkel, operátorokkal és idézőjelekkel. Apró hibák, például rossz idézőjel vagy hiányzó pontosvessző, az egész lekérdezést hibássá tehetik. SQL írásakor hasznos tudni, mely részek közösek a különböző adatbázisokban, és melyek sajátosak egy adott rendszerre. Ez a cikk elsősorban a PostgreSQL-re összpontosít, de említést tesz a MySQL-ről, SQLite-ról és SQL Serverről is, ahol az eltérés jelentős.
Mi jellemző az SQL szintaxisára?
Az SQL (Structured Query Language) deklaratív nyelv. Nem lépésről lépésre írod le, hogyan kell lekérdezni az adatokat, hanem megmondod, mit szeretnél. Szinte minden utasítás egy kulcsszóval kezdődik, például SELECT, INSERT vagy UPDATE. A záradékok sorrendje kötött: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY .... A PostgreSQL és a MySQL ugyanazt a sorrendet követi, így ha az egyiket megtanulod, a másikban is használhatod.
SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;
Gyakran használt speciális karakterek
Az SQL tele van írásjelekkel. A zárójelek () függvényargumentumokat vesznek körül és feltételeket csoportosítanak. A vesszők , oszlopokat választanak el. A pont . sémák és táblanevek esetén használatos, például public.users. Az egyszeres idézőjelek '...' szöveges literálokat jelölnek. A PostgreSQL dupla idézőjelet "..." használ azonosítókhoz, míg a MySQL backtick jelet `...`. Az SQL Serverben szögletes zárójelek [...] is előfordulnak. Ezek gyakorlása segít hibátlan lekérdezések írásában.
-- Szöveges literál
SELECT * FROM books WHERE title = 'War and Peace';
-- Azonosítók szóközökkel (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;
Nagy- és kisbetűk
Szokás szerint az SQL kulcsszavakat nagybetűkkel írjuk: SELECT, FROM, WHERE. Ez megkönnyíti a felismerést, de nem kötelező. A PostgreSQL az idézőjelek nélküli azonosítókat automatikusan kisbetűsre alakítja, így a MyTable és a mytable ugyanazt jelenti. A MySQL-ben az adatbázis- és táblanevek kis- és nagybetűinek megkülönböztetése az operációs rendszertől és a szerver beállításaitól függ. A gyakorláshoz hasznos a nagybetűs kulcsszavak használata, mert így jobban látható a lekérdezés szerkezete.
Pontosvessző és utasítás vége
Az SQL-ben a pontosvessző ; zárja le az utasítást. Az interaktív eszközök, például a psql, a MySQL-kliens és az SQLite parancssori felülete általában erre a karakterre várnak az utasítás végrehajtása előtt. A psql-ben a \g paranccsal is elküldheted az aktuális lekérdezést. Ha az eredmény helyett további szöveget váró parancssort látsz, ellenőrizd, hogy lezártad-e az utasítást.
SELECT-lekérdezések és joinok
Lekérdezések írása gyakran joinok írását is jelenti. A PostgreSQL INNER JOIN, LEFT JOIN és RIGHT JOIN szintaxist használ. Az alábbi példában az összekapcsolás feltétele az ON kulcsszó után szerepel. USING vagy NATURAL szerkezetű összekapcsolások is léteznek. Egy hiányzó szóköz vagy elírt feltétel érvényteleníti a lekérdezést. A joinok gyakorlása segít pontosabban írni az olyan szimbólumokat, mint = és ..
SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;
Függvények és kifejezések
A PostgreSQL sok beépített függvényt tartalmaz, például COUNT(), SUM() és AVG(). A zárójelek mindig kötelezőek. A dátum- és időfüggvények, mint NOW() vagy DATE_TRUNC(), elérhetők a PostgreSQL-ben; az elérhetőségük és a működésük adatbázisonként eltérhet. A MySQL-ben használható a CURDATE() vagy a DATE_FORMAT(). Ezek helyes begépelése figyelmet igényel az aláhúzásra, vesszőkre és zárójelekre.
SELECT DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;
INSERT, UPDATE, DELETE
Az adatmódosító utasítások sok írásjelet tartalmaznak. Az INSERT zárójeleket és vesszőket használ az oszlopok és értékek felsorolására. Az UPDATE az = jelet használja az értékadáshoz, az egyes értékadásokat pedig vesszőkkel választja el. A DELETE kulcsszavakat és feltételeket kombinál. Ezek a szerkezetek szinte azonosak PostgreSQL-ben, MySQL-ben, SQLite-ban és SQL Serverben, bár az idézőjelek szabályai eltérhetnek.
INSERT INTO users (id, name, email)
VALUES (1, 'Alice', 'a@example.com');
UPDATE users
SET name = 'Bob', email = 'bob@example.com'
WHERE id = 1;
DELETE FROM users WHERE id = 2;
Common Table Expressions (CTE)
A PostgreSQL gyakran használ CTE-ket (Common Table Expressions), amelyek WITH-szel kezdődnek. Ezek sok zárójelet és vesszőt tartalmaznak, így jó gépelési gyakorlatot jelentenek. A MySQL, az SQLite és az SQL Server is támogatja a CTE-ket. Ellenőrizd, hogy minden nyitó zárójelhez tartozik-e záró zárójel.
WITH recent_orders AS (
SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'
)
SELECT customer_id, COUNT(*) AS order_count
FROM recent_orders
GROUP BY customer_id;
Ablakfüggvények
A PostgreSQL híres a fejlett ablakfüggvényeiről. A tipikus szintaxis OVER (PARTITION BY ... ORDER BY ...) pontos zárójelezést és kulcsszavakat igényel. A MySQL és az SQL Server is támogatja az ablakfüggvényeket. Az alábbi példa a PostgreSQL szintaxisát használja.
SELECT customer_id,
SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;
Paraméterek és placeholders
Az alkalmazásokban a paraméterek helyőrzői az adatbázistól és az illesztőprogramtól is függenek. A PostgreSQL natív előkészített utasításai $1, $2 jelölést használnak, a MySQL előkészített utasításaiban és az SQLite-lekérdezésekben ? is használható, az SQL Server paramétereinek pedig például @p1 a neve. Az illesztőprogram más szintaxist is előírhat, például a Psycopg %s jelölést használ. Nézd meg a dokumentációját, mert ezeket az apró jeleket könnyű elgépelni.
-- PostgreSQL
SELECT * FROM users WHERE id = $1;
-- MySQL
SELECT * FROM users WHERE id = ?;
Összegzés
Szokás szerint az SQL kulcsszavait nagybetűvel írjuk. A PostgreSQL a dupla idézőjelek nélküli azonosítókat kisbetűsre alakítja; más rendszerekben eltérő szabályok érvényesek. A PostgreSQL dupla idézőjelet használ azonosítókhoz, $n placeholder-eket, CTE-ket és ablakfüggvényeket. A MySQL backtick jeleket és ? placeholder-eket használ. Az SQL Server szögletes zárójeleket és @ paramétereket vezet be. Az SQLite egyszerű szintaxist tart fenn, de pontosságot igényel. Az SQL-lekérdezések begyakorlása fejleszti a pontosságot az írásjelek, kulcsszavak és szimbólumok használatában, és a PostgreSQL-re összpontosítva tapasztalatot szerezhetsz az egyik legszélesebb körben használt modern adatbázissal.