Structured Query Language Struktúrált lekérdező nyelv A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai DDL (Data Definition Language) – adatstruktúra definiáló utasítások DML (Data Manipulation Language) – adatokon műveletet végző utasítások
‹#›
SQL szintaxis
Kisbetűk és nagybetűk egyenértékűek a nyelv alapszavaiban Utasítások sorfolytonosan írhatók, az utasítás végét ; jelzi Változók nincsenek, csak tábla- és oszlopnevekre lehet hivatkozni Pl. tábla.oszlop (ha a tábla egyértelmű, akkor elhagyható) Alias név: név AS újnév (nem mindenhol kötelező) Szövegkonstansok: ‘ jelek között ’ Relációjelek, logikai műveletek -> lásd. előadás
‹#›
Adatbázis létrehozása
Adatbázis létrehozása CREATE DATABASE adatbazis; Adatbázis használata pl. MySQL adatbáziskezelő rendszernél mysql> use adatbazis Innentől kezdve az összes SQL utasítás ezen az adatbázison lesz értelmezve (a következő „use” utasítás kiadásáig)
‹#›
INT(n): egész szám, n darab számjegy CHAR(hossz): hossz hosszú karaktersorozat, fix hosszú VARCHAR(hossz): változó hosszú, de maximálisan hossz hosszú karaktersorozat DATE: dátum pl. ’1988-11-25’ TIME: időpont(óra,perc,másodperc) pl. ’16:05:32’ REAL: valós szám BIT(hossz): hossz darab bit
‹#›
Feltételek
Feltételek (egy adott oszlopra vonatkoznak): PRIMARY KEY: elsődleges kulcs UNIQUE: kulcs REFERENCES tábla(oszlop)[ON-feltételek]:külső kulcs Táblafeltételek(az egész táblára vonatkoznak): PRIMARY KEY(oszloplista): elsődleges kulcs UNIQUE: kulcs FOREIGN KEY(oszloplisa)REFERENCES tábla(oszloplista): külső kulcs Ha a (külső) kulcs több oszlopból áll, akkor csak táblafeltétel formájában adható meg!
‹#›
Példa
Feladat: Hozzuk létre az OSZTÁLY(osztálykód, osztálynév, vezAdószám) DOLGOZÓ(adószám, név, lakcím, osztálykód)relációsémákat SQL-ben! CREATE TABLE Osztály ( osztálykód CHAR(3) PRIMARY KEY, osztálynév CHAR(20), vezAdószám DECIMAL(10) ); CREATE TABLE Dolgozó ( adószám DECIMAL(10) PRIMARY KEY, név CHAR(30), lakcím CHAR(40) DEFAULT ’ismeretlen’, osztálykód CHAR (3) REFERENCES Osztály(osztálykód) );
‹#›
Táblák módosítása
Új oszlop hozzáadása: ALTER TABLE táblanév ADD (oszlopnév típus[táblafeltétel]); Oszlop hozzáadása: ALTER TABLE táblanév MODIFY (oszlopnév[táblafeltétel]); Oszlopok törlése: ALTER TABLE táblanév DROP (oszlop,oszlop,...,oszlop);Az oszlopok törlését nem minden rendszer engedi meg. Tábla törlése: DROP TABLE táblanév;
‹#›
Táblák módosítása – példák
ALTER TABLE Dolgozó ADD (szüldátum DATE); ALTER TABLE Dolgozó MODIFY (lakcím VARCHAR(60)); ALTER TABLE Osztály MODIFY (vezAdószám REFERENCES Dolgozó(adószám));
‹#›
Új sor felvétele a táblába
INSERT INTO táblanév [(oszloplista)] VALUES (értéklista); Két fajtája: Amikor ismerünk minden adatot, és abban a sorrendben adjuk meg, ahogy a táblában a mezőnevek egymás után következnek:INSERT INTO Dolgozó VALUES (1111, ’ Tóth Aladár, ’Szeged, Kálvária tér 2.’, ’12’); Amikor a mezők sorrendjétől is függetlenül, akár csak néhány mező kitöltve adunk meg:INSERT INTO Dolgozó (név, adószám) VALUES (’ Tóth Aladár’, 1111);de ebben az esetben is fontos a mezők (általunk definiált) sorrendje. Amely mezők nem szerepelnek az oszloplistában, azok NULL értéket kapnak.
‹#›
Adatok módosítása
UPDATE táblanév SET oszlop1 = kifejezés1, …, oszlopn = kifejezésn [WHERE feltétel]; Az értékadás minden olyan soron végrehajtódik amely eleget tesz a WHERE feltételnek (ennek hiányában az összes sorra) Pl. UPDATE Dolgozó SET Lakcím = ’Szeged, Rózsa u. 5.’ WHERE név = ’Tóth Aladár’;
‹#›
Adatok törlése
DELETE FROM táblanév [WHERE feltétel]; Hatására azon sorok törlődnek, amelyek eleget tesznek a WHERE feltételnek (ennek hiányában pedig az összes sor törlődik a táblában, de a séma megmarad!) Pl.: DELETE FROM Dolgozó WHERE adószám = 1111;
‹#›
Feladat
Attribútum Típus Opciók Id INT(6) PRIMARY KEY, NOT NULL, auto_increment vezeteknev VARCHAR(20) NOT NULL Keresztnev VARCHAR(20) NOT NULL szulev INT(4) NOT NULL Attribútum Típus Opciók kod INT(6) PRIMARY KEY, NOT NULL, auto_increment nev VARCHAR(20) NOT NULL fonokid INT(6) NOT NULL, REFERENCES nevek(id) Nevek Reszleg
‹#›
Comments