180 likes | 499 Views
SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák , adatok kezelésének alapjai. Bevezetés. SQL: Structured Query Language – Strukturált Lekérdező Nyelv Szabvány határozza meg, azonban számos “ nyelvjárása ” létezik – egy ilyen a MySQL rendszerben használt változat ( ezt vesszük )
E N D
SQL ALAPOK Bevezetés A MYSQL szintaxisa Táblák, adatokkezelésénekalapjai
Bevezetés • SQL: Structured Query Language – StrukturáltLekérdezőNyelv • Szabványhatározza meg, azonbanszámos “nyelvjárása” létezik – egyilyen a MySQL rendszerbenhasználtváltozat(eztvesszük) • Nincsjelentőseltérés a különbözőváltozatokközt • Nemalgoritmikusnyelv, jellemzőhasználata: • Beágyazzukegyalgoritmikusnyelvenírtprogrambaaz SQL-utasítást • Az SQL-utasításhatásáraazadatbáziselőáll a válasszal • Azalgoritmikusnyelveníródóprogrambanfeldolgozzukazadatokat
Az SQL kétrésze • Az SQL-utasításokat a jellegükalapjánkétrészreosztjuk
Az SQL szintaxisa • “Beszédes” nyelv, azutasításokneveáltalában a megfelelőangolszó, ezekbőlalkotunk “mondatokat” • a nyelvalapszavaitáltalábannagybetűkkelírjuk, de a kisbetűsírásmód is egyenértékű • A parancsokatírhatjuksorfolytonosan, vagyakártagoltabban, a végüket ; jelzi • Változónincs, csakattribútumorkralehethivatkozni – ha egyutasításonbelülnemegyértelmű, mire, elérírjuk a táblanevét: tábla.attrib
Az SQL szintaxisa, SQL Logika • Szövegkonstans: ‘idézőjelekközt’ • Relációjelek: =, <=, >=, !=, <> • A logikábanszokásosműveletek: AND, OR, NOT. • Az SQL logikanem a klasszikus “igaz-hamis” logika, hanemúgymondháromértékű: TRUE, FALSE, UNKNOWN. • Ha valahol NULL (“nemdefiniált, nemadott”) értékfordulelő, a rávonatkozólogikaikifejezéskiértékeléseismeretlent ad válaszul • Ha aztakarjukellenőrizni, hogyegyadottatttribútum NULL-e, akkor: • attrib IS NULL • NEM fog helyesválasztadni: attrib=NULL
Adatbázislétrehozása • CREATE DATABASE adatbázis_neve; • Létrehozegyúj, üresadatbázist a kiszolgálón (pl. kiadható a konzolon.) • Konzoloselérésnél a USE adatbázis_neve; paranccsallehetkiválasztaniegyadatbázist, programozásikörnyezetekbőlelérveáltalábanvalamilyenmetódushívással.
Sémákdefiniálása • A relációsadatbázissémákatdefiniálnunkkellazadatbázislétrehozásautá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áblaszintű_megszorítások}] ) [{táblára_vonatkozó_megszorítások}];
SQL adattípusok • a korábbiparancsban {adattípus} helyére a következőkvalamelyikekerül: • (léteziknéhányegyébadattípus is)
Példa: TÁBLA DEFINIÁLÁSA • Egyautókadataittárolótáblátígydefiniálnánk: CREATE TABLE IF NOT EXISTS auto ( sorszam INT(10) PRIMARY KEY, rendszam CHAR(6), gyarto VARCHAR(128), evjarat INT(4), tipus VARCHAR(128) ); Elsődlegeskulcs
MEgszorítások • Oszlopszinten: • PRIMARY KEY – elsődlegeskulcs • UNIQUE – kulcs • REFERENCES más_tábla(attrib) [{ON-feltételek}] – külsőkulcs • NOT NULL – nemlehet null • AUTO_INCREMENT – mindignövekszikazértéke • Táblaszinten: • PRIMARY KEY (oszlop_lista) – ha többattribútumbóláll a kulcs • FOREIGN KEY (oszlop_lista) REFERENCES másik_tábla(oszlop_lista) [{ON-feltételek}] – hasonlóan
MEgszorítások • ON feltételek: külsőkulcsoknálmegadható, hogytörténjen-e valamiazaktuálistáblában, ha a táblában, aholelsődlegeskulcskéntfordulelőazattribútum, valamilyenváltozásáll be – pl. ha egyvevőttörölnekegyadatbázisból, elérhetőígy, hogyautomatikusantörlődjönazösszesvásárlása is. • ON UPDATE CASCADE – adatmódosításnál a frissadatbemásolódik • ON DELETE CASCADE – ha törlik a hivatkozott sort, törlődnek a ráhivatkozósorok is • ON DELETE SET NULL – a hivatkozottsortörlésekor a hivatkozósorokban NULL kerül a külsőkulcsba
Táblákmódosítása • Létrehozásutánlehetőség van a tábákszerkezetén, kulcsain, kapcsolatainváltoztatni – valaminttörölhetők • ALTER TABLE tábla_neve ADD (oszlopnév {TÍPUS} [{feltételek}]); • ALTER TABLE tábla_neve MODIFY (oszlopnév [{feltételek}]); • ALTER TABLE tábla_neve DROP(oszlopnév1, …, oszlopnévk); • DROP TABLE tábla_neve;
ADATBEVITEL • INSERT INTO tábla_neve VALUES ({azoszlopokértékeiazújrekordban}); • ha csaknéhányoszlopottöltenénkfel, és a többimaradjon null: INSERT INTO tábla_neve (oszlop1,…,oszlopk) VALUES (érték1,…,értékk); • Például: INSERT INTO hallgato (eha, nev, szak, eletkor) VALUES (‘mintaat.sze’, ‘MintaÁron’, ‘programtervezőinformatikus BSc’, 22);
Adatmódosítás UPDATE tábla_neve SET oszlop1 = érték1, …, oszlopk = értékk [WHERE feltétel]; A WHERE feltételbenvalamilyenfeltételtkellmegadniarra, melysorokmódosuljanak. Példa: UPDATE hallgato SET eletkor=23 WHERE eha=‘mintaat.sze’;
Adatoktörlése DELETE FROM tábla_neve [WHERE feltéltel]; Törli a feltételszerinti sort vagysorokatazadotttáblából Példa: Töröljük a hallgatókat, akiknek 34 és 40 köztiazéletkoruk: DELETE FROM hallgato WHERE eletkor BETWEEN 34 AND 40;
FELADATOK Osztály (osztálykód, osztálynév, vezAdószám) Dolgozó (adószám, név, lakcím, fizetés, osztálykód) 6.1 Hozzuklétre a sémákfelettitáblákat! Hogyanadnánk meg, hogyvezAdószámkülsőkulcs? 6.2 Szúrjunk be a ‘hulladékgatdálkodási’ osztályt, ésegyújdolgozóterreazosztályra. Nevezzük is kiosztályvezetőnek. 6.3 Növeljükazösszes 10 és 20 köztiosztálykódúdolgozófizetését 20%-kal. 6.4 KovácsMártanyugdíjbament. Töröljükazadatait. 6.5 Töröljükki a ‘hulladékgazdálkodási’ osztályt.