Több tábla összekapcsolásán alapuló lekérdezések. Copyright 2004, Oracle. All rights reserved.

Hasonló dokumentumok
Több tábla összekapcsolásán alapuló lekérdezések

Többtáblás lekérdezések megjelenítése

3.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Lekérdezések az SQL SELECT utasítással. Copyright 2004, Oracle. All rights reserved.

Lekérdezések az SQL SELECT utasítással

Lekérdezések az SQL SELECT utasítással

Az SQL*Plus használata

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

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

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

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

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

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

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

Tankönyv példák kidolgozása

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

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

SELECT. SELECT(projekció) FROM(forrás) WHERE(szűrés) GROUPBY(csoportosítás) HAVING(csoportok szűrése) ORDERBY(rendezés)

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Adatok szűrése, rendezése

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

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

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

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

Csoportosított adatok megjelenítése összesítı függvények használatával. Copyright 2004, Oracle. All rights reserved.

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

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

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

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:

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

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

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

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

Indexek és SQL hangolás

Bevezetés: az SQL-be

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Adatbázisok tavaszi félév Vizsgatételsor

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Lekérdezések az SQL-ben 1.rész

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

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.

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Adatbázis kezelés Delphiben. SQL lekérdezések

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

Tranzakciókezelés PL/SQL-ben

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

Lekérdezések az SQL-ben 1.rész

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

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

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

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

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

SQL parancsok feldolgozása

Adatbázis rendszerek tervezése

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

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

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

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

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

Adatbázis Rendszerek II. 3. SQL alapok

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

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

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

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

A SELECT működése. Ttanar tábla: Tdiak tábla:

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

Access gyakorlati feladatok lépésről lépésre

Adatbázis használat I. 2. gyakorlat

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok.

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

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

Adatbázis rendszerek Gy: DQL Lekérdezések

Access XP alapokon Tartalomjegyzék

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

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

Adatbázisok II. rész

Nem klaszterezett index. Klaszterezett index. Beágyazott oszlopok. Index kitöltési faktor. Indexek tulajdonságai

Nem klaszterezett index. Beágyazott oszlopok. Klaszterezett index. Indexek tulajdonságai. Index kitöltési faktor

4. Előadás Az SQL adatbázisnyelv

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

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

Adatbázis-kezelés. Harmadik előadá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:

Adatbázis rendszerek SQL nyomkövetés

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

(Cikksorozat a portálról. Átszerkesztette és kiegészítette: Szentendrey Péter) TARTALOM

Együttes hozzárendelés

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

Választó lekérdezés létrehozása

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

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

BEVEZETÉS Az objektum fogalma

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

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

Adatmodellezés. 1. Fogalmi modell

Az SQL adatbázisnyelv: DML

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

Adatbázisok elmélete

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

SQL DDL-2 (aktív elemek) triggerek

Átírás:

Több tábla összekapcsolásán alapuló lekérdezések Copyright 2004, Oracle. All rights reserved.

Célkitűzés Egynél több táblának egyenlőségen vagy nem-egyenlőségen alapuló összekapcsolást végző SELECT utasítások írása. Egy táblának önmagával történő összekapcsolása. Olyan adatok megjelenítése külső összekapcsolás segítségével, amelyek nem felelnek meg egy összekapcsolási feltételnek. Legalább két táblának a felhasználásával a sorok direktszorzatának előállítása. 5-2 Copyright 2004, Oracle. All rights reserved.

Többtáblás lekérdezés EMPLOYEES DEPARTMENTS 5-3 Copyright 2004, Oracle. All rights reserved.

Az összekapcsolások fajtái (SQL:1999) Direktszorzat (kereszt-összekapcsolás). Természetes összekapcsolás. USING utasítással történő összekapcsolás Teljes( vagy két oldali) külső összekapcsolás Tetszőleges feltételen alapuló külső összekapcsolás 5-4 Copyright 2004, Oracle. All rights reserved.

Táblák összekapcsolása (SQL:1999 szintaxis) Több tábla lekérdezése esetén a szintaxis a következő: SELECT tábla1.oszlop, tábla2.oszlop FROM tábla1 [NATURAL JOIN tábla2] [JOIN tábla2 USING (oszlopnév )] [JOIN tábla2 ON (tábla1.oszlopnév = tábla2.oszlopnév )] [LEFT RIGHT FULL OUTER JOIN tábla2 ON (tábla1.oszlopnév = tábla2.oszlopnév )] [CROSS JOIN tábla2]; NATURAL JOIN azonos nevű oszloppal rendelkező táblák természetes összekapcsolása JOIN tábla USING oszlopnév az oszlopnév értékeinek egyenlőségi vizsgálatán alapuló összekapcsolás JOIN tábla ON tábla1.oszlopnév az ON után szereplő egyenlőségi feltétel vizsgálatán alapuló összekapcsolás LEFT/RIGHT/FULL OUTER a külső összekapcsolás paraméterei CROSS JOIN kéttábladirektszorzata 5-5 Copyright 2004, Oracle. All rights reserved.

