1 / 41

SQL

SQL. SQL. SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus nyelvekbe beépíthető (beágyazott SQL).

Download Presentation

SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL

  2. SQL • SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus nyelvekbe beépíthető (beágyazott SQL). • 1976: SEQUEL (= Structured English QUEry Language) az SQL eredeti változata, IBM-nél fejlesztették ki. • 1986: szabvány SQL, az ANSI (= American National Standards Institute) definiálta. • 1992: SQL2 szabvány. • Továbbfejlesztés: SQL3 (rekurzió, triggerek, objektum-relációs modell)

  3. SQL • Az SQL utasításait két fő csoportba szokták sorolni: • DDL (= Data Definition Language): adatstuktúra definiáló utasítások. •  DML (= Data Manipulation Language): adatokon műveletet végző utasítások. • alábbi csoportokban tárgyaljuk az SQL utasításokat: - adatbázisséma definiálása (DDL), - adatok aktualizálása (DML), - lekérdezési lehetőségek (DML).

  4. Szintaxis • Kisbetű és nagybetű a nyelv alapszavaiban egyenértékű. • Utasítások sorfolytonosan írhatók, lezárás pontosvesszővel. • Szövegkonstans: 'szöveg' • Változó nincs, csak tábla- és oszlopnevekre lehet hivatkozni. Kifejezésben hivatkozás egy tábla adott oszlopára: tábla.oszlop (ha a tábla egyértelmű, akkor elhagyható). • Logikai műveletek: AND, OR, NOT • Az utasítások szintaxisának leírásánál az elhagyható részleteket szögletes zárójellel jelöljük.

  5. Speciális logikai kifejezések • x IS NULL: igaz, ha az x mező értéke NULL. • x BETWEEN a AND b: igaz, ha a  x  b. • x IN halmaz: igaz, ha x megegyezik a megadott halmaz egy elemével. • x relációjel ALL halmaz: igaz, ha x a halmaz minden elemével a megadott relációban van. • x relációjel ANY halmaz: igaz, ha a halmaznak van olyan eleme, amellyel x a megadott relációban van. • EXISTS halmaz: igaz, ha a halmaz nem üres. • x LIKE minta: igaz, ha az x karaktersorozat megfelel a megadott mintának.

  6. Relációsémák definiálása - DDL CREATE TABLE táblanév ( oszlopnév adattípus [feltétel], ... ..., oszlopnév adattípus [feltétel] [, táblaFeltételek] );

  7. Adattípusok • CHAR(n) n hosszúságú karaktersorozat • VARCHAR(n) legfeljebb n hosszúságú karaktersorozat • INTEGER egész szám (röviden INT) • REAL valós (lebegőpontos) szám, másnéven FLOAT • DECIMAL(n[,d]) n jegyű decimális szám, ebből d tizedesjegy • DATE dátum • TIME idő

  8. Alapértelmezett értékek • NULL – nem ismert • DEFAULT Típus definiálása után vagy lehet később módosítani

  9. Táblák, relációsémák változtatása • Táblák megszüntetése DROP Tábla;

  10. Táblák, relációsémák változtatása Relációsémák módosítása ALTER TABLE táblanév [ADD (újelem, ..., újelem)] [MODIFY (módosítás, ..., módosítás)] [DROP (oszlop, ..., oszlop)]; újelem: egy "oszlopnév adattípus [feltétel]” módosítás: "oszlopnév adattípus [feltétel]”

  11. Indexek létrehozása • nem része az SQL2 szabványnak • CREATE [UNIQUE] INDEX indexnév ON tábla(oszloplista); • DROP INDEX indexnév;

  12. Megszorítások SQL -ben • Elsődleges kulcs, kulcsok • Külső kulcs – hivatkozási épség • Attribútumértékekre vonatkozó megszorítások • Globális megszorítások

  13. Kulcsok megadása SQL -ben • PRIMARY KEY - elsődleges kulcs • CREATE TABLE utasításon belül kétféle módon: • Attribútum megadásakor • Egy újabb deklarációs sorral • UNIQUE – kulcs (több is megadható)

  14. Hivatkozási épség – idegen kulcs • CREATE TABLE utasításon belül kétféle módon: • Attribútum megadásakor REFERENCES tábla(attribútum) • Egy újabb deklarációs sorral FOREIGN KEY (oszloplista) REFERENCES tábla(oszloplista) [ON-feltételek]

  15. Hivatkozási épség fenntartása • Ha a feltétel megsérülne visszautasítjuk a módosítást • Továbbgyűrűző eljárás • NULL értékre állítás módszere

  16. Hivatkozási épség fenntartása • ON UPDATE CASCADE: ha S egy sorában változik a kulcs értéke, akkor a rá való T-beli hivatkozások is módosulnak • ON DELETE CASCADE: Ha S-ben törlünk egy sort, akkor T-ben is törlődnek a rá hivatkozó sorok • ON UPDATE SET NULL: ha S egy sorában változik a kulcs értéke, akkor T-ben a rá való külső kulcs hivatkozások értéke NULL lesz. • ON DELETE SET NULL: ha S-ben törlünk egy sort, akkor T-ben a rá való külső kulcs hivatkozások értéke NULL lesz.

  17. Attribútumértékekre vonatkozó megszorítások • Attribútumra vonatkozó megszorítás CREATE TABLE utasításban • Értéktartományra vonatkozó megszorítás CREATE DOMAIN attribútum típus AS CHECK (VALUE IN (kifejezés)) CHECK (VALUE (kifejezés))

  18. Globális meszorítások • Sorokra vonatkozó CREATE TABLE utasításban • Önálló megszorítások CREATE név ASSERTION CHECK feltétel

  19. Megszorítások módosítása • Megszorítások elnevezése CONSTRAINT kulcsszóval • név CHAR(30) CONSTRAINT NévKulcs UNIQUE • ALTER TABLE Dolgozó DROP CONSTRAINT NévKulcs • ALTER TABLE Dolgozó ADD CONSTRAINT NévKulcs UNIQUE (név);

  20. Adattábla aktualizálása (DML) • táblába új sor felvétele • Sor(ok) módosítása • Sor(ok) törlése

  21. táblába új sor felvétele • INSERT INTO táblanév [(oszloplista)] VALUES (értéklista); • Oszloplista megadása nélkül is lehet

  22. Sor(ok) módosítása UPDATE táblanév SET oszlop = kifejezés, ..., oszlop = kifejezés [ WHERE feltétel ]; Where feltétel nélkül minden sorra

  23. Sor(ok) törlése DELETE FROM táblanév [ WHERE feltétel ]; Where feltétel nélkül minden sorra

  24. Lekérdezés (DML) • Egy vagy több adattáblából egy eredménytábla előállítása, amely a képernyőn listázásra kerül, vagy más módon használható fel. • Egyetlen SELECT utasítás akár egy komplex felhasználói programot helyettesíthet

  25. Lekérdezés (DML) SELECT [DISTINCT] oszloplista FROM táblanévlista [WHERE feltétel];

  26. Lekérdezés (DML) • "SELECT A1,...,An FROM T1,...,Tm  WHERE feltétel" utasítás egyenértékű a következő relációs algebrai kifejezéssel: • E = A1,...,An(feltétel(T1 x...x Tn))

  27. A relációs algebra műveleteinek megvalósítása • Projekció: SELECT [DISTINCT] A1,...,An FROM T; • Szelekció: SELECT * FROM T WHERE feltétel;

  28. A relációs algebra műveleteinek megvalósítása • Descartes-szorzat: T1 x T2 SELECT * FROM T1,T2; • Théta join: SELECT * FROM T1,T2 WHERE feltétel;

  29. A relációs algebra műveleteinek megvalósítása Unió: (SELECT * FROM T1) UNION (SELECT * FROM T2); Metszet: (SELECT * FROM T1) INTERSECT (SELECT * FROM T2); Különbség: (SELECT * FROM T1) EXCEPT (SELECT * FROM T2);

  30. Alias nevek • SELECT után megadott oszloplista tetszőleges kifejezéseket is tartalmazhat az eredménytábla oszlopainak elnevezésére alias neveket adhatunk meg: • FROM után megadott táblák esetében is használhatók, pl. ha egy táblára többször is haivatkozunk

  31. Összesítő függvények • függvénynév ( [DISTINCT] oszlopnév ) • AVG: átlagérték. SUM: összeg. MAX: maximális érték. MIN: minimális érték. COUNT: elemek száma.

  32. Csoportosítás • GROUP BY oszloplista • csoportba azok a sorok melyeknél oszloplista értéke azonos. • eredménytáblában egy csoportból egy rekord • Az összesítő függvények csoportonként hajtódnak végre.

  33. Csoportosítás • HAVING feltétel • a feltételnek eleget tevő csoportok kerülnek összesítésre az eredménytáblába.

  34. Eredménytábla rendezése • ORDER BY oszlopnév [DESC], ..., oszlopnév [DESC] • Alapértelmezésben növekvő, ha fordítva akarjuk akkor DESC = descending

  35. A SELECT utasítás általános alakja SELECT [DISTINCT] oszloplista projekció FROM táblanévlista Descartes-szorzat [WHERE feltétel] szelekció [GROUP BY oszloplista] csoportosítás [HAVING feltétel] csoport-feltétel [ORDER BY oszloplista]; rendezés

  36. Végrehajtási sorrend 1. FROM Descartes-szorzat 2. WHERE szelekció 3. GROUP BY csoportosítás 4. HAVING csoport-szelekció 5. SELECT projekció 6. ORDER BY rendezés

  37. Alkérdések • valamely SQL utasítás belsejében szereplő SELECT utasítás amely egy relációt vagy skalárt eredményez • Halmazelméleti metszet művelet megvalósítása SELECT * FROM T1 WHERE EXISTS ( SELECT * FROM T2 WHERE T1.A1=T2.A1 AND ... T1.An=T2.An );

  38. Alkérdések • INSERT utasítás is tartalmazhat alkérdést: INSERT INTO táblanév [(oszloplista)] SELECT ... ; • A SELECT annyi oszlopot kell hogy kiválasszon, amennyit oszloplista tartalmaz

  39. Virtuális táblák • A virtuális tábla (nézettábla, view) nem tárol adatokat • Nézettáblák alkalmazási lehetőségei: - Származtatott adattáblák létrehozása, amelyek a törzsadatok módosításakor automatikusan módosulnak (pl. összegzőtáblák). - Bizonyos adatok elrejtése egyes felhasználók elől (adatbiztonság vagy egyszerűsítés céljából).

  40. Virtuális táblák • CREATE VIEW táblanév [(oszloplista)] AS alkérdés; • SELECT utasítás eredménytáblája alkotja a nézettáblát • ugyanúgy használhatók, mint a tárolt adattáblák

  41. Virtuális táblák • Nézettábla módosítása lehetséges kivéve: ha definíciója - DISTINCT opciót, - FROM után egynél több táblanevet (join művelet), - GROUP BY alparancsot tartalmaz.

More Related