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

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

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

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

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

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

Adatbázisok* tulajdonságai

BEVEZETÉS Az objektum fogalma

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

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

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

Adatbázis-kezelés. Második előadás

Adatbázisok I A relációs algebra

SQL parancsok feldolgozása

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

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

Adatbázis használat I. 5. gyakorlat

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

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

Adatbázisok I. Az SQL nyelv

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

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

Adatbázis rendszerek SQL nyomkövetés

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

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

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

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

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

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ázis kezelés Delphiben. SQL lekérdezések

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

Bevezetés: az SQL-be

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások

Adatok szűrése, rendezése

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

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

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.

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

ADATBÁZISKEZELÉS ADATBÁZIS

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

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

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

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

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

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

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

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

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

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

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

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

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:

Adatbáziskezelés - SQL. Forrás: dr. Kovács László: Adatbázisok tervezésének és kezelésének módszertana Computerbooks

INFORMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Webfejlesztés 4. alkalom

Adatbázis rendszerek Gy: MySQL alapok

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

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

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

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

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

Java és web programozás

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: március 20.

Adatbázisok biztonsága

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

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

Adatbázis Rendszerek II. 3. SQL alapok

INFORMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

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

SQL DDL-1: táblák és megszorítások


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

Java és web programozás

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:

GEIAL Kovács László. GEIAL Kovács László GEIAL Kovács László

Adatbázis Rendszerek II. 3. Ea: MySQL alapok

A könyv tartalomjegyzéke

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

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

SQLServer. DB Recovery modes

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

Vizuális programozás gyakorlat

Óravázlat. az ECDL oktatócsomaghoz. 5. modul. Adatbáziskezelés. Krea Kft Budapest, Szőlő u 21. Tel/fax: / krea@krea.

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

Elemi alkalmazások fejlesztése IV.

INFORMATIKA. PRÓBAÉRETTSÉGI május KÖZÉPSZINT. Pontozási és javítási útmutató

Adatbázis-kezelés alapjai SQL 1: DDL, DML. v: B IT MAN 92/1B IT MAN

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

Adatbázis használata PHP-ből

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

Blonde. Szépségszalon, Szolárium, Spa, Fitness. Ügyviteli Rendszer. Funkcionális Specifikáció. Verzió 1.1

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

1.óra. Bevezetés. Adatmodellezés, elméleti háttér

Átírás:

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

Műveletek csoportosítása DDL adat definiálás Objektum létrehozás CREATE Objektum törlés DROP Objektum módosítás ALTER DML adat módosítás Rekord felvitel INSERT Rekord törlés DELETE Rekord módosítás UPDATE DQL adat lekérdezés: az SQL fő erőssége Adatlekérdezés SELECT DCL adat vezérlés Hozzáférés-szabályozás GRANT, REVOKE Tranzakció-kezelés COMMIT 40

Adatdefiníció (DDL) Data Definition Language Adatbázis-objektumok meghatározása: létrehozása, módosítása, törlése CREATE, ALTER, DROP A táblázatok fejléceinek meghatározása táblák, indexek, kapcsolatok definiálása 4

Adatdefiníció (DDL) Létrehozás: CREATE objektumtípus paraméterek Nevek: angol AC, _, számok CREATE TALE táblanév (mező típus megszorítás, ); CREATE TALE dolgozo ( id INT PRIMARY KEY, nev VARCHAR(0), munkakor CHAR() ); CREATE INDEX munkakor ON dolgozo (munkakor); CREATE USER név IDENTIFIED Y jelszó; Módosítás: ALTER objektumtípus paraméterek ALTER TALE dolgozo ALTER/MODIFY nev VARCHAR(40) NOT NULL; ALTER TALE dolgozo ADD lakcim VARCHAR(40); Törlés (eldobás): DROP objektumtípus paraméterek DROP INDEX munkakor; DROP TALE dolgozo; 4

Adatdefiníció tábla létrehozása CREATE TALE A tábla fejlécének meghatározása CREATE TALE táblanév ( mezőnév típus integritásifeltétel, mezőnév típus integritásifeltétel, ) CREATE TALE auto ( rsz CHAR(6) PRIMARY KEY, szinkod INT UNSIGNED NOT NULL, vonohorog OOLEAN ) rsz szinkod vonohorog MEH-00 5 FALSE IGA-00 777 TRUE 43

Kapcsolatok definiálása A táblák közötti kapcsolatok tárolhatók az adatbázisban A kapcsolatok adatértékeken keresztül valósulnak meg Azonos típusú mezők 44