Természetes összekapcsolás megfogalmazása A NATURAL JOIN utasítás a benne szereplő két tábla azonos nevűoszlopainalapul. A két tábla azon sorait eredményezi, ahol az azonos nevű oszlopokban szereplő értékek megegyeznek. Ha az azonos nevű oszlopok adattípusa eltérő, akkor hibával tér vissza az utasítás. 5-6 Copyright 2004, Oracle. All rights reserved.

Példa a természetes összekapcsolásra SELECT department_id, department_name, location_id, city FROM departments NATURAL JOIN locations ; A WHERE használható további megszorítások megfogalmazására. Például, ha csak a 20-as illetve 50-es department_id-kra vagyunk kíváncsiak, akkor: SELECT department_id, department_name, location_id, city FROM departments NATURAL JOIN locations WHERE department_idin (20, 50); 5-7 Copyright 2004, Oracle. All rights reserved.

Összekapcsolás írása USING kulcsszóval Ha több oszlopnak azonos ugyan a neve, de az adattípusa eltérő, akkor a USING segítségével megadható, hogy mely oszlopokat lehet használni az egyenlőségen alapuló összekapcsoláshoz. Használjunk USING-ot, ha csak egy oszlop egyezik meg. Ne használjuk a tábla eredeti vagy alias nevét a kiválasztott oszlopok megadásánál. A NATURAL JOIN és a USING kulcsszavak együttes használatanemmegengedett. 5-8 Copyright 2004, Oracle. All rights reserved.

Oszlopnevek összekapcsolása EMPLOYEES DEPARTMENTS Foreign key Primary key Az osztályok dolgozóinak meghatározásához a Departmentstábla és az Employeestábla DEPARTMENT_ID oszlopaikban szereplő értékeinek összehasonlítása kell. Ez egy egyenlőségen alapuló összekapcsolás lesz. Az ilyen típusú összekapcsolásban általában az elsődleges-és az idegen kulcs komponensei szerepelnek. 5-9 Copyright 2004, Oracle. All rights reserved.

A USING kulcsszó használata lekérdezésben SELECT employees.employee_id, employees.last_name, departments.location_id, department_id FROM employees JOIN departments USING (department_id) ; 5-10 Copyright 2004, Oracle. All rights reserved.

Azonos nevű oszlopok megkülönböztetése Használjuk a táblaneveket előtagként az azonos nevű oszlopok megkülönböztetésére A előtagok használata javítja a hatékonyságot is. Használhatunk alias neveket az olyan oszlopokra, amelyeket megkülönböztetünk a többi táblában lévő azonos nevű társaiktól. Ne használjunk alias nevet azon oszlopokra, amelyeket a USING kulcsszó után adtunk meg és az SQL utasításban még más helyen is szerepelnek. 5-11 Copyright 2004, Oracle. All rights reserved.

Sorváltozók használata tábláknál A lekérdezések átláthatósága miatt használhatunk sorváltozót (tábla alias neveket). A sorváltozók használata javítja a lekérdezés teljesítményét. A sorváltozók maximum 30 karakter hosszúak lehetnek (minél rövidebb annál jobb) A sorváltozók csak az aktuális SELECT utasítás során lesznek használhatóak! 5-12 Copyright 2004, Oracle. All rights reserved.

Összekapcsolások az ON kulcsszó segítségével A természetes összekapcsolás alapvetően az azonos nevű oszlopok egyenlőségvizsgálatán alapuló összekapcsolása volt. Az ON kulcsszót használhatjuk az összekapcsolás tetszőleges feltételének vagy oszlopainak megadására. Az összekapcsolási feltétel független a többi keresési feltételtől. Az ON használata áttekinthetőbbé teszi a kódot 5-13 Copyright 2004, Oracle. All rights reserved.

Lekérdezés az ON kulcsszó használatával SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id); Az ON segítségével különböző nevű oszlopok is összekapcsolhatóak 5-14 Copyright 2004, Oracle. All rights reserved.

