200 likes | 350 Views
Adatbázisok gyakorlat. 8. gyakorlat. SQL alapok. 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
E N D
Adatbázisok gyakorlat 8. gyakorlat SQL alapok
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 Antal Gábor
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 Antal Gábor
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) Antal Gábor
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 Antal Gábor
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!) Antal Gábor
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 Antal Gábor
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] ; Antal Gábor
SQL Adattípusok • A tábla attribútumainak adattípusai az alábbiak lehetnek: (Leggyakrabban használtak) Antal Gábor
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, Antal Gábor
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 Antal Gábor
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 Antal Gábor
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 Antal Gábor
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; Antal Gábor
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) Antal Gábor
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’; Antal Gábor
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) Antal Gábor
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. Antal Gábor
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 <felhasználó> (alapértelmezés szerint: root) Antal Gábor
Megjegyzések • Feladatgyűjtemény: • pub/Adatbazisok/feladatok_v1.1.pdf • Adatbázisok. Előadás jegyzet, • www.inf.u-szeged.hu/~katona, • pub/Adatbázisok/ • Cser Lajos diái alapján Antal Gábor