dql

48
DQL

Upload: lillith-gray

Post on 01-Jan-2016

20 views

Category:

Documents


0 download

DESCRIPTION

DQL. A select parancs az adattábla lekérdezésére szolgál, azaz a táblában tárolt adatok közül az előírt feltételeknek megfelelőket kiválogatja. Formája (egyszerű esetben): SELECT mezőnév1[, mezőnév2,...] FROM táblanév 1 [,táblanév2,..] [ WHERE feltétel]; - PowerPoint PPT Presentation

TRANSCRIPT

DQL

A select parancs az adattábla lekérdezésére szolgál, azaz a táblában tárolt adatok közülaz előírt feltételeknek megfelelőket kiválogatja.Formája (egyszerű esetben): SELECT mezőnév1[, mezőnév2,...] FROM táblanév1[,táblanév2,..] [WHERE feltétel];

A [] az opcionális (választható) részeket mutatja. A SELECT kulcsszó utáni mezőnevek határozzák meg, hogy melyik oszlop adatai jelennek megaz eredményben. Tetszőleges számú oszlopadható meg, vagy a „*” jellel az összes oszlopkiválasztható.

A FROM kulcsszó utáni táblanév, ill. táblanevek adja meg, hogy melyik táblá(k)ra vonatkozik a lekérdezés.

Az opcionális (válaszható) WHERE záradék határozza meg a kulcsszó utáni logikai feltétel alkalmazásával azt, hogy mely rekordok adatailesznek benne az eredményben. Amelyikrekordra a feltétel teljesül,annak kijelölt mezői a lekérdezés eredményében megjelennek.

A WHERE záradékban használható relációk:= , > , < , >= , <= , <> , predikátumok

