Βάζεηο Γεδνκέλσλ Structured Query Language -SQL Φξνληηζηήξην 9 ν 01-12-2011
Η Γιώζζα SQL Σα βαζηθά ηεο ζπζηαηηθά: Γιώζζα Οξηζκνύ Γεδνκέλσλ (Data Definition Language (DDL)) Οξηζκόο, δεκηνπξγία, ηξνπνπνίεζε θαη δηαγξαθή ζρήκαηνο Γιώζζα Υεηξηζκνύ Γεδνκέλσλ (Data Manipulation Language (DML)) Οξηζκόο, δεκηνπξγία, ηξνπνπνίεζε, δηαγξαθή θαη επηινγή δεδνκέλσλ ΓΛΧΑ ΔΡΧΣΗΜΑΣΧΝ
Παξάδεηγκα 1 ν - ΠΡΔΒΔΙΔ TABLE: EMBASSY ID_Embassy Embassy_Name District Street Num Country_ City_ID ID 1 CHINESE EMBASSY IN ATHENS PSYCHIKO KRINON STR 2A 4 1 2 BRITISH EMBASSY IN ATHENS ATHENS PLOUTARHOU STR 1 5 1 3 CYPRIAN EMBASSY IN ATHENS ATHENS HERODOTOU STR 16 6 1 4 RUSSIAN EMBASSY IN ATHENS PSYCHIKO NIK.LYTRA STR 28 7 1 5 FRENCH CONSULATE IN THESSALONIKI THESSALONIKI MAKENZY KING STR 3 3 6 FINLAND CONSULATE IN THESSALONIKI ORAIOKASTRO ORAIOKASTROU 7KM 2 3 7 GREEK EMBASSY IN PARIS PARIS RUE AUGUSTE VACQUERIE 17 1 4 8 GREEK CONSULATE IN MASELLIE MASELLIE RUE RIGNAN 17 1 5 9 GREEK EMBASSY IN NICOSIA NICOSIA VYRONOS AV 8-10 1 6 10 GREEK EMBASSY IN MOSCOW MOSCOW LEONTIEFSKI PER. 4 1 7 11 GREEK COSULATE IN ST.PETERSBURG ST.PETERSBURG MIKHAILOVSKAYA ULITSA-HOTEL EUROPE 1/7 1 8 12 GREEK COSULATE IN NOVOROSSISK NOVOROSSISK ICAEVA-HOTEL NOVOROSSISK 2 1 9 13 GREEK ENBASSY IN LONDON W11 HOLLAND PARK 1A 1 2 14 BRITISH EMBASSY IN MOSCOW MOSCOW SMOLENSKAYA NABEREZHNAYA 10 5 7 15 BRITISH EMBASSY IN HELSINKI HELSINKI ITAINEN PUISTOTIE 17 5 9 16 RUSSIAN EMBASSY IN LONDON W8 4QS KENSINGTON PALACE GARDENS, 5 7 2 17 CHINESE EMBASSY IN LONDON W1B 1JL ORTLAND PLACE 49-51 4 2 18 FINLAND EMBASSY IN LONDON SW1X 8HW CHESHAM PLACE 38 2 2 19 FRENCH EMBASSY IN LONDON SW1X 7JT KNIGHTSBRIDGE 3 2 2 TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 11 3 IOANNHS KARAVATOS 12 4 IOANNIS KOMNINOS NULL 5 GEORGIOS IOANNIDIS 13 6 EMMANOUHL ATHANASIADIS NULL 7 ELENH PALAIOLOGOU TABLE: CITY ID_City City_Name IDCountry 1 ATHENS 1 2 LONDON 5 3 THESSALONIKI 1 4 PARIS 3 5 MASSELLIE 3 6 LEYKOSIA 6 7 MOSCOW 7 8 ST.PETERSBURG 7 9 NOVOROSSISK 7 10 HELSINKI 2 TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND 3 FRENCH 4 CHINA 5 GREAT BRITAIN 6 CYPRUS 7 RUSSIA 8 HUNGARY
SELECT - Δπηινγή Γεληθή κνξθή select a1, a2, an from r1, r2, rm where P [order by.] [group by ] [having ] select distinct a1, a2, an from r1, r2, rm where P 1, 2,... ( ( r a a an P 1 r 2... rm )) Δπηιέγνπκε λα πξνβάινπκε ηα γλσξίζκαηα α1,α2,...,αn Από ηελ ζρέζε πνπ πξνθύπηεη από ηελ/ηηο ζρέζεηο r1 x r2. Μόλν ηηο πιεηάδεο γηα ηηο νπνίεο ε ζπλζήθε P είλαη αιεζήο
Δξώηεζε 1 ε : Δπηιέμεηε ηα ζηνηρεία ησλ ρσξώλ κε ID κηθξόηεξν από 3 SELECT * FROM COUNTRY WHERE ID_COUNTRY <3 Δπηζηξέθνληαη όια ηα γλσξίζκαηα TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND
Δξώηεζε 2 ε : Πνην ην όλνκα ηεο πξεζβείαο θαη πνηα ε αληίζηνηρε νδόο γηα θάζε πξεζβεία πνπ βξίζθεηαη ζηελ πεξηνρή Φπρηθό SELECT EMBASSY_NAME,STREET FROM EMBASSY WHERE DISCTRICT = PSYCHIKO TABLE: EMBASSY EMBASSY_NAME CHINESE EMBASSY IN ATHENS RUSSIAN EMBASSY IN ATHENS STREET KRINON STR NIK.LYTRA STR
Παξαηεξήζεηο: ηελ SQL επηηξέπνληαη δηπιόηππεο εγγξαθέο ηόζν ζε ζρέζεηο όζν θαη απνηειέζκαηα εξσηεκάησλ SELECT [distinct all ] IDCOUNTRY FROM CITY Απαιείθεη δηπιόηππεο πιεηάδεο TABLE: CITY IDCOUNTRY 1 5 3 6 7 2 TABLE: CITY IDCOUNTRY 1 5 1 3 3 6 7 7 7 2 Γελ απαιείθεη δηπιόηππεο πιεηάδεο
πλζήθε WHERE Δπηζηξέθεη κόλν ηηο πιεηάδεο γηα ηηο νπνίεο ε ζπλζήθε P είλαη αιεζήο. Λνγηθνί ζύλδεζκνη : and, or, not Σειεζηέο ζύγθξηζεο: <,=,>,>=,<=,<>,between, not between Έιεγρνο θελώλ ηηκώλ : is NULL, is not NULL
Δξώηεζε 3 ε : Δπηιέμεηε ηα ζηνηρεία ησλ ησλ ρσξώλ κε ID κηθξόηεξν ίζν από 5 θαη κεγαιύηεξν ίζν από 3 SELECT * FROM COUNTRY WHERE ID_COUNTRY >=3 and ID_COUNTRY <=5 ή SELECT * FROM COUNTRY WHERE ID_COUNTRY BETWEEN 3 AND 5 TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 3 FRENCH 4 CHINA 5 GREAT BRITAIN
Δξώηεζε 4 ε : Δπηιέμεηε ηα ζηνηρεία ησλ ησλ ρσξώλ κε ID κεγαιύηεξν από 5 ή κηθξόηεξν από 3 SELECT * FROM COUNTRY WHERE ID_COUNTRY >5 or ID_COUNTRY <3 ή SELECT * FROM COUNTRY WHERE ID_COUNTRY NOT BETWEEN 3 AND 5 TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND 6 CYPRUS 7 RUSSIA 8 HUNGARY
Παξάδεηγκα 1 ν - ΠΡΔΒΔΙΔ TABLE: EMBASSY ID_Embassy Embassy_Name District Street Num Country_ City_ID ID 1 CHINESE EMBASSY IN ATHENS PSYCHIKO KRINON STR 2A 4 1 2 BRITISH EMBASSY IN ATHENS ATHENS PLOUTARHOU STR 1 5 1 3 CYPRIAN EMBASSY IN ATHENS ATHENS HERODOTOU STR 16 6 1 4 RUSSIAN EMBASSY IN ATHENS PSYCHIKO NIK.LYTRA STR 28 7 1 5 FRENCH CONSULATE IN THESSALONIKI THESSALONIKI MAKENZY KING STR 3 3 6 FINLAND CONSULATE IN THESSALONIKI ORAIOKASTRO ORAIOKASTROU 7KM 2 3 7 GREEK EMBASSY IN PARIS PARIS RUE AUGUSTE VACQUERIE 17 1 4 8 GREEK CONSULATE IN MASELLIE MASELLIE RUE RIGNAN 17 1 5 9 GREEK EMBASSY IN NICOSIA NICOSIA VYRONOS AV 8-10 1 6 10 GREEK EMBASSY IN MOSCOW MOSCOW LEONTIEFSKI PER. 4 1 7 11 GREEK COSULATE IN ST.PETERSBURG ST.PETERSBURG MIKHAILOVSKAYA ULITSA-HOTEL EUROPE 1/7 1 8 12 GREEK COSULATE IN NOVOROSSISK NOVOROSSISK ICAEVA-HOTEL NOVOROSSISK 2 1 9 13 GREEK ENBASSY IN LONDON W11 HOLLAND PARK 1A 1 2 14 BRITISH EMBASSY IN MOSCOW MOSCOW SMOLENSKAYA NABEREZHNAYA 10 5 7 15 BRITISH EMBASSY IN HELSINKI HELSINKI ITAINEN PUISTOTIE 17 5 9 16 RUSSIAN EMBASSY IN LONDON W8 4QS KENSINGTON PALACE GARDENS, 5 7 2 17 CHINESE EMBASSY IN LONDON W1B 1JL ORTLAND PLACE 49-51 4 2 18 FINLAND EMBASSY IN LONDON SW1X 8HW CHESHAM PLACE 38 2 2 19 FRENCH EMBASSY IN LONDON SW1X 7JT KNIGHTSBRIDGE 3 2 2 TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 11 3 IOANNHS KARAVATOS 12 4 IOANNIS KOMNINOS NULL 5 GEORGIOS IOANNIDIS 13 6 EMMANOUHL ATHANASIADIS NULL 7 ELENH PALAIOLOGOU TABLE: CITY ID_City City_Name IDCountry 1 ATHENS 1 2 LONDON 5 3 THESSALONIKI 1 4 PARIS 3 5 MASSELLIE 3 6 LEYKOSIA 6 7 MOSCOW 7 8 ST.PETERSBURG 7 9 NOVOROSSISK 7 10 HELSINKI 2 TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND 3 FRENCH 4 CHINA 5 GREAT BRITAIN 6 CYPRUS 7 RUSSIA 8 HUNGARY
Δξώηεζε 5 ε :Δπηιέμηε όια ηα ζηνηρεία ησλ ελ ελεξγεία πξεζβεπηώλ SELECT * FROM AMBASSADOR WHERE ID_EMBASSY IS NOT NULL TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 11 3 IOANNHS KARAVATOS 12 4 IOANNIS KOMNINOS 13 6 EMMANOUHL ATHANASIADIS
εηξά εκθάληζεο Δγγξαθώλ Order by attr-list SELECT * FROM AMBASSADOR ORDER BY NAME desc SELECT * FROM AMBASSADOR ORDER BY NAME asc, ID desc; Asc : θαηά αύμνπζα ζεηξά Desc: θαηά θζίλνπζα ζεηξά Σαμηλόκεζε: Υξνλνβόξα πξάμε
Δξώηεζε 6 ε :Δπηιέμηε όια ηα ζηνηρεία ησλ πξεζβεπηώλ ηαμηλνκεκέλα κε βάζε ην όλνκα θαηά θζίλνπζα ζεηξά SELECT * FROM AMBASSADOR ORDER BY NAME desc TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 11 3 IOANNIS KARAVATOS 12 4 IOANNIS KOMNINOS NULL 5 GEORGIOS IOANNIDIS 13 6 EMMANOUHL ATHANASIADIS NULL 7 ELENH PALAIOLOGOU
Δξώηεζε 7 ε :Δπηιέμηε όια ηα ζηνηρεία ησλ πξεζβεπηώλ ηαμηλνκεκέλα κε βάζε ην όλνκα θαηά θζίλνπζα ζεηξά θαη κε βάζε ην ID θαηά θζίλνπζα ζεηξά επίζεο SELECT * FROM AMBASSADOR ORDER BY NAME desc, ID desc; ρήκα βάζεο TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 12 4 IOANNIS KARAVATOS 11 3 IOANNIS KOMNINOS NULL 5 GEORGIOS IOANNIDIS 13 6 EMMANOUHL ATHANASIADIS NULL 7 ELENH PALAIOLOGOU
Πξάμεηο κε πκβνινζεηξέο ΣΔΛΔΣΗ LIKE 1. SELECT * FROM AMBASSADOR WHERE NAME = GIANNIS 2. SELECT * FROM AMBASSADOR WHERE NAME like GIANNIS 3. SELECT * FROM AMBASSADOR WHERE NAME not like E% 4. SELECT * FROM AMBASSADOR WHERE NAME like %S 5. SELECT * FROM AMBASSADOR WHERE NAME like _O%S 6. SELECT * FROM AMBASSADOR WHERE NAME like %I N_S %: ταιριάζει οποιαδήποτε ςυμβολοςειρά (n χαρακτήρεσ) _: ταιριάζει οποιοδήποτε χαρακτήρα (1 χαρακτήρασ) Η SQL ππνζηεξίδεη πνηθηιία πξάμεσλ ζε αιθαξηζκεηηθέο παξαζηάζεηο όπσο Η σςνένωση (using ) Μετατποπή σε converting από κευαλαία σε μικπά και το αντίστπουο Εξαγωγή ςπό-αλυαπιθμητικών Υπολογισμόρ μήκοςρ αλυαπιθμητικού κτλ
πλζήθε FROM Οξίδεη από πνην ζρήκα ζα επηζηξαθνύλ εγγξαθέο. Μπνξεί λα αλαθέξεηαη ζε έλα ζρήκα ή ζε ζπλδπαζκό δύν ή πεξηζζόηεξσλ ζρεκάησλ Cross join Equi join Theta join Inner join Natural join Outer join Left Right Full
Δξώηεζε από έλαλ πίλαθα: Δξώηεζε 8 ε : Δπηιέμεηε ηα ζηνηρεία όισλ ησλ ρσξώλ SELECT * FROM COUNTRY TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND 3 FRENCH 4 CHINA 5 GREAT BRITAIN 6 CYPRUS 7 RUSSIA 8 HUNGARY
Παξάδεηγκα 1 ν - ΠΡΔΒΔΙΔ TABLE: EMBASSY ID_Embassy Embassy_Name District Street Num Country_ City_ID ID 1 CHINESE EMBASSY IN ATHENS PSYCHIKO KRINON STR 2A 4 1 2 BRITISH EMBASSY IN ATHENS ATHENS PLOUTARHOU STR 1 5 1 3 CYPRIAN EMBASSY IN ATHENS ATHENS HERODOTOU STR 16 6 1 4 RUSSIAN EMBASSY IN ATHENS PSYCHIKO NIK.LYTRA STR 28 7 1 5 FRENCH CONSULATE IN THESSALONIKI THESSALONIKI MAKENZY KING STR 3 3 6 FINLAND CONSULATE IN THESSALONIKI ORAIOKASTRO ORAIOKASTROU 7KM 2 3 7 GREEK EMBASSY IN PARIS PARIS RUE AUGUSTE VACQUERIE 17 1 4 8 GREEK CONSULATE IN MASELLIE MASELLIE RUE RIGNAN 17 1 5 9 GREEK EMBASSY IN NICOSIA NICOSIA VYRONOS AV 8-10 1 6 10 GREEK EMBASSY IN MOSCOW MOSCOW LEONTIEFSKI PER. 4 1 7 11 GREEK COSULATE IN ST.PETERSBURG ST.PETERSBURG MIKHAILOVSKAYA ULITSA-HOTEL EUROPE 1/7 1 8 12 GREEK COSULATE IN NOVOROSSISK NOVOROSSISK ICAEVA-HOTEL NOVOROSSISK 2 1 9 13 GREEK ENBASSY IN LONDON W11 HOLLAND PARK 1A 1 2 14 BRITISH EMBASSY IN MOSCOW MOSCOW SMOLENSKAYA NABEREZHNAYA 10 5 7 15 BRITISH EMBASSY IN HELSINKI HELSINKI ITAINEN PUISTOTIE 17 5 9 16 RUSSIAN EMBASSY IN LONDON W8 4QS KENSINGTON PALACE GARDENS, 5 7 2 17 CHINESE EMBASSY IN LONDON W1B 1JL ORTLAND PLACE 49-51 4 2 18 FINLAND EMBASSY IN LONDON SW1X 8HW CHESHAM PLACE 38 2 2 19 FRENCH EMBASSY IN LONDON SW1X 7JT KNIGHTSBRIDGE 3 2 2 TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 11 3 IOANNHS KARAVATOS 12 4 IOANNIS KOMNINOS NULL 5 GEORGIOS IOANNIDIS 13 6 EMMANOUHL ATHANASIADIS NULL 7 ELENH PALAIOLOGOU TABLE: CITY ID_City City_Name IDCountry 1 ATHENS 1 2 LONDON 5 3 THESSALONIKI 1 4 PARIS 3 5 MASSELLIE 3 6 LEYKOSIA 6 7 MOSCOW 7 8 ST.PETERSBURG 7 9 NOVOROSSISK 7 10 HELSINKI 2 TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND 3 FRENCH 4 CHINA 5 GREAT BRITAIN 6 CYPRUS 7 RUSSIA 8 HUNGARY
Cross Join (πινπνίεζε θαξηεζηαλνύ γηλνκέλνπ) Δξώηεζε 9 ε : Δπηιέμεηε ηα ζηνηρεία ησλ πόιεσλ θαη ησλ ρσξώλ SELECT * FROM COUNTRY, CITY (Το ερώηημα αυηό δεν έχει νόημα ζηον πραγμαηικό κόζμο!!! Γιαηί???) Δκθαλίδνληαη κόλν ηα 10 πξώηα απνηειέζκαηα... TABLE: COUNTRY x CITY ID_COUNTRY COUNTRY_NAME ID_CITY CITY_NAME IDCOUNTRY 1 GREECE 1 ATHENS 1 2 FINLAND 1 ATHENS 1 3 FRENCH 1 ATHENS 1 4 CHINA 1 ATHENS 1 5 GREAT BRITAIN 1 ATHENS 1 6 CYPRUS 1 ATHENS 1 7 RUSSIA 1 ATHENS 1 8 HUNGARY 1 ATHENS 1 1 GREECE 2 LONDON 5 2 FINLAND 2 LONDON 5
Equi-Join ΤΝΔΝΧΗ ΙΟΣΗΣΑ Υξεζηκνπνηείηαη γηα λα ζπλέλσζε πιεηάδσλ γηα ηηο νπνίεο είλαη αιεζήο ε ζπλζήθε ηζόηεηαο. Υξεζηκνπνηνύκε ηελ ζπλζήθε WHERE Η ζπλζήθε ηζόηεηαο πεξηιακβάλεη έλα δεύγνο από ην μέλν θιεηδί ζρέζεο Α, ην νπνίν δείρλεη ζην πξσηεύνλ θιεηδί κηαο ζρέζεο Β ηόηε επηζηξέθνληαη εγγξαθέο πνπ έρνπλ λόεκα ζην πξαγκαηηθό θόζκν Μπνξνύκε λα εκπινπηίζνπκε ηελ ζπλζήθε κε επηπιένλ ζπλζήθε κε ηνπο ινγηθνύο ηειεζηέο (and, or, not θηι) Δπηζηξέθνληαη όια ηα γλσξίζκαηα ησλ επηκέξνπο ζρέζεσλ πνπ ζπκκεηέρνπλ ζηελ ζπλέλσζε Δάλ δελ πεξηνξίζνπκε ηελ ιίζηα ησλ γλσξηζκάησλ πνπ ζα επηζηξαθνύλ
Δξώηεζε 10 ε :Δπηιέμηε όια ηα ζηνηρεία ησλ πόιεσλ θαη ησλ ρσξώλ ζηηο νπνίεο βξίζθνληαη SELECT * FROM COUNTRY, CITY WHERE CITY.IDCOUNTRY=COUNTRY.ID_COUNTRY TABLE: COUNTRY x CITY COUNTRY Σν γλώξηζκα ID_COUNTRY ηεο ζρέζεο COUNTRY CITY ID_COUNTRY COUNTRY_NAME ID_CITY CITY_NAME IDCOUNTRY 1 GREECE 1 ATHENS 1 1 GREECE 3 THESSALONIKI 1 2 FINLAND 10 HELSINKI 2 3 FRENCH 4 PARIS 3 3 FRENCH 5 MASSELLIE 3 5 GREAT BRITAIN 2 LONDON 5 6 CYPRUS 6 LEYKOSIA 6 7 RUSSIA 7 MOSCOW 7 7 RUSSIA 8 ST.PETERSBURG 7 7 RUSSIA 9 NOVOROSSISK 7 Δμηζώλνπκε ηα δπν πεδία
Σν πξνεγνύκελν εξώηεκα ηζνδύλακν κε ην: SELECT * FROM COUNTRY, CITY WHERE IDCOUNTRY=ID_COUNTRY Σα γλσξίζκαηα δελ έρνπλ αθξηβώο ην ίδην όλνκα.
Δξώηεζε 11 ε :Δπηιέμηε ην όλνκα ηεο πόιεο θαη ην όλνκα ηεο ρώξαο ζηελ νπνία βξίζθνληαη SELECT COUNTRY_NAME AS COUNTRY, CITY_NAME AS CITY FROM COUNTRY, CITY WHERE CITY.IDCOUNTRY=COUNTRY.ID_COUNTRY Μεηνλνκάδνπκε ην COUNTRY_NAME ζε COUNTRY (ΥΡΗΗ ΦΔΤΓΧΝΤΜΧΝ) TABLE: COUNTRY x CITY COUNTRY CITY GREECE ATHENS GREECE THESSALONIKI FINLAND HELSINKI FRENCH PARIS FRENCH MASSELLIE GREAT BRITAIN LONDON CYPRUS LEYKOSIA RUSSIA MOSCOW RUSSIA ST.PETERSBURG RUSSIA NOVOROSSISK Μπνξνύκε λα ζπλελώζνπκε θαη παξαπάλσ από δύν ζρέζεηο... Πσο?
Παξάδεηγκα 1 ν - ΠΡΔΒΔΙΔ TABLE: EMBASSY ID_Embassy Embassy_Name District Street Num Country_ City_ID ID 1 CHINESE EMBASSY IN ATHENS PSYCHIKO KRINON STR 2A 4 1 2 BRITISH EMBASSY IN ATHENS ATHENS PLOUTARHOU STR 1 5 1 3 CYPRIAN EMBASSY IN ATHENS ATHENS HERODOTOU STR 16 6 1 4 RUSSIAN EMBASSY IN ATHENS PSYCHIKO NIK.LYTRA STR 28 7 1 5 FRENCH CONSULATE IN THESSALONIKI THESSALONIKI MAKENZY KING STR 3 3 6 FINLAND CONSULATE IN THESSALONIKI ORAIOKASTRO ORAIOKASTROU 7KM 2 3 7 GREEK EMBASSY IN PARIS PARIS RUE AUGUSTE VACQUERIE 17 1 4 8 GREEK CONSULATE IN MASELLIE MASELLIE RUE RIGNAN 17 1 5 9 GREEK EMBASSY IN NICOSIA NICOSIA VYRONOS AV 8-10 1 6 10 GREEK EMBASSY IN MOSCOW MOSCOW LEONTIEFSKI PER. 4 1 7 11 GREEK COSULATE IN ST.PETERSBURG ST.PETERSBURG MIKHAILOVSKAYA ULITSA-HOTEL EUROPE 1/7 1 8 12 GREEK COSULATE IN NOVOROSSISK NOVOROSSISK ICAEVA-HOTEL NOVOROSSISK 2 1 9 13 GREEK ENBASSY IN LONDON W11 HOLLAND PARK 1A 1 2 14 BRITISH EMBASSY IN MOSCOW MOSCOW SMOLENSKAYA NABEREZHNAYA 10 5 7 15 BRITISH EMBASSY IN HELSINKI HELSINKI ITAINEN PUISTOTIE 17 5 9 16 RUSSIAN EMBASSY IN LONDON W8 4QS KENSINGTON PALACE GARDENS, 5 7 2 17 CHINESE EMBASSY IN LONDON W1B 1JL ORTLAND PLACE 49-51 4 2 18 FINLAND EMBASSY IN LONDON SW1X 8HW CHESHAM PLACE 38 2 2 19 FRENCH EMBASSY IN LONDON SW1X 7JT KNIGHTSBRIDGE 3 2 2 TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 11 3 IOANNHS KARAVATOS 12 4 IOANNIS KOMNINOS NULL 5 GEORGIOS IOANNIDIS 13 6 EMMANOUHL ATHANASIADIS NULL 7 ELENH PALAIOLOGOU TABLE: CITY ID_City City_Name IDCountry 1 ATHENS 1 2 LONDON 5 3 THESSALONIKI 1 4 PARIS 3 5 MASSELLIE 3 6 LEYKOSIA 6 7 MOSCOW 7 8 ST.PETERSBURG 7 9 NOVOROSSISK 7 10 HELSINKI 2 TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND 3 FRENCH 4 CHINA 5 GREAT BRITAIN 6 CYPRUS 7 RUSSIA 8 HUNGARY
Δξώηεζε 12 ε :Να πξνβιεζεί ην όλνκα ηεο θάζε πξεζβείαο πνπ βξίζθεηαη ζηελ πόιε ATHENS θαη ην όλνκα ηεο ρώξαο πνπ αληηπξνζσπεύεη ε πξεζβεία SELECT COUNTRY_NAME AS COUNTRY, EMBASSY_NAME AS EMBASSY, CITY_NAME AS incity FROM COUNTRY AS C1, EMBASSY AS E, CITY AS C2 WHERE C1.ID_COUNTRY=E.COUNTRY_ID AND E.CITY_ID=C2.ID_CITY AND CITY_NAME='ATHENS'; TABLE: COUNTRY x EMBASSY x CITY COUNTRY EMBASSY incity CHINA CHINESE EMBASSY IN ATHENS ATHENS GREAT BRITAIN BRITISH EMBASSY IN ATHENS ATHENS CYPRUS CYPRIAN EMBASSY IN ATHENS ATHENS RUSSIA RUSSIAN EMBASSY IN ATHENS ATHENS Μεηνλνκάδνπκε ην ΥΗΜΑ COUΝTRY ζε C1 Γηα κεγαιύηεξε επθνιία Γηα πξαθηηθνύο ιόγνπο αλαθεξόκαζηε παξαπάλσ από κία θνξά ζηνλ ίδην πίλαθα Αλαδξνκηθέο ζρέζεηο
Theta join Παξάγεη όινπο ηνπο ζπλδπαζκνύο ησλ εγγξαθώλ από ηηο ζρέζεηο R1 θαη R2 πνπ ηθαλνπνηνύλ ηελ ζπλζήθε ζπλέλσζεο Η ζπλζήθε επηινγήο δελ είλαη απνθιεηζηηθά ηζόηεηα Μπνξεί λα ρξεζηκνπνηεζεί νπνηνζδήπνηε από ηνπο παξαθάησ ηειεζηέο: <,=,>,>=,<=,<>
Παξάδεηγκα 1 ν - ΠΡΔΒΔΙΔ TABLE: EMBASSY ID_Embassy Embassy_Name District Street Num Country_ City_ID ID 1 CHINESE EMBASSY IN ATHENS PSYCHIKO KRINON STR 2A 4 1 2 BRITISH EMBASSY IN ATHENS ATHENS PLOUTARHOU STR 1 5 1 3 CYPRIAN EMBASSY IN ATHENS ATHENS HERODOTOU STR 16 6 1 4 RUSSIAN EMBASSY IN ATHENS PSYCHIKO NIK.LYTRA STR 28 7 1 5 FRENCH CONSULATE IN THESSALONIKI THESSALONIKI MAKENZY KING STR 3 3 6 FINLAND CONSULATE IN THESSALONIKI ORAIOKASTRO ORAIOKASTROU 7KM 2 3 7 GREEK EMBASSY IN PARIS PARIS RUE AUGUSTE VACQUERIE 17 1 4 8 GREEK CONSULATE IN MASELLIE MASELLIE RUE RIGNAN 17 1 5 9 GREEK EMBASSY IN NICOSIA NICOSIA VYRONOS AV 8-10 1 6 10 GREEK EMBASSY IN MOSCOW MOSCOW LEONTIEFSKI PER. 4 1 7 11 GREEK COSULATE IN ST.PETERSBURG ST.PETERSBURG MIKHAILOVSKAYA ULITSA-HOTEL EUROPE 1/7 1 8 12 GREEK COSULATE IN NOVOROSSISK NOVOROSSISK ICAEVA-HOTEL NOVOROSSISK 2 1 9 13 GREEK ENBASSY IN LONDON W11 HOLLAND PARK 1A 1 2 14 BRITISH EMBASSY IN MOSCOW MOSCOW SMOLENSKAYA NABEREZHNAYA 10 5 7 15 BRITISH EMBASSY IN HELSINKI HELSINKI ITAINEN PUISTOTIE 17 5 9 16 RUSSIAN EMBASSY IN LONDON W8 4QS KENSINGTON PALACE GARDENS, 5 7 2 17 CHINESE EMBASSY IN LONDON W1B 1JL ORTLAND PLACE 49-51 4 2 18 FINLAND EMBASSY IN LONDON SW1X 8HW CHESHAM PLACE 38 2 2 19 FRENCH EMBASSY IN LONDON SW1X 7JT KNIGHTSBRIDGE 3 2 2 TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 11 3 IOANNHS KARAVATOS 12 4 IOANNIS KOMNINOS NULL 5 GEORGIOS IOANNIDIS 13 6 EMMANOUHL ATHANASIADIS NULL 7 ELENH PALAIOLOGOU TABLE: CITY ID_City City_Name IDCountry 1 ATHENS 1 2 LONDON 5 3 THESSALONIKI 1 4 PARIS 3 5 MASSELLIE 3 6 LEYKOSIA 6 7 MOSCOW 7 8 ST.PETERSBURG 7 9 NOVOROSSISK 7 10 HELSINKI 2 TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND 3 FRENCH 4 CHINA 5 GREAT BRITAIN 6 CYPRUS 7 RUSSIA 8 HUNGARY
Δξώηεζε 13 ε : Να πξνβιεζεί ην όλνκα θάζε πξεζβεπηή κε ID>5 ζε ζπλδπαζκό κε ην όλνκα θάζε πξεζβείαο πνπ βξίζθνληαη ζε νδό κε λνύκεξν (NUM) κηθξόηεξν από ηνλ θσδηθό ηνπ αληίζηνηρνπ πξεζβεπηή SELECT NAME, EMBASSY_NAME AS EMBASSY FROM EMBASSY,AMBASSADOR WHERE ID>num AND ID>5; TABLE: EMBASSY x AMBASSADOR NAME EMBASSY EMMANOUHL CHINESE EMBASSY IN ATHENS ELENH CHINESE EMBASSY IN ATHENS EMMANOUHL BRITISH EMBASSY IN ATHENS ELENH BRITISH EMBASSY IN ATHENS EMMANOUHL FRENCH CONSULATE IN THESSALONIKI ELENH FRENCH CONSULATE IN THESSALONIKI EMMANOUHL GREEK EMBASSY IN MOSCOW ELENH GREEK EMBASSY IN MOSCOW EMMANOUHL GREEK COSULATE IN ST.PETERSBURG ELENH GREEK COSULATE IN ST.PETERSBURG EMMANOUHL GREEK COSULATE IN NOVOROSSISK ELENH GREEK COSULATE IN NOVOROSSISK EMMANOUHL GREEK ENBASSY IN LONDON ELENH GREEK ENBASSY IN LONDON EMMANOUHL RUSSIAN EMBASSY IN LONDON ELENH RUSSIAN EMBASSY IN LONDON EMMANOUHL FRENCH EMBASSY IN LONDON ELENH FRENCH EMBASSY IN LONDON
Inner join Ιζνδύλακν κε ην EQUI JOIN Πεξηζζόηεξν απνδνηηθή πξνζέγγηζε
Δξώηεζε 14 ε :Δπηιέμηε ην όλνκα ηεο πόιεο θαη ην όλνκα ηεο ρώξαο ζηελ νπνία βξίζθεηαη SELECT COUNTRY_NAME AS COUNTRY, CITY_NAME AS CITY FROM COUNTRY INNER JOIN CITY ON CITY.IDCOUNTRY=COUNTRY.ID_COUNTRY TABLE: COUNTRY x CITY COUNTRY CITY GREECE ATHENS GREECE THESSALONIKI FINLAND HELSINKI FRENCH PARIS FRENCH MASSELLIE GREAT BRITAIN LONDON CYPRUS LEYKOSIA RUSSIA MOSCOW RUSSIA ST.PETERSBURG RUSSIA NOVOROSSISK
Natural join Φπζηθή ζπλέλσζε Δπηζηξέθεη ηηο εγγξαθέο γηα ηηο νπνίεο ηζρύεη ε ζπλζήθε ηζόηεηαο ζην γλώξηζκα ζπλέλσζεο Σν θνηλό γλώξηζκα (γλώξηζκα ζπλέλσζεο) επηζηξέθεηαη κία θνξά
Δξώηεζε 15 ε :Πξνβάιεηε ηα ζηνηρεία ησλ πξεζβεπηώλ θαη ηα ζηνηρεία ησλ πξεζβεηώλ ζηελ νπνία ππεξεηεί έθαζηνο. SELECT * FROM AMBASSADOR NATURAL JOIN EMBASSY Σν γλώξηζκα ζπλέλσζεο εκθαλίδεηαη κόλν κία θνξά TABLE: EMBASSY * EMBASSADOR ID_ EMBASSY ID NAME SURNAME EMBASSY _NAME DISTRICT STREET NUM COUNTRY _ID CITY _ID 8 1 NIKOLA OS FOKAS GREEK CONSULATE IN MASELLIE MASELLIE RUE RIGNAN 17 1 5 10 2 MARIA KOUFOPOULO U GREEK EMBASSY IN MOSCOW MOSCOW LEONTIEFSKI PER. 4 1 7 11 3 IOANNI S KARAVATOS GREEK COSULATE IN ST.PETERSBURG ST.PETERSBUR G IKHAILOVSKAYA ULITSA- HOTEL EUROPE 1/7 1 8 12 4 IOANNI S KOMNINOS GREEK COSULATE IN NOVOROSSISK NOVOROSSISK ICAEVA-HOTEL NOVOROSSISK 2 1 9 13 6 EMMANO UHL ATHANASIAD IS GREEK ENBASSY IN LONDON W11 HOLLAND PARK 1A 1 2
OUTER JOINS Δπηζηξέθνληαη θαη εγγξαθέο πνπ ζην γλώξηζκα ζπλέλσζεο παίξλνπλ ηηκή Null. LEFT OUTER JOIN: Δπηζηξέθνληαη όιεο νη εγγξαθέο ηνπ πίλαθα «αξηζηεξά» ηεο ζπλέλσζεο (έζησ Α) θαη όζεο εγγξαθέο ηνπ πίλαθα «δεμηά» ηεο ζπλέλσζεο (έζησ Γ) γηα ηηο νπνίεο ηζρύεη Α.join_attribute=Γ.join_attribute RIGHT OUTER JOIN: Αληίζηνηρα FULL OUTER JOIN: Δπηζηξέθνληαη όιεο νη πιεηάδεο αξηζηεξά θαη δεμηά ηεο ζπλέλσζεο. Γηα όζεο ηζρύεη Α.join_attribute=Γ.join_attribute εκθαλίδνληαη ζηελ ίδηα πιεηάδα
Παξάδεηγκα 1 ν - ΠΡΔΒΔΙΔ TABLE: EMBASSY ID_Embassy Embassy_Name District Street Num Country_ City_ID ID 1 CHINESE EMBASSY IN ATHENS PSYCHIKO KRINON STR 2A 4 1 2 BRITISH EMBASSY IN ATHENS ATHENS PLOUTARHOU STR 1 5 1 3 CYPRIAN EMBASSY IN ATHENS ATHENS HERODOTOU STR 16 6 1 4 RUSSIAN EMBASSY IN ATHENS PSYCHIKO NIK.LYTRA STR 28 7 1 5 FRENCH CONSULATE IN THESSALONIKI THESSALONIKI MAKENZY KING STR 3 3 6 FINLAND CONSULATE IN THESSALONIKI ORAIOKASTRO ORAIOKASTROU 7KM 2 3 7 GREEK EMBASSY IN PARIS PARIS RUE AUGUSTE VACQUERIE 17 1 4 8 GREEK CONSULATE IN MASELLIE MASELLIE RUE RIGNAN 17 1 5 9 GREEK EMBASSY IN NICOSIA NICOSIA VYRONOS AV 8-10 1 6 10 GREEK EMBASSY IN MOSCOW MOSCOW LEONTIEFSKI PER. 4 1 7 11 GREEK COSULATE IN ST.PETERSBURG ST.PETERSBURG MIKHAILOVSKAYA ULITSA-HOTEL EUROPE 1/7 1 8 12 GREEK COSULATE IN NOVOROSSISK NOVOROSSISK ICAEVA-HOTEL NOVOROSSISK 2 1 9 13 GREEK ENBASSY IN LONDON W11 HOLLAND PARK 1A 1 2 14 BRITISH EMBASSY IN MOSCOW MOSCOW SMOLENSKAYA NABEREZHNAYA 10 5 7 15 BRITISH EMBASSY IN HELSINKI HELSINKI ITAINEN PUISTOTIE 17 5 9 16 RUSSIAN EMBASSY IN LONDON W8 4QS KENSINGTON PALACE GARDENS, 5 7 2 17 CHINESE EMBASSY IN LONDON W1B 1JL ORTLAND PLACE 49-51 4 2 18 FINLAND EMBASSY IN LONDON SW1X 8HW CHESHAM PLACE 38 2 2 19 FRENCH EMBASSY IN LONDON SW1X 7JT KNIGHTSBRIDGE 3 2 2 TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 11 3 IOANNHS KARAVATOS 12 4 IOANNIS KOMNINOS NULL 5 GEORGIOS IOANNIDIS 13 6 EMMANOUHL ATHANASIADIS NULL 7 ELENH PALAIOLOGOU TABLE: CITY ID_City City_Name IDCountry 1 ATHENS 1 2 LONDON 5 3 THESSALONIKI 1 4 PARIS 3 5 MASSELLIE 3 6 LEYKOSIA 6 7 MOSCOW 7 8 ST.PETERSBURG 7 9 NOVOROSSISK 7 10 HELSINKI 2 TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND 3 FRENCH 4 CHINA 5 GREAT BRITAIN 6 CYPRUS 7 RUSSIA 8 HUNGARY
Δξώηεζε 16 ε : Πξνβάιεηε ηo όλνκα θαη ηνλ θσδηθό όισλ ησλ πξεζβεπηώλ θαζώο θαη ην όλνκα ηεο πξεζβείαο ζηελ νπνία ππεξεηεί έθαζηνο. SELECT ID,NAME,EMBASSY_NAME FROM AMBASSADOR LEFT OUTER JOIN EMBASSY ON AMBASSADOR.ID_EMBASSY = EMBASSY.ID_EMBASSY TABLE: AMBASSADOR EMBASSY ID NAME EMBASSY_NAME 1 NIKOLAOS GREEK CONSULATE IN MASELLIE 2 MARIA GREEK EMBASSY IN MOSCOW 3 IOANNIS GREEK COSULATE IN ST.PETERSBURG 4 IOANNIS GREEK COSULATE IN NOVOROSSISK 5 GEORGIOS NULL 6 EMMANOUHL GREEK ENBASSY IN LONDON 7 ELENH NULL
Δξώηεζε 17 ε : Πξνβάιεηε ηo όλνκα ηεο θάζε πξεζβείαο θαη ηνλ θσδηθό θαη ην όλνκα όισλ ησλ πξεζβεπηώλ πνπ ππεξεηνύλ ζε απηή, εθόζνλ ε πιεξνθνξία είλαη δηαζέζηκε SELECT ID,NAME,EMBASSY_NAME FROM AMBASSADOR RIGHT OUTER JOIN EMBASSY ON AMBASSADOR.ID_EMBASSY = EMBASSY.ID_EMBASSY TABLE: AMBASSADOR EMBASSY ID NAME EMBASSY_NAME NULL NULL CHINESE EMBASSY IN ATHENS NULL NULL BRITISH EMBASSY IN ATHENS NULL NULL CYPRIAN EMBASSY IN ATHENS NULL NULL RUSSIAN EMBASSY IN ATHENS NULL NULL FRENCH CONSULATE IN THESSALONIKI NULL NULL FINLAND CONSULATE IN THESSALONIKI NULL NULL GREEK EMBASSY IN PARIS 1 NIKOLAOS GREEK CONSULATE IN MASELLIE NULL NULL GREEK EMBASSY IN NICOSIA 2 MARIA GREEK EMBASSY IN MOSCOW 3 IOANNIS GREEK COSULATE IN ST.PETERSBURG 4 IOANNIS GREEK COSULATE IN NOVOROSSISK 6 EMMANOUHL GREEK ENBASSY IN LONDON NULL NULL BRITISH EMBASSY IN MOSCOW NULL NULL BRITISH EMBASSY IN HELSINKI NULL NULL RUSSIAN EMBASSY IN LONDON NULL NULL CHINESE EMBASSY IN LONDON NULL NULL FINLAND EMBASSY IN LONDON NULL NULL FRENCH EMBASSY IN LONDON
Πξάμεηο πλόισλ Οη πξάμεηο ζπλόισλ έλσζε (union), ηνκή (intersect), θαη δηαθνξά (except) Δθαξκόδνληαη ζε ζρέζεηο πνπ έρνπλ ην ίδην πιήζνο γλσξηζκάησλ θαη ηα αληίζηνηρα γλσξίζκαηα ηνπο, έρνπλ ην ίδην πεδίν νξηζκνύ. Αληηζηνηρνύλ ζηηο πξάμεηο ηεο ζρεζηαθήο άιγεβξαο Κάζε κία από ηηο παξαπάλσ πξάμεηο εμαιείθεη απηόκαηα ηηο δηπιόηππεο εγγξαθέο. Γηα λα επηζηξαθνύλ όιεο νη εγγξαθέο ζα πξέπεη λα ρξεζηκνπνηεζνύλ νη αληίζηνηρεο multiset εθδόζεηο ησλ πξνεγνύκελσλ πξάμεσλ union all, intersect all θαη except all. Τπνζέζηε όηη κηα πιεηάδα εκθαλίδεηαη m θνξέο ζε κία ζρέζε r θαη n υοπέρ σε μία σσέση s, τότε εμυανίζεται: m + n υορές στην σχέση r union all s min(m,n) υορές στην σχέση r intersect all s max(0, m n) υορές στην σχέση r except all s
Παξάδεηγκα 1 ν - ΠΡΔΒΔΙΔ TABLE: EMBASSY ID_Embassy Embassy_Name District Street Num Country_ City_ID ID 1 CHINESE EMBASSY IN ATHENS PSYCHIKO KRINON STR 2A 4 1 2 BRITISH EMBASSY IN ATHENS ATHENS PLOUTARHOU STR 1 5 1 3 CYPRIAN EMBASSY IN ATHENS ATHENS HERODOTOU STR 16 6 1 4 RUSSIAN EMBASSY IN ATHENS PSYCHIKO NIK.LYTRA STR 28 7 1 5 FRENCH CONSULATE IN THESSALONIKI THESSALONIKI MAKENZY KING STR 3 3 6 FINLAND CONSULATE IN THESSALONIKI ORAIOKASTRO ORAIOKASTROU 7KM 2 3 7 GREEK EMBASSY IN PARIS PARIS RUE AUGUSTE VACQUERIE 17 1 4 8 GREEK CONSULATE IN MASELLIE MASELLIE RUE RIGNAN 17 1 5 9 GREEK EMBASSY IN NICOSIA NICOSIA VYRONOS AV 8-10 1 6 10 GREEK EMBASSY IN MOSCOW MOSCOW LEONTIEFSKI PER. 4 1 7 11 GREEK COSULATE IN ST.PETERSBURG ST.PETERSBURG MIKHAILOVSKAYA ULITSA-HOTEL EUROPE 1/7 1 8 12 GREEK COSULATE IN NOVOROSSISK NOVOROSSISK ICAEVA-HOTEL NOVOROSSISK 2 1 9 13 GREEK ENBASSY IN LONDON W11 HOLLAND PARK 1A 1 2 14 BRITISH EMBASSY IN MOSCOW MOSCOW SMOLENSKAYA NABEREZHNAYA 10 5 7 15 BRITISH EMBASSY IN HELSINKI HELSINKI ITAINEN PUISTOTIE 17 5 9 16 RUSSIAN EMBASSY IN LONDON W8 4QS KENSINGTON PALACE GARDENS, 5 7 2 17 CHINESE EMBASSY IN LONDON W1B 1JL ORTLAND PLACE 49-51 4 2 18 FINLAND EMBASSY IN LONDON SW1X 8HW CHESHAM PLACE 38 2 2 19 FRENCH EMBASSY IN LONDON SW1X 7JT KNIGHTSBRIDGE 3 2 2 TABLE: AMBASSADOR ID_Embassy ID NAME SURNAME 8 1 NIKOLAOS FOKAS 10 2 MARIA KOUFOPOULOU 11 3 IOANNHS KARAVATOS 12 4 IOANNIS KOMNINOS NULL 5 GEORGIOS IOANNIDIS 13 6 EMMANOUHL ATHANASIADIS NULL 7 ELENH PALAIOLOGOU TABLE: CITY ID_City City_Name IDCountry 1 ATHENS 1 2 LONDON 5 3 THESSALONIKI 1 4 PARIS 3 5 MASSELLIE 3 6 LEYKOSIA 6 7 MOSCOW 7 8 ST.PETERSBURG 7 9 NOVOROSSISK 7 10 HELSINKI 2 TABLE: COUNTRY ID_COUNTRY COUNTRY_NAME 1 GREECE 2 FINLAND 3 FRENCH 4 CHINA 5 GREAT BRITAIN 6 CYPRUS 7 RUSSIA 8 HUNGARY
Δξώηεζε 18 ε : Πξνβάιεηε ηo όλνκα θαη ηνλ θσδηθό όισλ ησλ πξεζβεηώλ ηεο Κίλαο θαη ηεο Ρσζίαο (SELECT ID_EMBASSY,EMBASSY_NAME FROM EMBASSY AS E INNER JOIN COUNTRY AS C ON E.COUNTRY_ID=C.ID_COUNTRY WHERE COUNTRY_NAME= RUSSIA ) UNION (SELECT ID_EMBASSY,EMBASSY_NAME FROM EMBASSY AS E INNER JOIN COUNTRY AS C ON E.COUNTRY_ID=C.ID_COUNTRY WHERE COUNTRY_NAME= CHINA ) TABLE: EMBASSY ID_EMBASSY EMBASSY_NAME 4 RUSSIAN EMBASSY IN ATHENS 16 RUSSIAN EMBASSY IN LONDON 1 CHINESE EMBASSY IN ATHENS 17 CHINESE EMBASSY IN LONDON
Δξώηεζε 19 ε : Πξνβάιεηε ηα νλόκαηα ησλ ρσξώλ νη νπνίεο δηαηεξνύλ πξεζβείεο ζηελ Διιάδα θαη ζηελ Μεγάιε Βξεηαλία (SELECT FOREIGN_C.COUNTRY_NAME FROM COUNTRY AS FOREIGN_C INNER JOIN EMBASSY AS E ON E.COUNTRY_ID=FOREIGN_C.ID_COUNTRY INNER JOIN CITY AS C2 ON E.CITY_ID=C2.ID_CITY INNER JOIN COUNTRY AS HOSTING_C ON HOSTING_C.ID_COUNTRY=C2.IDCOUNTRY WHERE HOSTING_C.COUNTRY_NAME= 'GREECE') INTERSECT (SELECT FOREIGN_C.COUNTRY_NAME FROM COUNTRY AS FOREIGN_C INNER JOIN EMBASSY AS E ON E.COUNTRY_ID=FOREIGN_C.ID_COUNTRY INNER JOIN CITY AS C2 ON E.CITY_ID=C2.ID_CITY INNER JOIN COUNTRY AS HOSTING_C ON HOSTING_C.ID_COUNTRY=C2.IDCOUNTRY WHERE HOSTING_C.COUNTRY_NAME= GREAT BRITAIN') TABLE: FOREIGN_C EMBASSY CITY HOSTING_C Γεκηνπξγνύκε δύν ζηηγκηόηππα ηεο ίδηαο ζρέζεο COUNTRY_NAME FINLAND FRENCH CHINA RUSSIA
Δξώηεζε 20 ε : Πξνβάιεηε ηα νλόκαηα ησλ ρσξώλ νη νπνίεο δηαηεξνύλ πξεζβείεο ζηελ Διιάδα αιιά όρη ζηελ Μεγάιε Βξεηαλία (SELECT FOREIGN_C.COUNTRY_NAME FROM COUNTRY AS FOREIGN_C INNER JOIN EMBASSY AS E ON E.COUNTRY_ID=FOREIGN_C.ID_COUNTRY INNER JOIN CITY AS C2 ON E.CITY_ID=C2.ID_CITY INNER JOIN COUNTRY AS HOSTING_C ON HOSTING_C.ID_COUNTRY=C2.IDCOUNTRY WHERE HOSTING_C.COUNTRY_NAME= 'GREECE') EXCEPT (SELECT FOREIGN_C.COUNTRY_NAME FROM COUNTRY AS FOREIGN_C INNER JOIN EMBASSY AS E ON E.COUNTRY_ID=FOREIGN_C.ID_COUNTRY INNER JOIN CITY AS C2 ON E.CITY_ID=C2.ID_CITY INNER JOIN COUNTRY AS HOSTING_C ON HOSTING_C.ID_COUNTRY=C2.IDCOUNTRY WHERE HOSTING_C.COUNTRY_NAME= GREAT BRITAIN') TABLE: FOREIGN_C EMBASSY CITY HOSTING_C COUNTRY_NAME GREAT BRITAIN CYPRUS
πλαζξνηζηηθέο πλαξηήζεηο Οη ζπγθεθξηκέλεο ζπλαξηήζεηο εθαξκόδνληαη ζε γλσξίζκαηα ζρέζεσλ θαη επηζηξέθνπλ κία ηηκή Παξαδείγκαηα ηέηνησλ ζπλαξηήζεσλ avg: κέζνο όξνο min: minimum value (ειάρηζηε ηηκή) max: maximum value (κέγηζηε ηηκή) sum: άζξνηζκα ηηκώλ count: θαηακέηξεζε εγγξαθώλ Όιεο νη ζπλαζξνηζηηθέο ζπλαξηήζεηο αγλννύλ ηηο πιεηάδεο κε null ηηκέο ζηα γλσξίζκαηα ζηα νπνία εθαξκόδνληαη εθηόο ηεο count(*) Γελ κπνξεί λα ρξεζηκνπνηεζνύλ ζύλζεηεο ζπλαζξνηζηηθέο ζπλαξηήζεηο ζηελ SQL. Πχ max(avg( ))
Δξώηεζε 21 ε : Να βξεζεί ην πιήζνο ησλ πξεζβεηώλ πνπ είλαη θαηαγεγξακκέλεο ζηελ βάζε SELECT count(*) AS Plithos FROM EMBASSY Δθαξκόδνπκε κεηνλνκαζία TABLE: EMBASSY PLITHOS 19
Δξώηεζε 22 ε : Να βξεζεί ην πιήζνο ησλ δηαθξηηώλ πεξηνρώλ πνπ θηινμελνύληαη πξεζβείεο SELECT count(distinct district) AS Plithos FROM EMBASSY Δπηζηξέθεη κόλν ηηο δηαθξηηέο ηηκέο TABLE: EMBASSY PLITHOS 16 SELECT count(district) AS Plithos FROM EMBASSY TABLE: EMBASSY PLITHOS 19
Δληνιή νκαδνπνίεζεο Group By Οκαδνπνηεί ηηο εγγξαθέο κε βάζε έλα ή πεξηζζόηεξα γλσξίζκαηα Γηα λα εθαξκόζνπκε ηηο ζπλαζξνηζηηθέο ζπλαξηήζεηο όρη κόλν ζε πιεηάδεο αιιά θαη ζε ππν-ζύλνια πιεηάδσλ κηαο ζρέζεο ρξεζηκνπνηνύκε ην group by Γειαδή, νκαδνπνηνύκε ηηο πιεηάδεο πνπ έρνπλ ηελ ίδηα ηηκή γηα θάπνηα γλσξίζκαηα θαη εθαξκόδνπκε ηε ζπλαζξνηζηηθή ζπλάξηεζε ζε θάζε νκάδα αλεμάξηεηα Σεκ: Τα γλωρίζκαηα ποσ εκθαλίδοληαη ζε κία δήιωζε select θαη δελ εθαρκόδεηαη ζε ασηά κία ζσλαζροηζηηθή ζσλάρηεζε ζα πρέπεη λα περηιακβάλοληαη ζηελ ιίζηα ηωλ γλωρηζκάηωλ οκαδοποίεζες
Δξώηεζε 23 ε : Να πξνβιεζεί ην όλνκα θάζε ρώξαο θαη ην αληίζηνηρν πιήζνο ησλ πξεζβεηώλ πνπ δηαηεξεί ε ρώξα ζην εμσηεξηθό SELECT FOREIGN_C.COUNTRY_NAME,COUNT(*) AS PLITHOS FROM COUNTRY AS FOREIGN_C INNER JOIN EMBASSY AS E ON E.COUNTRY_ID=FOREIGN_C.ID_COUNTRY GROUP BY FOREIGN_C.ID_COUNTRY; Οκαδνπνηνύκε ηηο εγγξαθέο κε βάζε ησλ θσδηθό ηεο ρώξαο πνπ δηαηεξεί πξεζβεία ζην εμσηεξηθό TABLE: FOREIGN_C EMBASSY COUNTRY_NAME PLITHOS GREECE 7 FINLAND 2 FRENCH 2 CHINA 2 GREAT BRITAIN 3 CYPRUS 1 RUSSIA 2
Having Μαο επηηξέπεη λα επηζηξέςνπκε πιεηάδεο νη νπνίεο ηθαλνπνηνύλ θάπνην θξηηήξην εάλ εθαξκνζηεί ζε απηέο κία ζπλαζξνηζηηθή ζπλάξηεζε. Having avg(price)<10 Having count(id) between 2 and 4 Having max(grade) < 15 Δίλαη δπλαηό λα έρνπκε ζηελ ίδηα εληνιή select ηαπηόρξνλα θαη δήισζε where θαη δήισζε having Η εθαξκνγή ησλ θξηηεξίσλ πνπ επηθέξεη ε δήισζε Having εθαξκόδεηαη ζηηο εγγξαθέο κεηά ηελ νκαδνπνίεζε ελώ ε εθαξκνγή ησλ θξηηεξίσλ πνπ επηθέξεη ε δήισζε where εθαξκόδεηαη πξηλ ηελ νκαδνπνίεζε