Kapcsolatok definiálása CREATE TALE táblanév ( mező definíció, mező definíció, ) Mező definíció: data_type [NOT NULL NULL] [DEFAULT alapértelmezett érték] [AUTO_INCREMENT] [UNIQUE [KEY] [PRIMARY] KEY] [COMMENT 'string'] [Kapcsolat definíció] Kapcsolat definíció: REFERENCES táblanév (mezőnév,...) [MATCH FULL MATCH PARTIAL MATCH SIMPLE] [ON DELETE Kapcsolat opció] [ON UPDATE Kapcsolat opció] Kapcsolat opció: RESTRICT CASCADE SET NULL NO ACTION 45

Kapcsolatok definiálása ALTER TALE jarmu ADD FOREIGN KEY(tulajdonos) REFERENCES napsugár (id); ALTER TALE jarmu ADD FOREIGN KEY(tulajdonos) REFERENCES napsugár (id) ON DELETE CASCADE; 46

Kapcsolatok definiálása A szülő tábla kulcsának változása esetén: CASCADE: a gyermekben a kapcsolókulcsok is módosulnak, vagy törlésnél a kapcsolódó rekordok törlődnek SET NULL: A külső kulcs értéke NULL értéket vesz fel RESTRICT: A szülő tábla kulcsa nem módosítható 47

Adattípusok Adatbáziskezelőtől függően más és más adattípusok vannak, de ezek között természetesen nagy a hasonlóság. Tipikus példák: Szöveges típusok CHAR [(hossz)] megadott hosszúságú karakterlánc VARCHAR (n) 4 bájt csak a karakterláncnak megfelelő hosszúságú területet foglalja el. Maximum n, illetve 55 karakterig. TEXT (m) nagyméretű szöveges karakterlánc mérete mértékegységekkel adható meg: K, M, G például TEXT(700M) Érték CHAR(0) Helyfoglalás VARCHAR(0) Helyfoglalás '' ' ' 0 bájt '' bájt 'ab' 'ab ' 0 bájt 'ab' 3 bájt 'abcdefghij' 'abcdefghij' 0 bájt 'abcdefghij' bájt 'abcdefghijkl' 'abcdefghij' 0 bájt 'abcdefghij' bájt 48

Adattípusok. ináris adattípusok INARY / VARINARY (n) fix/ változó méretű bináris adat LO (méret) INARY LARGE OJECT (méret) nagyméretű adat: az adatok értelmezésére nincs semmilyen megkötés, így segítségükkel tetszőleges adatokat, például fotókat tárolhatunk. A méret megadása mértékegységgel: K, M, G pl: LO(G) 49

Adattípusok 3. Szám típusok NUMERIC, DECIMAL [(szélesség [, tizedes)] ] pontos értékű (fixpontos) tizedestörtek tárolására, a szélesség mellett a tizedespont utáni jegyek száma is megadható REAL, FLOAT, DOULE lebegőpontos szám tárolására Dátum/idő típusok TINYINT, SMALLINT, MEDIUMINT, INTEGER/INT, IGINT egész értékek, különböző értéktartománnyal (8, 6, 4, 3, 64 bit) DATE, TIME, DATETIME, TIMESTAMP Dátum és/vagy időpont tárolására DATE: '0-05-0' DATETIME '04-05-0 6:0:05' Logikai típus OOLEAN TRUE, FALSE, UNKNOWN érték 50

Adatrekord elérési módszerek Soros elérés Minden megelőző adatot végig kell olvasni Véletlen elérés Azonnal a szükséges adathoz ugrunk 5

Véletlen adatelérés Véletlen elérés Hova ugorjunk? Kell valami segédinformáció (tartalomjegyzék)... pl. a számunkra fontos információ a 7. és 5. helyen található Segédinformáció arról, hogy az adatainkat hol találjuk meg = index. 5

Indexek 53

Indexek Index: az egyes táblákhoz kapcsolódó, a gyors keresést lehetővé tevő segédtáblázat Fájlszervezés, adatelérés: Soros: az egyes adatok megtalálásához a fájlt végig kell olvasni (regény) Indexelt: meta-adatok használata ahhoz, hogy mely adat hol található. (szakkönyvek) SQL: egy vagy több mező alapján történő keresést is támogatja A tipikus keresési szempontokhoz készítsünk indexet Gyakorlatilag azt jelezzük vele, hogy később milyen tipikus keresésekkel fogunk az adatbázishoz fordulni, és így a rendszer felkészül a kérdéseinkre 54