A predikátumok a feltételek egyszerűbb megadását segítik. IS – egyenlőség feltétel (pl.:IS NULL)LIKE – mintaillesztő operátor. olyan rekordok adatai választhatók ki, amelyek „hasonlóak” egy megadott mintához. A "%" jel használható joker-karakterként. (pl.: LIKE 'Er%'; )BETWEEN alsóérték AND felsőérték a határok közötti értékkel rendelkező sorok kerülnek kiválasztásra (pl.BETWEEN 50 AND 100)IN (értéklista)– értékegyezés vizsgálat (pl.:IN (’1’,’2’)

Alkalmazott tábla:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

Alkalmazott:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, város FROM alkalmazott; EREDMÉNY????

SELECT knév, vnév, város FROM alkalmazott;

John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT vnév, város, kor FROM alkalmazott WHERE kor > 30;

Alkalmazott:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT vnév, város, kor FROM alkalmazott WHERE kor > 30;

John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary An Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, város, állam FROM alkalmazott WHERE knév LIKE 'J%';

Alkalmazott:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, város, állam FROM alkalmazott WHERE knév LIKE 'J%';

John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, kor FROM alkalmazott WHERE vnév LIKE '%illia%';

John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, kor FROM alkalmazott WHERE vnév LIKE '%illia%';

John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, FROM alkalmazott WHERE kor BETWEEN 30 AND 40;

Alkalmazott:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, FROM alkalmazott WHERE kor BETWEEN 30 AND 40;

Alkalmazott:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT vnév,kor FROM alkalmazott WHERE város IN (‘Payson’, ‘Bagdad);

Alkalmazott:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT vnév,kor FROM alkalmazott WHERE város IN (‘Payson’, ‘Bagdad),

Alkalmazott:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend ArizonaGus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

Matematikai műveletek Az ANSI SQL-92 szabvány a következőalapműveleteket tartalmazza + , - ,* , /Logikai műveletek feltételekben SELECT mezőnév-listaFROM táblanév-lista WHERE feltétel1 AND feltétel2; Az AND (ÉS) művelet két v. több feltétel egyidejű teljesülését kívánja meg, az OR (VAGY) viszont bármelyik feltétel teljesülésekor igaz eredményt ad.

Összesítő függvények MIN adott oszlop legkisebb értékeMAX adott oszlop legnagyobb értékeSUM numerikus oszlop értékeinek összegeAVG adott oszlop értékeinek átlagaCOUNT adott oszlop értékeink darabszámaCOUNT(*) sorok száma egy táblában

Az összesítő függvények ”számértéket tartalmazó oszlopot” képeznek.Ez nem egy meglévő oszlop, hanem a SELECTparancs hatására jön létre!

A GROUP BY záradék A GROUP BY záradék összegyűjti azon sorok adatait amelyek adatot tartalmaznak a kijelölt oszlopokban és lehetővé teszi összesítő függvények kiértékelését ezeken az adatokon.SELECT mezőnév1, összesítő_fv(mezőnév2)FROM táblanév-listaGROUP BY mezőnév-lista;Példa:SELECT AVG(kor)FROM alkalmazottGROUP BY város;Ez az utasítás az alkalmazott tábla rekordjait városonként csoportosítja és minden csoportra kiszámítja a kor mező átlagértékét, azaz megadja az alkalmazottak átlagos életkorát városonként.

A HAVING záradékSELECT mezőnév1, összesítő_fv(mezőnév2)FROM táblanév-listaGROUP BY mezőnév-listaHAVING feltétel; A HAVING záradék azt teszi lehetővé, hogyfeltételt adjunk meg a csoportokra vonatkozólag.Mindig a GROUP BY záradék után következik!Ismét egy példa:Az alkalmazott tábla tartalmazza az alkalmazott nevét, az osztályt ahol dolgozik, fizetését és életkorát.Ha az egyes osztályokon dolgozók átlagfizetése érdekel bennünket, a következő lekérdezés kell:

SELECT osztály, AVG(fizetés)FROM alkalmazottGROUP BY osztály;

Amennyiben csak akkor érdekes azátlagfizetés, ha 20000 fölött van, írjuk a következőt:SELECT osztály, AVG(fizetés)FROM alkalmazottGROUP BY osztályHAVING AVG(fizetés) > 20000;

Az ORDER BY záradékSELECT mezőnév-listaFROM táblanév-listaORDER BY mezőnév-lista [ASC | DESC]; [ ] = opcionális

Az ORDER BY egy opcionális záradék amely a lekérdezés eredményét rendezi egy v. több oszlop szerint növekedő v. csökkenő sorrendbe.ASC = növekedő sorrend, alapértelmezettDESC = csökkenő sorrend

Alkalmazott tábla:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend California Gus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, kor+5 FROM alkalmazott WHERE knév LIKE ’Eric%’ AND állam=‘Arizona’;

Alkalmazott tábla:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend California Gus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 65 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, kor+5 FROM alkalmazott WHERE knév LIKE ’Eric%’ AND állam=‘Arizona’;

Alkalmazott tábla:

knév vnév kor város állam John Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend California Gus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe Arizona

SELECT knév, vnév, kor FROM alkalmazott ORDER BY kor DESC;

knév vnév korErica Williams 60 Mary Ann May 52John Jones 45Ginger Howell 42 Gus Gray 35 Eric Edwards 32Mary Ann Edwards 32Mary Jones 25Sebastian Smith 23Leroy Brown 22Elroy Cleaver 22

SELECT knév, vnév, kor FROM alkalmazott ORDER BY kor DESC;

Alkalmazott tábla:

knév vnév kor város állam Elroy Cleaver 22 Globe Arizona Leroy Brown 22 Pinetop ArizonaJohn Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend California Gus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low Arizona

SELECT * FROM alkalmazott ORDER BY állam,kor;

knév vnév kor város állam Erica Williams 60 Show Low Arizona

Mary Ann May 52 Tucson Arizona John Jones 45 Payson ArizonaGinger Howell 42 Flagstaff ArizonaGus Gray 35 Bagdad Arizona Mary Ann Edwards 32 Phoenix Arizona Mary Jones 25 Payson ArizonaLeroy Brown 22 Pinetop ArizonaElroy Cleaver 22 Globe ArizonaEric Edwards 32 San Diego CaliforniaSebastian Smith 23 Gila Bend California

SELECT * FROM alkalmazott ORDER BY állam,kor DESC;

Alkalmazott tábla:

knév vnév kor város állam Elroy Cleaver 22 Globe Arizona Leroy Brown 22 Pinetop ArizonaJohn Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend California Gus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low Arizona

SELECT állam, AVG (kor) FROM alkalmazott GROUP BY állam;

állam AVG(kor)Arizona 41,6California 37,8

SELECT állam, AVG (kor) FROM alkalmazott GROUP BY állam;

Alkalmazott tábla:

knév vnév kor város állam Elroy Cleaver 22 Globe Arizona Leroy Brown 22 Pinetop ArizonaJohn Jones 45 Payson ArizonaMary Jones 25 Payson ArizonaEric Edwards 32 San Diego CaliforniaMary Ann Edwards 32 Phoenix ArizonaGinger Howell 42 Flagstaff ArizonaSebastian Smith 23 Gila Bend California Gus Gray 35 Bagdad ArizonaMary Ann May 52 Tucson ArizonaErica Williams 60 Show Low Arizona

SELECT állam,MAX( kor) FROM alkalmazott GROUP BY állam HAVING MAX(kor)>35;

állam MAX(kor)Arizona 60

SELECT állam,MAX( kor) FROM alkalmazott GROUP BY állam HAVING MAX(kor)>35;

A select összefoglalás:A SELECT parancshoz öt fontosabb záradék kapcsolható, amelyek közül egyetlen, a FROM a kötelező.Minden záradék számos opciót, paraméterttartalmaz.A SELECT záradékos formája: SELECT [ALL | DISTINCT] mezőnév1[,mezőnév2 …] matematikai műveletek, aggregáló fv.FROM táblanév1[,táblanév2…][WHERE feltételek] logikai műveletek[GROUP BY mezőnév-lista][HAVING feltételek][ORDER BY mezőnév-lista [ASC | DESC] ]

DDL

A create table parancs új adattáblát hoz létre.Egyszerű formája: CREATE TABLE táblanév(mezőnév1 adattípus, [mezőnév2 adattípus, …mezőnévn adattípus]);Ha opcionális megszorításokat is alkalmazunk: CREATE TABLE táblanév(mezőnév1 adattípus [megszorítás],[mezőnév2 adattípus [megszorítás], …mezőnévn adattípus [megszorítás]); [ ] = opcionális Tetszőleges számú oszlop adható meg.

Megszorítások: Amikor táblákat hozunk létre gyakori, hogy egy vagy több oszlopára olyan előírásokat teszünk, amelyek korlátozzák a beírható adatokat. - UNIQUE (egyedi) megszorítást, ami azt jelenti, hogy nem lehet két v. több olyan rekord, ami az adott oszlopban azonos adatot tartalmaz.-NOT NULL megszorítás , ami kizárja hogy az oszlop üresen maradjon.-Pl.:CREATE TABLE alkalmazott (alk_azon NUMBER(5) NOT NULL UNIQUE);

A tábla elsődleges kulcsát a PRIMARY KEY megszorítással jelezzük.CREATE TABLE alkalmazott (alk_azon NUMBER(5) NOT NULL UNIQUE,knév VARCHAR(15), vnév VARCHAR(20),kor NUMBER(3), cím VARCHAR(30),város VARCHAR(20), állam VARCHAR(20),PRIMARY KEY (alk_azon));

-FOREIGN KEY (idegen kulcs) -PL.CREATE TABLE forgalom (eladó NUMBER(5) NOT NULL,számlaösszeg NUMBER(6),FOREIGN KEY(eladó)REFERENCES alkalmazott(alk_azon));

Az idegen kulcs megszorításban meg kell nevezni azt a mezőt, amely az idegen kulcsot tartalmazza és azt is, hogy az adott mezőnek a másik táblában mi a neve.

A drop table parancs egy adattábla és összes sorának törlésére szolgál.Formája: DROP TABLE táblanév Példa: DROP TABLE alkalmazott; A tábla törléséhez a DROP TABLE kulcsszó után meg kell adni a törlendő tábla nevét.A DROP TABLE hatása nem azonos a tábla összes rekordjának törlésével, mert ez az oszlopokra vonatkozó minden információt, a megszorításokat is törli, vagyis a teljes tábla-definíció is megszűnik.

Táblák összekapcsolásaSELECT parancssal

• SELECT mezőnév1, mezőnév2, ..., táblanévN.mező   FROM táblanév1, táblanév2, ..., táblanévN   WHERE kapcsolómező(minősített) operátor(feltétel) kapcsolómező;

Táblák összekapcsolásaINNER JOIN parancssal(belső)

• SELECT táblanév1.mezőnév, táblanév2.mezőnév, ...   FROM táblanév1 INNER JOIN táblanév2   ON táblanév1.kulcsmező = táblanév2.kulcsmező;

Táblák összekapcsolásaLEFT(RIGHT) JOIN parancssal(külső)

• SELECT táblanév1.mezőnév, táblanév2.mezőnév, ...   FROM táblanév1 INNER JOIN táblanév2   ON táblanév1.kulcsmező = táblanév2.kulcsmező;

Halmazműveletek

Unió SELECT.. UNION SELECT

Metszet SELECT.. INTERSECT SELECT

Különbség SELECT ...MINUS SELECT ...

DML

Az insert into parancs új sort (rekordot) ad a táblához:INSERT INTO táblanév(első mezőnév [,...utolsó mezőnév])VALUES (első érték,[...utolsó érték]); [] = opcionális Figyelem: a mezőnevek közül kizárólag azokat kell felsorolni, amelyeknek értéket adunk, vagyis nem kell a rekord összes mezőnevét megadni! Példa:INSERT INTO alkalmazott(knév, vnév, kor, város, állam)VALUES ('Luke', 'Duke', 45, 'Hazard Co','Georgia');

Az update parancs adattábla azon rekordjainak megváltoztatására, frissítésére szolgál, amelyekkielégítik az előírt feltételeket. A feltételeket a WHERE záradék tartalmazza. Formája:UPDATE táblanévSET mezőnév = új érték[,következő mezőnév = köv. új érték...]WHERE mezőnév OPERATOR érték

A delete parancs rekordok törlésére szolgál.Formája:DELETE FROM táblanévWHERE mezőnév OPERATOR érték[and|or mezőnév OPERATOR érték]; [ ] = opcionális Példák: DELETE FROM alkalmazott;Figyelem: ha nincs WHERE záradék, minden rekord törlődik!

DELETE FROM alkalmazottWHERE vnév = 'May';

DELETE FROM alkalmazottWHERE knév = 'Mike' OR knév = 'Eric';