STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Hasonló dokumentumok
Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

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

Adatbázisok* tulajdonságai

Adatbázis kezelés Delphiben. SQL lekérdezések

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

BEVEZETÉS Az objektum fogalma

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázis-kezelés. Harmadik előadás

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

SQL parancsok feldolgozása

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Adatbázis-kezelés, információs-rendszerek

Adatbázis rendszerek SQL nyomkövetés

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Adatbázis Rendszerek II. 8. Gyakorló környezet

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

Több tábla összekapcsolásán alapuló lekérdezések

Bevezetés: az SQL-be

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

Többtáblás lekérdezések megjelenítése

B I T M A N B I v: T M A N

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

Több tábla összekapcsolásán alapuló lekérdezések. Copyright 2004, Oracle. All rights reserved.

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Java és web programozás

Adatbázisok II. rész

Készítette: Szabóné Nacsa Rozália

Adatbázis, adatbázis-kezelő

Gazdasági folyamatok térbeli elemzése. 5. elıadás

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

Adatbázisok I. Az SQL nyelv

Adatbázisok elmélete 9. előadás

Adatbázisok I A relációs algebra

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázis használat I. 5. gyakorlat

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

Adatbázisok elmélete 9. előadás

Adatbázis használat I. 2. gyakorlat

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Keskeny Zoltán 2007/08 SQL. Structured Query Language. (gyakorlat az SQL2 szabvány alapján) Keskeny Zoltán tanév

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Access XP alapokon Tartalomjegyzék

Java és web programozás

Elemi alkalmazások fejlesztése IV.

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Adatbázisok elmélete 10. előadás

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

ADATBÁZISKEZELÉS ADATBÁZIS

BUJDOSÓ GYÖNGYI. Bevezetés az SQL-be OKTATÁSI SEGÉDANYAG AZ ADATBÁZISKEZELÉS CÍMŰ GYAKORLATHOZ DEBRECENI EGYETEM INFORMATIKAI KAR

Access alapok. Megnevezés Művelet Minta. Új adatbázis létrehozása. Új / Üres adatbázis.. Tábla létrehozása tervező nézetben.

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

A könyv tartalomjegyzéke

MySQL. Elektronikus jegyzet Széchenyi István Egyetem Távközlési tanszék

Ezek után már csak a Mentés és a Lekérdezés Futtatása (az ellenőrzés miatt) van hátra. Ügyeljünk, hogy a mentésnél a megadott (Kezd) nevet adjuk meg.

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

w w w. h a n s a g i i s k. h u 1

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

Webfejlesztés 4. alkalom

Lekérdezések az SQL SELECT utasítással

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

B I T M A N B I v: T M A N

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Access gyakorlati feladatok lépésről lépésre

Relációsémák létrehozása SQL nyelvben

Adatbázis használat I. 2. gyakorlat

Adatbázis rendszerek Ea: Esqúel. Structured Query Language

BEVEZETÉS Az objektum fogalma

4. Előadás Az SQL adatbázisnyelv

SELECT. SELECT(projekció) FROM(forrás) WHERE(szűrés) GROUPBY(csoportosítás) HAVING(csoportok szűrése) ORDERBY(rendezés)

A SELECT működése. Ttanar tábla: Tdiak tábla:

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

Adatbázisok (relációs, objektum relációs, NoSQL) Adatbáziskezelő rendszerek Adatbázisok felépítése Adatbázisok tervezése

Csoportosított adatok megjelenítése összesítı függvények használatával. Copyright 2004, Oracle. All rights reserved.

30 MB INFORMATIKAI PROJEKTELLENŐR ADATBÁZISOK MEGVALÓSÍTÁSA (ADATBÁZISOK, ADATBÁZISKEZELŐK, ADATBÁZISOK FELÉPÍTÉSE, ADATBÁZISOK TERVEZÉSE)

Az SQL adatbázisnyelv: DML

