ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #6

Το θύρηο κέρος ηοσ σιηθού προέρτεηαη από δηαθάλεηες ηοσ Δ. Καηζίθαροσ ( ηολ οποίο εσταρηζηούκε ζερκά

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

MySQL Εργαστήριο #3 Structured Query Language - SQL

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #5

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Εργαστήριο Βάσεων Δεδομένων

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

Τμήμα Διοίκησης Επιχειρήσεων

Εργαστήριο Βάσεων Δεδομένων. Triggers

Εργαστήριο Βάσεων Δεδομένων

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Εργαστήριο Βάσεων Δεδομένων

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012

Οδηγίες Χρήσης της MySQL

Οδηγίες Χρήσης της MySQL

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης -

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Σχεδιασμός Βάσεων Δεδομένων

Τμήμα Πληροφορικής ΑΠΘ

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Βάσεις Δεδομένων (Databases)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Ηλεκτρονικοί Υπολογιστές II

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model. Νικόλαος Ζ. Ζάχαρης

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

ΕΠΛ 342 Βάσεις εδοµένων

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

MOCϦϣΎϬϴϠϋϝϮμΤϟϢΗϊΟήϤϟ. USE northwind SELECT employeeid, lastname, firstname, title FROM employees GO

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

Διαχείριση Πολιτισμικών Δεδομένων

1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Ανοικτά Ακαδημαϊκά Μαθήματα

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

. Εργαστήριο Βάσεων Δεδομένων. Triggers

Εισαγωγή στην πληροφορική

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

SQL Server 2005 Tutorial Αςκήςεισ. Γεράσιμος Μαρκέτος InfoLab, Τμήμα Ρληροφορικήσ, Ρανεπιςτήμιο Ρειραιϊσ (

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Φυσική Σχεδίαση Υλοποίηση βάσης

Βάσεις Δεδομένων. Ενότητα 7.2: Structured Query Language - 2 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

Βάσεις Δεδομένων. Structured Query Language -SQL. Φροντιστήριο 5 ο

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 4ο Μάθημα: SQL - Παράδειγμα. Δρ. Κωνσταντίνος Χ.

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

databases linux - terminal (linux / windows terminal)

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

ΔΟΜΕΣ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ

Σύνολα Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Το σχεσιακό μοντέλο βάσεων δεδομένων

Βάσεις Περιβαλλοντικών Δεδομένων


Τεχνολογία Πολιτισμικού Λογισμικού

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

Μάθημα Βάσεις Δεδομένων Ι - Ασκήσεις Επανάληψης

Βάσεις Δεδομένων (Databases)

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

Ηλεκτρονικοί Υπολογιστές II

Κεφ 4: Προχωρημένες Εντολές SQL

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Παράδειγμα Εμφιαλωτήριο. Διάγραμμα Οντοτήτων - Συσχετίσεων

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Τεχνολογία Πολιτισμικού Λογισμικού

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

MySQL Εργαστήριο #2 Γλώσσα Ορισμού Δεδομένων Ακεραιότητα Δεδομένων

Βάσεις Δεδομένων 3η εργαστηριακή άσκηση

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3 Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Φεβρουάριος 2008

Περιεχόμενα ξένα κλειδιά INSERT SELECT

shell> mysql -uroot -p (προηγούμενο εργαστήριο) σύνδεση με τον server

Foreign Keys Τα ξένα κλειδιά ορίζονται κατά την δημιουργία του πίνακα. Φυσικά μπορούν να προστεθούν και αργότερα. CREATE TABLE Πάμε στο manual να δούμε για αυτήν την εντολή...

(προηγούμενο εργαστήριο) Δημιουργία πινάκων CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option]... create_definition: col_name column_definition [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) column_definition: data_type [NOT NULL NULL] [DEFAULT default_value] table_option: {ENGINE TYPE} [=] engine_name AUTO_INCREMENT [=] value http://dev.mysql.com/doc/refman/5.0/en/create-table.html

Foreign Keys Ποιό τμήμα της εντολής είναι υπεύθυνο για την δημιουργία των ξένων κλειδιών; Βρείτε το, στην σύνταξη της CREATE TABLE...

Foreign Keys Δημιουργία πινάκων για δοκιμή Το ER της βάσης πάνω στην οποία θα κάνουμε τις δοκιμές: http://dev.mysql.com/doc/refman/5.0/en/create-table.html

Δημιουργία πινάκων CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option]... create_definition: col_name column_definition [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition reference_definition: REFERENCES tbl_name [(index_col_name,...)] [MATCH FULL MATCH PARTIAL MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT CASCADE SET NULL NO ACTION

Foreign Keys Δημιουργία πινάκων για δοκιμή mysql> CREATE DATABASE dokimi1; mysql> USE dokimi1; mysql> CREATE TABLE people( id INT, name VARCHAR(30), surname VARCHAR(30), PRIMARY KEY (id) ) ENGINE=InnoDB; mysql> CREATE TABLE addresses( id INT, street VARCHAR(30), number INT, PRIMARY KEY (id) ) ENGINE=InnoDB;

Foreign Keys Δημιουργία πινάκων για δοκιμή mysql> CREATE TABLE p2a( people_id INT, address_id INT, PRIMARY KEY (people_id, address_id), FOREIGN KEY (people_id) REFERENCES people (id), FOREIGN KEY (address_id) REFERENCES addresses (id) ) ENGINE=InnoDB;

INSERT εισαγωγή δεδομένων Για την εισαγωγή των δεδομένων χρησιμοποιούμε την εντολή INSERT Πάμε στο manual να δούμε για αυτήν την εντολή...

INSERT εισαγωγή δεδομένων Το ER της βάσης πάνω στην οποία θα κάνουμε τις δοκιμές: INSERT [LOW_PRIORITY DELAYED HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr DEFAULT},...),(...),... Aν θέλω να εισάγω στον πίνακα people τις τιμές nikos papadopoulos (με id =1) πώς θα συντάξω την εντολή; http://dev.mysql.com/doc/refman/5.0/en/insert.html

INSERT εισαγωγή δεδομένων INSERT INTO people (id, name, surname) VALUES (1, 'nikos', 'papadopoulos'); Aν θέλω να εισάγω στον πίνακα people τις τιμές maria papadopoulou dimitra papadopoulou (με id =2, 4) http://dev.mysql.com/doc/refman/5.0/en/insert.html

INSERT εισαγωγή δεδομένων INSERT INTO people (id, name, surname) VALUES (2, 'maria', 'papadopoulou'), (4, 'dimitra', 'papadopoulou'); Aν θέλω να εισάγω στον πίνακα addresses τις τιμές labraki 50 labraki 45 akadimias 104 (με id =1, 2, 15) http://dev.mysql.com/doc/refman/5.0/en/insert.html

INSERT εισαγωγή δεδομένων INSERT INTO addresses (id, street, number) VALUES (1, 'labraki', 50), (2, 'akadimias', 45), (15, 'labraki', 104); http://dev.mysql.com/doc/refman/5.0/en/insert.html

INSERT εισαγωγή δεδομένων Ο nikos μένει στην διέθυνση 1 Η maria μένει στην διέθυνση 2 H dimitra μένει στην διέθυνση 15 και 1 INSERT INTO p2a (people_id, address_id) VALUES (1, 1), (2,2), (4, 15), (4, 1);

INSERT σφάλματα INSERT INTO people (id, name, surname) VALUES (1, 'aa', 'bb'); INSERT INTO p2a (people_id, address_id) VALUES (1, 40);

Example Database `world` Στην διεύθυνση http://dev.mysql.com/doc/ υπάρχουν υποδείγματα βάσεων δεδομένων (example databases). Κατεβάστε την βάση δεδομένων world στο home σας. Για να αποσυμπιέσετε το αρχείο: shell> unzip world.sql.zip Για να φορτώσουμε το backup της βάσης στον server: mysql> CREATE DATABASE world1; shell> mysql -uroot -p world1 < world.sql

SELECT City( ID, Name, CountryCode, District, Population) SELECT * ; (4079) SELECT Name, Population ; (4079) SELECT Name, Population WHERE Population < 100000; (517) SELECT Name, Population WHERE Population < 100000 AND Population > 25000; (455)

SELECT City( ID, Name, CountryCode, District, Population) SELECT Name, Population WHERE Name LIKE 'A%'; (259) SELECT Name, Population WHERE Name LIKE 'A%en%'; (20) SELECT Name, Population WHERE Name LIKE 'A%' UNION SELECT Name, Population WHERE Name LIKE 'B%';

SELECT aggregate functions City( ID, Name, CountryCode, District, Population) SELECT District, CountryCode ; (4079) SELECT DISTINCT(CountryCode) ; (232) SELECT COUNT(DISTINCT(CountryCode)) ; (1) SELECT MAX(Population) ; (1) SELECT MAX(Population), Name ; (???)

SELECT SELECT aggregate functions City( ID, Name, CountryCode, District, Population) SELECT MAX(Population), Name GROUP BY Name; SELECT MAX(Population), Name GROUP BY Name ORDER BY Population; SELECT SUM(Population) AS Total, District GROUP BY District ORDER BY Total;

SELECT SELECT aggregate functions City( ID, Name, CountryCode, District, Population) SELECT SUM(Population) AS Total, District GROUP BY District ORDER BY Total DESC; SELECT SUM(Population) AS Total, District GROUP BY District ORDER BY Total DESC LIMIT 5; /* LIMIT : MySQL Specific */

SELECT nested SELECTs City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,... SurfaceArea, IndepYear, Population,...) SELECT Code, Name FROM Country WHERE IndepYear > 1920 AND Continent='Asia'; SELECT Name WHERE CountryCode IN ( SELECT Code FROM Country WHERE IndepYear > 1920 AND Continent='Asia');

