adatbázis-lekérdezésenteraktiv.hu/tanuloi/adatbaziskezeles/sql-kezdo.pdf · 2...

14
Adatbázis-lekérdezés Adatbázis-lekérdezés Az SQL nyelv Az SQL nyelv Makány György

Upload: others

Post on 19-Feb-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Adatbázis-lekérdezésAdatbázis-lekérdezés

Az SQL nyelvAz SQL nyelv

Makány György

2

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

SQLSQL (Structured Query Language=(Structured Query Language=struktúrált lekérdező struktúrált lekérdező

nyelvnyelv): ):

relációs adatbázisok adatainak visszakeresésére, relációs adatbázisok adatainak visszakeresésére, frissítésére, kezelésére szolgáló nyelv.frissítésére, kezelésére szolgáló nyelv.

Születési idő és hely: 1976 IBM, a relációs adatmodellel nagyjából egyidőben. Szabványosítva ANSI SQL néven 1986-ban

Egyszerű, gyorsan tanulható (kb. 40 kulcsszó, angol mondat)Egyszerű, gyorsan tanulható (kb. 40 kulcsszó, angol mondat)

3

Az SQL-t sokszor beépítik adatbáziskezelő rendszerekbe (pl. Oracle, Informix, dBaseIV, DEC RDBMS, Delphi), de vannak önálló implementációk is (pl. MySQL, Novell XQL, Microsoft SQL Server).

Az SQL rendszerek illeszkednek az elterjedt adatállomány-formátumokhoz. Felismerik és kezelik a más programok (dBase, Paradox, Interbase, Oracle, stb.) által előállított adatformátumokat.

Gyakori a minta alapján történő lekérdezés, amiből SQL utasításokat is generáltathatnak (pl. MSAccess, Base).

Az SQL kapcsolataiAz SQL kapcsolatai

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

4

Az SQL (és az adatbáziskezelés) alapfogalmaiAz SQL (és az adatbáziskezelés) alapfogalmai

adategyed, adattétel, rekord: a vizsgált tárgy, objektum

adattípus: a tárgyra jellemző tulajdonságtípus

adatérték: az adott tárgy egy tulajdonságának értéke

kulcs: azon tulajdonságok, amelyek értékeik révén lehetővé teszik a rekordok keresését, azonosítását

egyértelmű kulcs: olyan kulcs, amely egyértelmű azonosítást tesz lehetővé

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

5

Adattípusai lefedik az adatbáziskezelőkben előforduló szokásos típusokat:

•CHAR karaktertípus•STRING akár 4000-32700 karakteres szöveg•DATE, TIME dátum, idő•SMALLINT 16 bites előjeles egész szám•INTEGER 32 bites előjeles egész szám•DOUBLE PRECISION 64 bites egész, kb. 15 értékes jegy•DECIMAL fixpontos törtszám, max. 15 jegy•FLOAT lebegőpontos valós, max. 15 pontos jegy

SQL adattípusokSQL adattípusok

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

6

Utasításai csoportosíthatóak:Utasításai csoportosíthatóak:

•Adatdefiníciós utasításokadatbázist, adattáblát létrehozó, törlő és adatvédelmi utasítások

•Lekérdezésekadatlekérdezést, jelentéskészítést szolgáló utasítások

•Adatkarbantartó utasításoktáblák közötti kapcsolatot definiáló, adatbeviteli, adatmódosító és adattörlési utasítások

•Speciális beágyazott utasításokkurzort létrehozó, törlő és vezérlő utasítások

Az SQL utasításai

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

7

Az SQL utasításaiAz SQL utasításaiAdatdefiníciós utasításokAdatdefiníciós utasítások

CREATE DOMAIN oszloptípus definiálásaoszloptípus definiálásaCREATE TABLE adattábla létrehozásaadattábla létrehozásaCREATE TABLE CONSTRAINTS kulcsok definiálásakulcsok definiálásaALTER TABLE adattábla szerkezetének megváltoztatásaadattábla szerkezetének megváltoztatásaDROP TABLE adattábla megszüntetéseadattábla megszüntetéseCREATE ASSERTION önálló feltétel definiálásaönálló feltétel definiálásaDROP ASSERTION önálló feltétel megszüntetéseönálló feltétel megszüntetéseSET CONSTRAINTS a feltételek hatálybaléptetésea feltételek hatálybaléptetéseCREATE INDEX index létrehozásaindex létrehozásaCREATE SYNONYM szinoníma létrehozásaszinoníma létrehozásaDROP SYNONYM szinoníma törléseszinoníma törléseCREATE VIEW nézettábla létrehozásanézettábla létrehozásaDROP VIEW nézettábla törlésenézettábla törléseCREATE SCHEMA adatbázisséma létrehozásaadatbázisséma létrehozása

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