Indexek. Alapvető célja: Az adatelérési sebesség növelése További célja (illetve hasznos mellékhatás): izonyos szabályok betartását is kikényszeríti: Egyediség (UNIQUE) Kitöltöttség (NOT NULL) Létre kell hozni, de utána a használata teljesen automatikus eszúráskor, módosításkor, törléskor is! (időszükséglet...) Jelentős helyfoglalása lehet, az elemszámtól és a kulcstól függően Megválasztása alapjaiban határozza meg a rendszer teljesítményét. 55

Index létrehozása Valójában már korábban is definiáltunk indexet (PRIMARY KEY, UNIQUE) Elsődleges kulcs hozzáadása: ALTER TALE jarmu ADD PRIMARY KEY(rsz) CREATE INDEX indexnev ON táblanév (mező ASC DESC,.); DROP INDEX inev; 56

Megszorítások NULL az adat megadása nem kötelező (alapértelmezett) NOT NULL az adat megadása kötelező (pl. csoport név, a csoporthoz rendelt dajka) PRIMARY KEY az adott mező a tábla elsődleges kulcsa UNIQUE csak egyedi értékek vihetők fel bele (pl. adószám, rendszám) CHECK (feltétel) a MySQL nem támogatja csak a feltételnek megfelelő adatok kerülhetnek az oszlopba CREATE TALE díszpolgár CHECK (lakcim_varos= Győr AND kor>50) FOREIGN KEY (mező) REFERENCES tábla(mező) Idegen kulcs 57

Adatmódosítás (DML) Data Manipulation Language eszúrás, módosítás, törlés: INSERT, UPDATE, DELETE eszúrás: INSERT INSERT INTO tabla VALUES (érték, érték, ) INSERT INTO tabla VALUES (mezoi=erteki, mezoj=ertekj, ) INSERT INTO tabla SELECT INSERT INTO dolgozo VALUES (NULL,'Sári néni','o') INSERT INTO dolgozo VALUES (nev= Ancsa néni, munkakor= o ); INSERT INTO dolgozo SELECT * from masikovi.dolgozo; Az érték lehet NULL is. 58

Adatmódosítás (DML) Adatmódosítás: UPDATE UPDATE dolgozo SET nev='sári néne' WHERE id=3; WHERE feltétel megadása nem kötelező! UPDATE dolgozo SET nev='sári néne'; Kétféle módosítás : adatstruktúra vagy adat ALTER vs. UPDATE! Adat törlése: DELETE WHERE feltétel megadása nem kötelező! DELETE FROM dolgozo; Adatstruktúra vagy adat törlése: DELETE vs DROP! 59

Adatlekérdezés (DQL) Data Query Language Az adatbázisban tárolt adatok kinyerése Alapvető forma: SELECT mit FROM honnan WHERE feltételek mit: legtöbbször mezőlista: mező_i, mező_j, mező_k SELECT rsz, szin FROM auto *: az összes mező SELECT * from AUTO függyvények is használhatók SELECT nev, DAYNAME(szulido) FROM gyerek 60

Adatlekérdezés SELECT: a legösszetettebb utasítás, a lekérdezések ráadásul más utasításokba is ágyazhatók: Táblakészítés Hozzáfűzés Frissítés Törlés Tábla másolása (létrehozás meglévő alapján): CREATE TALE uj AS SELECT * from regi CREATE TALE fiu AS SELECT * FROM gyerek WHERE nem= f ; A nők autói: SELECT * FROM auto WHERE tulajdonos in (SELECT id FROM emberek WHERE nem= nő ); Nagy elemszámnál van ennél hatékonyabb megoldás is! (JOIN) 6

SELECT utasítás A tábladefiníciókor megadott sorrend nem fontos, az attribútumok a felsorolás sorrendjében jelennek meg (halmaz vö. lista) A parancs több további szemponttal bővíthető A modellből adódóan kitalálhatunk olyan lekérdezést, amit nem tudunk egyetlen SELECT paranccsal megvalósítani Projekció M Szelekció M M3 M4 SELECT M, M4 FROM táblanév WHERE szelekciós feltétel 6

Szelekció A szelekció eredményhalmazába a megadott feltételnek megfelelő rekordok kerülnek ID Márka Szín Üa ID Márka Szín Üa Opel kék fehér fehér 5 ezüst 3 Audi fekete D 7 zöld 4 Dacia barna 5 ezüst 6 sárga D 7 zöld 8 Kia piros SELECT * FROM táblanév WHERE szelekciós feltétel Szelekció Szelekciós feltétel: legyen benzines és ford SELECT * FROM auto WHERE márka='' AND üa= 63