Átírás:

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK Az adatbázis-kezelők elvárásai közé tartozik az, hogy legyen egy olyan adatbázis-kezelőktől független nyelv, amely az adatdefiníciós, az adatmanipulációs és a lekérdező nyelvet ismeri. Ez a nyelv az Structured Query Language, röviden SQL. Nyelv elemei Adatdefiníciós nyelv (DDL Data Definition Language) Adatmanipulációs nyelv (DML Data Manipulation Langauge) Lekérdező nyelv (QUERY Language) Adatvezérlő nyelv (DCL Data Control Language) Adatdefiníciós nyelv (DDL Data Definition Language) Az DDL-hez azok az utasítások tartoznak, amelyekkel létrehozzuk a különböző típusú táblákat. A táblákat, ha szükséges módosítjuk vagy törölhetjük vele. Ahhoz, hogy hozzálássunk a táblák kialakításához, szükséges meghatároznunk azt, hogy a tábla egyes oszlopaiba milyen adatokat akarunk tárolni, vagyis milyen típusúak legyenek az oszlopok. A következő adattípusokat tudják az adatbázis-kezelők kezelni: Adattípusok Numerikus adatok Byte (1 byte) Decimal (12 byte) Integer (2 byte) Long (4 byte) Single(4 byte) Double (8 byte) 0-255 egész 10^28 1 és 10^28 1 (.mdb) 28 jegy pontosság 32 768 és 32 767 egész 2 147 483 648 és 2 147 483 647 egész Negatívnál: 3,402823E38 és 1,401298E 45 közötti, Pozitívnál: 1,401298E 45 és 3,402823E38 közötti, 7 jegy pontosság. Negatívnál: 1,79769313486231E308 és 4,94065645841247E 324 közötti; Pozitívnál: 4,94065645841247E 324 és 1,79769313486231E308 közötti számok tárolása; 15 jegy pontosság Text Szöveg vagy szövegből és számokból álló kombináció. Legfeljebb 255 karakter. Memo Hosszabb szöveg vagy szövegből és számokból álló kombináció. Legfeljebb 65535 karakter. Datetime Dátum és időértékek a 100. és a 9999. év között. (8 byte) Currency Pénzértékek és matematikai számításokban használt numerikus adatok legfeljebb négy tizedeshellyel. Pontossága 15 számjegy a tizedesjeltől balra, 4 számjegy a tizedesjeltől jobbra. (8 byte) Counter Egyedi sorszám (egyesével növekvő) vagy véletlenszerűen választott szám, amelyet a Microsoft Access ad meg. (4 byte) Yesno Igen és Nem érték, csak két érték (Igen/Nem, Igaz/Hamis, Be/Ki) valamelyikét tartalmazó mezők. (1 bit)

Adat tábla létrehozása: CREATE TABLE táblanév ( oszlopnév adattípus, [ oszlopnév adattípus, oszlopnév adattípus] ); A Create Tablekulcsszó után kötelező megadni a tábla nevét, ami nem tartalmazhat ékezetes betűket, majd zárójelben felsorolva az oszlopok, vagyis mezők nevét szintén ékezet nélkül az adattípus megadásával Elsődleges kulcs megadása CREATE TABLE tábla név (mező_neve típusa PRIMARY KEY) CREATE TABLE tanar ( tanar_id counter primary key, tanar_nev text ); Tábla módosítása: ALTER TABLE paranccsal. Ezzel új mező vagy megszorítás felvétele történhet meglévő táblába. Új oszlop hozzáadása: ALTER TABLE táblanév ADD mezőnév adattípus; ALTER TABLE tanar ADD cím text, fizetes currency; Oszlop törlése: ALTER TABLE táblanév DROP mezőnév; ALTER TABLE tanar DROP cím; Tábla törlése DROP TABLE táblanév;

DROP TABLE tanar1; Adat manipuláció (DML) Részei: Új adat felírása Adatok módosítása Adatok törlése Adatok felvitele: INSERT INTO táblanév (mező1, mező2,...mezőn) VALUES(konstans1, konstans2,..konstansn); INSERT INTO tanar ( tanar_nev, cim ) VALUES (5,'Nagy Jolán','Budapest XX. Ker. Juhar utca 2.'); Adatok módosítása UPDATE tábla név SET mező név=kifejezés WHERE feltétel A mezőt arra a kifejezésre fogja megváltoztatni, amit az = jel után írunk. Az alapértelmezés a teljes tábla. Ha szűkíteni akarjuk a változtatni kívánt mezőket, akkor a feltételek megadását használjuk. UPDATE tanar SET tanar_nev = 'Nagy Jolán' WHERE tanar_nev='kis Jolán'; Adatok törlése DELETE FROM táblanév (WHERE feltétel); Szükségtelen sorok törlése a táblából. Az alapértelmezés mindig a teljes tábla. Természetesen csak a tartalom. Ha feltételt is megadunk csak azok a rekordok törlődnek, amelyekre a feltétel igaz. DELETE FROM táblanév A teljes tábla tartalmának törlése. DELETE WHERE tanar_nev='nagy Jolán';