8

Az SQL utasításaiAz SQL utasításaiLekérdezések 1.Lekérdezések 1.

SELECT A lekérdezések mindig ezzel az igével kezdődnek.A lekérdezések mindig ezzel az igével kezdődnek.

* Az összes oszlop megjelenik a lekérdezésbenAz összes oszlop megjelenik a lekérdezésben

oszlopokoszlopok az oszlopok neveinek vesszővel elválasztott sorozataaz oszlopok neveinek vesszővel elválasztott sorozata

oszlopfeliratoszlopfelirat az oszlop neve helyett álló szöveg (ideiglenes név)az oszlop neve helyett álló szöveg (ideiglenes név)

FROM a lekérdezésben érintett adattáblák neveia lekérdezésben érintett adattáblák nevei

SELECT cikkszam Cikkszám, megnevezes Megnevezés FROM cikktorzsadattar;

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

9

Az oszlopokra és a mezőkre kifejezéseket lehet megfogalmazni.Mezőkre például adatkonverziót (CAST), karakteres, matematikai (ABS, SIN, EXP, stb.), logikai vagy dátum műveletet,

oszlopokra különféle függvényeket (MIN, MAX, SUM, COUNT, AVG, stb.)

Az SQL utasításaiAz SQL utasításaiLekérdezések 2.Lekérdezések 2.

SELECT COUNT(egysegar*mennyiseg) Tételszám, 1.09*SUM(egysegar*mennyiseg) Érték, FROM rendelesek;

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

10

Az SQL utasításaiAz SQL utasításaiLekérdezések 3.Lekérdezések 3.

Záradékok a megjelenítendő rekordok szűrésére:

DISTINCT az oszlopban azonos értékű rekordok kijelzésének tiltásaaz oszlopban azonos értékű rekordok kijelzésének tiltása

WHERE csak egy feltételnek megfelelő értékű rekordok kijelzése csak egy feltételnek megfelelő értékű rekordok kijelzése LIKE, IN, BETWEEN, NOT, AND, OR

ORDER BY a talált sorok rendezésea talált sorok rendezéseASC, DESC

GROUP BY a talált sorok csoportosításaa talált sorok csoportosítása

HAVING a csoportosítás után a jelzett feltételnek meg nem felelő sorok a csoportosítás után a jelzett feltételnek meg nem felelő sorok kizárásakizárása

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

11

Az SQL utasításaiAz SQL utasításaiLekérdezések 4.Lekérdezések 4.

SELECT cikkszam,MIN(mennyiseg), MIN(mennyiseg*egysegar),MAX(mennyiseg), MAX(mennyiseg*egysegar),SUM(mennyiseg*egysegar), COUNT(mennyiseg*egysegar)

FROM rendelesekGROUP BY cikkszamHAVING SUM(mennyiseg*egysegar)>0ORDER BY cikkszam;

Példa: Minden rendelt árucikkre vonatkozóan értékeljük ki a legkisebb, legnagyobb mennyiséget, értéket, értékösszeget, a mennyiségek összegét és a tételek számát. Az egészet rendezzük a cikkszámok növekvő sorrendjébe és zárjuk ki az eredményből azon sorokat, amelyekben a tételek értékeinek összege nem pozitív!

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

12

Az SQL utasításaiAz SQL utasításaiLekérdezések 5.Lekérdezések 5.

További lehetőségek:

Táblák összekapcsolása Táblák egyesítése (UNION)Táblák metszete (INTERSECT)Táblák különbsége (EXCEPT vagy MINUS)Táblák összekapcsolása alá- fölé rendeléssel (alkérdéssel)Táblák külső összekapcsolása (INNER JOIN, OUTER JOIN)

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

13

Az SQL utasításaiAz SQL utasításaiAdatkarbantartó utasításokAdatkarbantartó utasítások

INSERT új rekordok beviteleúj rekordok bevitele

UPDATE rekordok tartalmának megváltoztatásarekordok tartalmának megváltoztatása

DELETE rekordok törléserekordok törlése

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

14

Adatbázis-lekérdezés SQL nyelvenAdatbázis-lekérdezés SQL nyelven

VégeVége