Szelekciós feltételek = < > <= >= <>!= IN ('a','b','c') ETWEEN a AND b LIKE 'minta' _ karakter % akárhány karakter LIKE 'a_' LIKE 'a%' LIKE '%a%' NOT LIKE CLIKE a betűvel kezdődő kétbetűs a betűvel kezdődő a betűt tartalmazó a mintával nem egyező a mintaillesztésnél nem különbözteti meg a kis- és nagybetűket AND, OR, NOT (m<5 AND (m=3 OR m>8)) 64

Projekció A projekció eredményhalmazába a megadott mezők kerülnek Lehetőség van az összes mezőt választani (*) azok felsorolása nélkül SELECT mező, mező... FROM táblanév SELECT id, márka, szín FROM auto ID Márka Szín Üa Opel kék fehér 3 Audi fekete D 4 Dacia barna 5 ezüst 6 sárga D 7 zöld 8 Kia piros Projekció ID Márka Szín Opel kék fehér 3 Audi fekete 4 Dacia barna 5 ezüst 6 sárga 7 zöld 8 Kia piros 65

Szelekció és projekció A szelekció és projekciót sokszor együtt alkalmazzuk ID Márka Szín Üa Opel kék fehér 3 Audi fekete D 4 Dacia barna 5 ezüst 6 sárga D 7 zöld 8 Kia piros SELECT mező, mező... FROM táblanév WHERE szelekciós feltétel Projekció Szelekció ID Márka Szín fehér 5 ezüst 7 zöld SELECT id, márka, szín FROM auto WHERE márka='' AND üa= 66

SELECT példák Névsor kilistázása: SELECT nev, anyjaneve FROM gyerek Minden adat: SELECT * FROM gyerek Lista rendezése születési dátum szerint: SELECT * FROM gyerek ORDER Y szulido ított sorrend: SELECT * FROM gyerek ORDER Y szulido DESC 009-ben született gyerek: SELECT * FROM gyerek WHERE szulido >= '009-0-0' AND szulido <= '009--3' 67

SELECT utasítás SELECT [DISTINCT] oszloplista FROM táblanévlista [alias] [WHERE feltételek] [GROUP Y oszloplista ] [HAVING feltételek] [ORDER Y oszloplista] projekció Descartes-szorzat szelekció csoportosítás csoport szelekció rendezés M A Rendezés Z Projekció M M3 M4 Szelekció Csoport szelekció Csoportosítás 68

SELECT végrehajtási sorrend FROM Descartes-szorzat WHERE szelekció GROUP Y csoportosítás HAVING csoport szelekció SELECT projekció ORDER Y A Rendezés Z Projekció M rendezés M M3 M4 Szelekció Csoport szelekció Csoportosítás 69

Csoportosítás GROUP Y Adott szempont szerint csoportosítja a szelekcióval kiválasztott sorokat HAVING A létrehozott csoportokon végez szelekciót Projekció M A Rendezés Z M M3 M4 Szelekció Csoport szelekció Csoportosítás 70

Csoportosítás és aggregáció SELECT aggregációs lista FROM tábla GROUP Y csoportképző kifejezés Az autók márkánkénti átlagára: SELECT marka, AVG(ar) FROM auto GROUP Y marka rsz marka tipus ILI-00 opel Corsa. JAJ-3 opel JUK-007 ar marka avg(ar) 600000 ford 456666.6667 Astra 600000 opel 533333.3333 ford Mondeo 3000000 LOL-999 opel Calibra 400000 LIK-887 ford focus 970000 CIA-707 ford focus 400000 Márka Átlag ford 457000 opel 533000 SELECT marka AS Márka, ROUND(AVG(ar),-3) AS Átlag FROM auto GROUP Y marka; 7

Szűrés a csoportosítás után SELECT marka AS Márka, ROUND(AVG(ar),-3) AS Átlag FROM auto GROUP Y marka; Márka Átlag ford 457000 opel 533000 HAVING a csoportképzés utáni szelekció: SELECT aggregációs lista FROM tábla GROUP Y csoportképző kifejezés HAVING feltétel; milliónál magasabb átlagárú autók: SELECT marka AS Márka, ROUND(AVG(ar),-3) AS Átlag FROM auto Márka Átlag GROUP Y marka ford 457000 HAVING Átlag>000000; 7

SELECT példák Csoportosítás márkák szerint Megszámoljuk, melyik márkából hány jármű szerepel a táblában: SELECT marka, count(*) FROM jarmu GROUP Y marka Csak az F betűvel kezdődő márkák érdekelnek: SELECT marka, COUNT(*) FROM jarmu GROUP Y marka HAVING marka LIKE 'F%'; SELECT marka, count(*) FROM jarmu WHERE marka LIKE 'F%' GROUP Y marka; Csak az a márka érdekel, amiből legalább 0 szerepel: SELECT marka, COUNT(*) FROM jarmu GROUP Y marka HAVING COUNT(*) >=0; SELECT marka, COUNT(*) darabszám FROM jarmu GROUP Y marka HAVING darabszám >=0; 73