Lekérdező nyelv (QUERY Language) Az adatbázisokat azért használjuk, hogy a nagytömegű adathalmazainkból egyszerűen és gyorsan információkhoz jussunk. Az SQL nyelv legösszetettebb és legfontosabb része az az utasítás amely arra szolgál, hogy információkhoz jussunk. Ez a utasítás a SELECT. A lekérdezés utasítását nem csak önmagában használjuk, már az DDL-ben és a DML-ben is már megjelenhet. Szintaktikája: SELECT [ALL,DISTINCT, TOP n] mezőnév [AS aliasnév], *... FROM tábla név WHERE keresési feltétel GROUP BY csoportosítás HAVING csoporton belüli feltétel ORDER BY rendezési feltétel A kulcsszavak jelentése: ALL Minden sor megjelenik (ez az alapértelmezés). DISTINCT Azonos sorok csak egyszer jelenjenek meg. TOP n Az első n rekord jelenik meg. AS Alias név a fejlécben szereplő név. SELECT DISTINCT mező1, mező2 FROM TÁBLA A TÁBLA tábla mező1 és mező2 mezőknek tartalmát kilistázzuk, ha van olyan sor ami többször is szerepel a táblánkban csak egyszer fog megjelenni, ha mező1 és mező2-ben megegyeznek. Sokszor ha egy lekérdezést készítünk, nem csak azokra az adatokra vagyunk kíváncsiak amik a táblában vannak, hanem olyan adatokra amik a táblában lévő adatokból egy kifejezés eredményeként kapható. Az ilyen típusú adatokat számított adatoknak nevezzük. A mezőnevek helyett, ha * áll, akkor ez az összes mezőnevet jelenti. SELECT tanar_nev, cim ; Kiírja az egyezőket is. SELECT DISTINCT tanar_nev, cim ; Egyezők közül csak az elsőt írja ki. SELECT TOP 4 tanar_nev, cím, fizetes ; Csak az első 4-et írja ki. SELECT tanar_nev, cím, fizetes*1.2 ; Számított mező(fizetés 20%-os emelése). SELECT tanar_nev AS Név, cím AS Címe, fizetes*1.17 AS Fizetés ; ; Fejléc felirattal. A teljes tanar tábla megjelenítése. Feltételes lekérdezés, WHERE Amikor a sorok között akarunk válogatni, akkor alkalmazzuk a WHERE kulcsszót, amely után megadjuk azt a feltételt, amely alapján válogatni szeretnénk. A feltételek az SQL nyelvben a következők lehetnek:

Egyszerű összehasonlítás(=; <>; >; >=; <; <=) Összehasonlítás egy halmaz elemeivel (BETWEEN szám AND szám; IN(lista); LIKE karakterminta) Összetett keresési feltétel (NOT; AND; OR) WHERE fizetes>=134000; Kiírja azon rekordokat, ahol a fizetés nagyobb egyenlő 134000 Ft-nál. WHERE fizetes BETWEEN 120000 AND 150000; Kiírja azon rekordokat, ahol a fizetés 120000 Ft és 150000 Ft közötti. WHERE cim In ('Nagykanizsa','Zalaegerszeg'); Kiírja azon rekordokat, ahol a cím tartalma Nagykanizsa vagy Zalaegerszeg. WHERE tanar_nev LIKE '[A-C]*'; Kiírja azon rekordokat, ahol a név kezdőbetűje A és C közötti. WHERE (cím In ('nk','zeg')) And (fizetes Between 120000 And 150000); Kiírja azon rekordokat, ahol a cím tartalma Nagykanizsa vagy Zalaegerszeg és a fizetés 120000 Ft és 150000 Ft közötti. Csoportok képzése, GROUP BY A GROUP BY után megadott mező szerint csoportosít. Tulajdonképpen ez olyan, mint egy gyakoriság számítás, csak a témán belül nem csak a számlálás műveletét tudjuk elvégezni, hanem egyéb műveleteket is a különböző aggregát függvényekkel. Ilyenek: SUM; COUNT; AVG; MAX; MIN; SELECT cim, COUNT(tanar_id) AS Létszám GROUP BY cim; Összesíti a tanárokat cím(lakóhely) szerint. SELECT cim, SUM(fizetes) AS Összesen GROUP BY cim; Összesíti a tanárok fizetését cím(lakóhely) szerint. SELECT cim, MIN(fizetes) AS Minimális GROUP BY cim; Megadja a tanárok minimális fizetését cím(lakóhely) szerint.