SELECT JOINs City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,... SurfaceArea, IndepYear, Population,...) SELECT City.Name, Country.Name, Country; City: 4000 rows Country: 200 rows City x Country: 800000 rows Πατήστε Ctrl+C για να σταματήσει το αίτημα (o client)

SELECT Name FROM Country WHERE Continent ='Asia'; (51) SELECT JOINs SELECT Name WHERE Population > 4000000; (33) 51x33~1600 SELECT City.Name, Country.Name, Country WHERE Country.Continent ='Asia' AND City.Population > 4000000; (κάθε πόλη εμφανίζεται με τις 33 χώρες)

SELECT JOINs City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,... SurfaceArea, IndepYear, Population,...) SELECT City.Name, City.CountryCode, Country.Name, Country.Code, Country WHERE Country.Continent ='Asia' AND City.Population > 4000000; SELECT City.Name, Country.Name, Country WHERE Country.Continent ='Asia' AND City.Population > 4000000 AND City.CountryCode = Country.Code;

SELECT JOINs City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,...) SELECT City.Name, Country.Name, Country WHERE City.CountryCode = Country.Code; SELECT City.Name, Country.Name, Country WHERE City.CountryCode = Country.Code; SELECT City.Name, Country.Name JOIN Country; Ας δούμε την σύνταξη του join (03-SQL.pdf σελ 16 )