Önösszekapcsolás ON kulcsszóval 1. EMPLOYEES (WORKER) EMPLOYEES (MANAGER) A WORKER tábla Manager_ID mezője megfelel a MANAGER tábla A EMPLOYEE_ID mezőjével 5-15 Copyright 2004, Oracle. All rights reserved.

Önösszekapcsolás ON kulcsszóval 2. SELECT e.last_name emp, m.last_name mgr FROM employees e JOIN employees m ON (e.manager_id = m.employee_id); 5-16 Copyright 2004, Oracle. All rights reserved.

További feltételek megadása egy összekapcsoláshoz SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id) AND e.manager_id = 149 ; Ugyanezt érhetjük el a WHERE feltétellel is, azaz: SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id) WHERE e.manager_id = 149; 5-17 Copyright 2004, Oracle. All rights reserved.

Három-utas összekapcsolás ON segítségével SELECT employee_id, city, department_name FROM employees e JOIN departments d ON d.department_id = e.department_id JOIN locations l ON d.location_id = l.location_id; Három tábla összekapcsolását nevezzük három-utas összekapcsolásnak Az SQL 1999-es szintaxis szerint az ilyen összekapcsolások balról jobbra haladva hajtódnak végre (DEPARTMENTS EMPLOYEES) LOCATION 5-18 Copyright 2004, Oracle. All rights reserved.

Nem egyenlőségvizsgálaton alapuló összekapcsolás EMPLOYEES JOB_GRADES Az EMPLOYEES tábla fizetés mezőjének értéke a JOBS_GRADE tábla legmagasabb illetve legalacsonyabb fizetés közötti kell legyen. 5-19 Copyright 2004, Oracle. All rights reserved.

Példa a nem egyenlőségvizsgálaton alapuló összekapcsolás SELECT e.last_name, e.salary, j.grade_level FROM employees e JOIN job_grades j ON e.salary BETWEEN j.lowest_sal AND j.highest_sal; 5-20 Copyright 2004, Oracle. All rights reserved.

Külső összekapcsolás DEPARTMENTS EMPLOYEES A 190-es számú osztályon nincs alkalmazott 5-21 Copyright 2004, Oracle. All rights reserved.

Belső vagy külső összekapcsolás? SQL-1999: Belső összekapcsolásnak nevezzük azokat az összekapcsolásokat, amelyek két tábla megegyező soraival térnek vissza. Két tábla olyan összekapcsolását, amely a belső összekapcsolás eredményéhez hozzáveszi a bal (vagy jobboldali) tábla összes sorát, baloldali (vagy jobboldali) külső összekapcsolásnak nevezzük. Teljes külső összekapcsolásnak hívjuk azt az esete, amikor a külső összekapcsolás egyszerre bal- és jobboldali. 5-22 Copyright 2004, Oracle. All rights reserved.

Baloldali külső összekapcsolás SELECT e.last_name, e.department_id, d.department_name FROM employees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id) ; 5-23 Copyright 2004, Oracle. All rights reserved.

Jobboldali külső összekapcsolás SELECT e.last_name, e.department_id, d.department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id) ; 5-24 Copyright 2004, Oracle. All rights reserved.

Teljes külső összekapcsolás SELECT e.last_name, d.department_id, d.department_name FROM employees e FULL OUTER JOIN departments d ON (e.department_id = d.department_id) ; 5-25 Copyright 2004, Oracle. All rights reserved.

A direkt-szorzat A direkt-szorzat a következőként kapható: az összekapcsolási feltétel elhagyásával, nem megengedett összekapcsolási feltétellel, az első tábla összes sorának összekapcsolása a másik tábla összes sorával. A direkt szorzatok elkerülése érdekében, mindig kell legalább egy megengedett összekapcsolási feltétel legyen. 5-26 Copyright 2004, Oracle. All rights reserved.

A direkt-szorzat EMPLOYEES(20 rows) DEPARTMENTS(8 rows) Direkt-szorzat : 20 x 8 = 160 sorok 5-27 Copyright 2004, Oracle. All rights reserved.

A kereszt-összekapcsolás A CROSS JOIN kulcsszó előállítja két tábla kereszt-szorzatát Ezt hívják direkt szorzatnak is. SELECT last_name, department_name FROM employees CROSS JOIN departments ; 5-28 Copyright 2004, Oracle. All rights reserved.

Összefoglalás Ebben a részben megismertük: a többtáblás lekérdezéseket általános összekapcsolásokat a természetes összekapcsolásokat külső összekapcsolásokat az összekapcsolások használatát 5-29 Copyright 2004, Oracle. All rights reserved.