SELECT cim, AVG(fizetes) AS Átlag GROUP BY cim; Megadja a tanárok átlagfizetését cím(lakóhely) szerint. SELECT cím, count(*) AS Tanárszám GROUP BY cím; Megadja, hogy lakóhelyek szerint hány tanár van. HAVING A HAVING a GROUP BY alparancsa. Amennyiben csak adott csoportokra vagyunk kíváncsiak, akkor a HAVING feltétel alparanccsal a GROUP BY-t megtoldva elérhetjük a feltételnek nem megfelelő sorok kiszűrését. SELECT cím, count(*) AS Tanárszám GROUP BY cím HAVING cím IN('Nagykanizsa','Zalaegerszeg'); Az előző (lakóhely szerinti) csoportosításból csak a Nagykanizsa és Zalaegerszeg csoport adatai jelennek meg. SELECT cím, AVG(fizetes) AS Átlag GROUP BY cím HAVING AVG(fizetes)<150000; Megadja azokat a lakóhelyeket ahol az átlagfizetés 150000 Ft alatt van. Rendezés, ORDER BY Amikor az eredmény listában megjelent adatokat valamelyik mező szerint rendezve akarjuk megjeleníteni, egészítsük ki a SELECT-et az ORDER BY kulcsszóval. A rendezésnél a mező neve után megadhatjuk a rendezés irányát: ASC (alapértelmezett) növekvő rendezés. DESC csökkenő rendezés WHERE fizetes BETWEEN 120000 AND 150000 ORDER BY tanar_nev DESC; Kiírja azon rekordokat, ahol a fizetés 120000 Ft és 150000 Ft közötti, tanárnév szerint csökkenően rendezve. Táblák összekapcsolása Az eddigi lekérdezéseinkben mindig egy táblát használtunk. Természetesen ezeket a műveleteket több táblán is el tudom végezni, és pontosan ez a célunk, hogy kapcsolatokat teremtsünk a táblák között és így egyszerre minél több információhoz jussunk.

SELECT Tábla1.oszlop, Tábla2.oszlop, FROM Tábla1,Tábla2 WHERE ELSÖDLEGES_KULCS_OSZLOP=IDEGEN_KULCS_OSZLOP Ha nincs összekapcsolva a két tábla,. a táblák Descartes szorzatát kapjuk eredményként. SELECT tanar.tanar_nev, tanar.cím, tantargy.targynev, tantargy, tanit WHERE tanar.tanar_id=tanit.tanar_id AND tanit.targy_id=tantargy.targy_id Kiírja a tanár nevét, címét, szakját. SELECT tanar.tanar_nev, COUNT(tanit.targy_id) AS Tárgy, tanit WHERE tanar.tanar_id=tanit.tanar_id GROUP BY tanar.tanar_nev Kiírja kinek hány szakja van. Összekapcsolás másként: A táblák összekapcsolására más lehetőségünk is van, mégpedig a JOIN használatával. Ennek három változata létezik, az INNER, a LEFT és a RIGHT JOIN. Az INNER JOIN segítségével olyan rekordokat kapunk vissza eredményül, amelyeknél a kulcsmezők tartalmaznak azonos értéket. Használata a következő: SELECT mezo1, mezo2, mezo3 FROM tabla1 INNER JOIN tabla2 ON tabla1.kulcsmezo= tabla2.kulcsmezo Ennek használatakor nem jelennek meg azok a rekordok, amelyeket tartalmaz a tabla1, de nincs hozzá tartozó érték a tabla2-ben. A LEFT JOIN használatakor a tabla1 (baloldali) táblában szereplő rekordok akkor is megjelennek, amikor nincs hozzá tartozó érték a tabla2 (jobboldali) táblában. Az utasítássorozat felépítése: SELECT mezo1, mezo2, mezo3 FROM tabla1 LEFT JOIN tabla2 ON tabla1.kulcsmezo= tabla2.kulcsmezo A RIGHT JOIN ugyanezt a terminológiát követi, csak éppen a tabla2-ben szereplő értékeket mutatja meg akkor is, amikor a tabla1-ben nincs neki megfelelő érték.

SELECT mezo1, mezo2, mezo3 FROM tabla1 RIGHT JOIN tabla2 ON tabla1.kulcsmezo= tabla2.kulcsmezo SELECT tanar.tanar_nev, COUNT(tanit.targy_id) AS Tárgy INNER JOIN tanit ON tanar.tanar_id=tanit.tanar_id GROUP BY tanar.tanar_nev Kiírja kinek hány szakja van INNER JOIN-nal. SELECT tanar.tanar_nev, COUNT(tanit.targy_id) AS Tárgy LEFT JOIN tanit ON tanar.tanar_id=tanit.tanar_id GROUP BY tanar.tanar_nev Kiírja kinek hány szakja van LEFT JOIN-nal. SELECT tanar.tanar_nev, COUNT(tanit.targy_id) AS Tárgy RIGHT JOIN tanit ON tanar.tanar_id=tanit.tanar_id GROUP BY tanar.tanar_nev Kiírja kinek hány szakja van RIGHT JOIN-nal.