1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 8. gyakorlat SQL alapok
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor2Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor2 Késések/Hiányzások •Hiányzás –Két igazolatlan hiányzás megengedett –Orvosi igazolást a hiányzást követő órán kell bemutatni •Késések –Ha valaki nem írja alá a katalógust, óra végén jelezze, hogy késett, és nem tudta aláírni, ebben az esetben aláírhatja –Ha valaki nem jelzi a gyakorlata végén, akkor a katalógus szerint nem volt jelen, így arról a gyakorlatról hiányzott
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor3Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor3 SQL •Structured Query Language – Strukturált Lekérdezőnyelv •Relációs adatbázis-kezelők lekérdezési nyelve •Számtalan „nyelvjárása” létezik (MySQL-hez tartozót vesszük) •Nem algoritmikus nyelv –Beágyazzuk egy algoritmikus nyelven írt programba az SQL- utasítás(oka)t –Megkapjuk az adatbázis-kezelőtől a választ a lekérésünkre –A programban feldolgozzuk az eredményt •Két részre bonthatók: –DDL – Data Definition Language – adatdefiníciós nyelv –DML – Data Manipulation Language – adatkezelő utasítások
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor4Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor4 SQL Szintaxis •„Beszédes” nyelv •Utasítások neve általában a megfelelő angol szó, ezekből képzünk „mondatokat” •A parancsok végét pontosvessző jelzi •Lehet tagoltan, vagy ömlesztve írni a parancsokat •Alapszavakat általában nagybetűvel írjuk, de a kisbetűs írásmód is működik –SELECT * FROM dolgozo; == select * from dolgozo; •Változók nincsenek, csak attribútumra hivatkozhatunk •Ha nem egyértelmű a hivatkozás, akkor a tábla nevét az attribútum neve elé kell írni – dolgozo.nev (A dolgozó tábla név attribútuma)
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor5Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor5 SQL Szintaxis, SQL Logika •Szövegkonstans idézőjelek között: ‘szöveg’ •Relációjelek – <>, !=, = nem egyenlő, nem egyenlő, egyenlő – = kisebb egyenlő, nagyobb egyenlő –BETWEEN x AND y [x,y] intervallum közti érték •Az SQL logika háromértékű: –TRUE, FALSE, UNKNOWN
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor6Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor6 NULL •Egy attribútum értéke NULL, ha az nem definiált, nem beállított (de nem üres) •Ha valahol nem definiált (azaz NULL) érték szerepel, ott a vonatkozó kifejezés értéke ismeretlen lesz •Attribútum ellenőrzése, hogy NULL-e: –attributum IS NULL –attributum=NULL (ROSSZ!! NEM AD HELYES VÁLASZT!)
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor7Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor7 Adatbázis létrehozása •CREATE DATABASE valami; •Létrehoz egy üres adatbázist „valami” néven •Konzolban, a parancs kiadása után USE valami; paranccsal választani adatbázist, programozási környezetekből metódushívással
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor8Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor8 Tábla létrehozása •Sémák feletti táblák létrehozása (Az adatbázis létrehozása, és kiválasztása után): CREATE TABLE [IF NOT EXISTS] séma_neve( attr1 {adattípus} [MEGSZORÍTÁSOK], attr2 {adattípus} [MEGSZORÍTÁSOK],... attrn {adattípus} [MEGSZORÍTÁSOK], ) [TÁBLA MEGSZORÍTÁSOK] ;
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor9Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor9 SQL Adattípusok •A tábla attribútumainak adattípusai az alábbiak lehetnek: (Leggyakrabban használtak) INT(n)n jegyű egész szám CHAR(n)pontosan n hosszú szöveg VARCHAR(n)maximum n hosszú szöveg DATEdátum, pl.: TIMEidő, pl.: 15:44:10 REALvalós szám... (egyebek)
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor10Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor10 Példa séma létrehozására CREATE TABLE IF NOT EXISTS auto ( sorszam INT(10) PRIMARY KEY, rendszam CHAR(6), gyarto VARCHAR(128), evjarat INT(4), tipus VARCHAR(128) ); Ez létrehoz az adatbázisban egy auto nevű sémát, attribútumai: •sorszam: egy 10 jegyű egész szám, amely elsődleges kulcs, •rendszam: pontosan 6 hosszúságú szöveg •gyarto: maximum 128 karakternyi szöveg, •evjarat: 4 jegyű szám, •tipus: maximum 128 karakternyi szöveg,
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor11Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor11 Megszorítások •Attribútum szinten: –PRIMARY KEY – elsődleges kulcs –UNIQUE – kulcs –REFERENCES más(attr) [{ON-feltételek}] – külső kulcs –NOT NULL – nem lehet NULL az értéke –AUTO_INCREMENT – automatikusan növekvő szám –DEFAULT – alapértelmezés szerinti érték •Táblaszinten: –PRIMARY KEY – elsődleges kulcs (ha több attribútumból áll) –FOREIGN KEY (oszlop_lista) REFERENCES másik_tábla(oszlop_lista) [{ON-feltételek}] – külső kulcs (hasonlóan,mint előbb) –ENGINE – milyen tárolási módot használjon az adott tábla
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor12Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor12 Megszorítások •ON feltételek: Az ON feltételeknél megadható, mi történjen (történjen-e valami egyáltalán) az adott táblában akkor, ha a táblában (ahol elsődleges kulcsként szerepel az attribútum) valamilyen változás történik. –ON UPDATE CASCADE – módosításnál a módosított adat bemásolódik –ON DELETE CASCADE – ha a hivatkozott sort törlik a rá hivatkozó sorok is automatikusan törlésre kerülnek –ON DELETE SET NULL - ha a hivatkozott sört törlik, a rá hivatkozó sorokban NULL kerül a külső kulcs helyére
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor13Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor13 Példa megszorításra •Például: Kitörlünk egy autógyártót (X) az adatbázisból, akkor –vele együtt törlődjön ki az összes nyilvántartott autó, amelyek gyártója X, –állítódjon NULL-ra azoknak az külső kulcsoknak az értéke, ahol eredetileg X volt
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor14Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor14 Táblák módosítása Lehetőség van a már létrehozott táblákon is különböző módosításokat eszközölni: •Oszlop (attribútum) hozzáadása: –ALTER TABLE tbl ADD (oszlopnév {TÍPUS} [{feltételek}]); •Oszlop módosítása: –ALTER TABLE tbl MODIFY (oszlopnév [{feltételek}]); •Oszlop törlése: –ALTER TABLE tbl DROP(oszlopnév1, oszlopnévk); •Tábla törlése: –DROP TABLE tbl; •Adatábázis törlése: –DROP DATABASE db;
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor15Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor15 Adatbevitel •Beszúrás, a teljes rekord értékét megadva: –INSERT INTO tbl VALUES({oszlopok értékei}); •Ha csak néhány értéket szeretnénk beállítani (a többi NULL): –INSERT INTO tbl(attr1) VALUES(ertek1); •Például: –INSERT INTO hallgato VALUES (‘mintaat.sze’, ‘Minta Áron’, ‘mérnökinformatikus BSc’, 22); –INSERT INTO hallgato (eha, nev) VALUES(‘mintaat.sze’, ‘Minta Áron’); Hallgato(eha, nev, szak, eletkor)
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor16Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor16 Adatmódosítás UPDATE hallgato SET oszlop1 = érték1 oszlop2 = érték2 [WHERE (feltételek)]; •WHERE-ben az(oka)t a feltétel(eke)t kell beírnunk, aminek teljesülése esetén szeretnénk végrehajtani az adatmódosítást (rekordonként) •pl.: UPDATE hallgato SET nev = ‘Minta Adam’ WHERE eha = ‘mintaat.sze’;
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor17Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor17 Adattörlés DELETE FROM tbl [WHERE feltétel]; •Törli a feltétel szerinti sor(oka)t az adott táblából •pl.: DELETE FROM hallgato WHERE eletkor > 10; (törli azokat a hallgatókat, akiknek az életkoruk több, mint 10)
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor18Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor18 Feladat Osztály (osztálykód, osztálynév, vezAdószám) Dolgozó (adószám, név, lakcím, fizetés, osztálykód) •Hozzuk létre a sémák feletti táblákat! Hogyan adnánk meg, hogy vezAdószám külső kulcs? •Szúrjunk be egy új dolgozót. •Növeljük az összes 10 és 20 közti osztálykódú dolgozó fizetését 20%-kal. •Kovács Márta nyugdíjba ment. Töröljük az adatait. •Töröljük ki a ‘hulladékgazdálkodási’ osztályt, miután módosítottunk úgy a táblá(ko)n, hogy osztály törlésekor az összes ott dolgozó is törlődjön.
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor19Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor19 XAMPP MySQL konzol •Számítógép Tulajdonságok Speciális Rendszerbeállítások Speciális Környezeti változók –PATH változó szerkesztése, a végére beszúrjuk (pontosvesszővel elválasztva): •c:\xampp\mysql\bin\ •Ezek után nyissunk egy új cmd-t –mysql -h localhost -u (alapértelmezés szerint: root)
Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor20Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor20 Megjegyzések •Feladatgyűjtemény: –pub/Adatbazisok/feladatok_v1.1.pdf •Adatbázisok. Előadás jegyzet, – –pub/Adatbázisok/ •Cser Lajos diái alapján