SELECT JOINs City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,...) SELECT City.Name, Country.Name INNER JOIN Country ON City.CountryCode = Country.Code; SELECT City.Name, Country.Name INNER JOIN Country ON City.CountryCode = Country.Code WHERE Country.Continent ='Asia' AND City.Population > 4000000;

City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,...) SELECT JOINs SELECT t1.name, t2.name FROM (SELECT Name, Code FROM Country WHERE Continent ='Asia') AS t1, (SELECT Name, CountryCode WHERE Population > 4000000) AS t2 WHERE t2.countrycode = t1.code; SELECT t1.name, t2.name FROM (SELECT Name, Code FROM Country WHERE Continent ='Asia') AS t1 INNER JOIN (SELECT Name, CountryCode WHERE Population > 4000000) AS t2 ON t2.countrycode = t1.code;

City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,...) SELECT JOINs SELECT t1.name, t2.name FROM (SELECT Name, Code FROM Country WHERE Continent ='Asia') AS t1 RIGHT OUTER JOIN (SELECT Name, CountryCode WHERE Population > 4000000) AS t2 ON t2.countrycode = t1.code;

City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,...) SELECT JOINs SELECT t1.name, t2.name FROM (SELECT Name, Code FROM Country WHERE Continent ='Asia') AS t1 LEFT OUTER JOIN (SELECT Name, CountryCode WHERE Population > 4000000) AS t2 ON t2.countrycode = t1.code;