Az eredmény rendezése Halmazokkal dolgozunk, de a listák szükségszerűen valamely sorrenddel rendelkeznek. SELECT ORDER Y mező irány, mező irány, SELECT * FROM emberek ORDER Y nev A rendezés iránya: ASC: növekvő (ascending) alapértelmezett, nem fontos kiírni DESC: csökkenő (descending) A mezőkre sorszámmal is hivatkozhatunk: SELECT * FROM táblanév ORDER by, 4 DESC SELECT leanykori_nev, szuletesi_hely, adoazonosito_jel FROM emberek ORDER by, ; 74

Alap összekapcsolás (JOIN) Halmazelmélet : Az A és halmaz Descartes-szorzatán azt a halmazt értjük, melynek azon rendezett párok az elemei, amiknek első eleme A-beli, második eleme pedig -beli és a szorzat minden lehetséges párt tartalmaz. Azonosító Név Ádám Éva Lakcím Adószám Magasság Márka... Típus... Rendszám... Opel... Astra.4... EFF-36... JAU-75 Kettőnél több tábla összekapcsolható LOL-96 Tulaj Focus.0 MW X5 Rendszám Márka Típus Tulajdonos Azonosító Név Lakcím Adószám Magasság EFF-36 Opel Ádám EFF-36 Opel Éva JAU-75 Ádám JAU-75 Éva LOL-96 MW Ádám LOL96 MW Éva SELECT * FROM auto, ember 75

Alap összekapcsolás (JOIN) A teljes Descartes-szorzatra általában nincs szükség Óriási adatmennyiségek! n*m elemű reláció Segédinformációk szükségessége Azonosító Név Ádám Éva Lakcím Adószám Magasság Márka... Típus... Rendszám... Opel... Astra.4... EFF-36... Összekapcsolási feltétel: auto.tulajdonos = ember.azonosító Tulaj JAU-75 Focus.0 LOL-96 MW X5 Rendszám Márka Típus Tulajdonos Azonosító Név Lakcím Adószám Magasság EFF-36 Opel Ádám EFF-36 Opel Éva JAU-75 Ádám JAU-75 Éva LOL-96 MW Ádám LOL96 MW Éva SELECT * FROM auto, ember WHERE auto.tulajdonos=ember.azonosító 76

Alap join példa Keressük meg az autók tulajdonosait! Összekapcsolási feltétel: auto.tulajdonos = ember.azonosító Azonosító Név Ádám Éva Lakcím Adószám Magasság... Rendszám... EFF-36... Márka... Opel... Típus... Astra.4 Tulajdonos JAU-75 Focus.0 LOL-96 MW X5 Rendszám Márka Típus Tulajdonos Azonosító Név Lakcím Adószám Magasság EFF-36 Opel Ádám JAU-75 Éva LOL-96 MW Ádám SELECT rendszám, név FROM auto, ember WHERE auto.tulajdonos=ember.azonosító Rendszám Név EFF-36 Ádám JAU-75 Éva LOL-96 Ádám 77

Alap join példa Kibővített mezőnevek: akkor kötelező, ha több táblában is szerepel ugyanaz a mezőnév: ember.azonosító Hosszú táblaneveknél érdemes rövidíteni: SELECT FROM auto a,... Azonosító Név Ádám Éva Lakcím Adószám Magasság... Rendszám... EFF-36... Márka... Opel... Típus... Astra.4 Tulajdonos JAU-75 Focus.0 LOL-96 MW X5 Rendszám Márka Típus Tulajdonos Azonosító Név Lakcím Adószám Magasság EFF-36 Opel Ádám JAU-75 Éva LOL-96 MW Ádám SELECT rendszám, név FROM auto a, ember e WHERE a.tulajdonos=e.azonosító Rendszám Név EFF-36 Ádám JAU-75 Éva LOL-96 Ádám 78

SELECT példák A SELECT parancs képes műveletek végzésére, és függvények kiértékelésére is, pl: SELECT ; SELECT SIN(PI()/4), (3+)*5; Véletlenszám generálása: SELECT RAND() SELECT FLOOR(min+RAND()*(max-min)) 3 rekord véletlenszerű kiválasztása: SELECT név, jel FROM napsugár ORDER Y RAND() LIMIT 3 79