// SQL Reference Sheet DROP DATABASE IF EXISTS movies_db; CREATE DATABASE movies_db; USE movies_db; CREATE TABLE movies( id INTEGER(11) AUTO_INCREMENT NOT NULL, directorId INTEGER(11), title VARCHAR(100), grade CHAR(1), releaseDate DATE, PRIMARY KEY (id) ); CREATE TABLE directors( id INTEGER(11) AUTO_INCREMENT NOT NULL, firstName VARCHAR(100), lastName VARCHAR(100), academyAward BOOLEAN NOT NULL, rating DECIMAL(10,4) NULL, average_rating DOUBLE(10,4) NULL, PRIMARY KEY (id) ); INSERT INTO directors (firstName, lastName, academyAward, rating) values ('Steven', 'Spielberg', TRUE, 2.00); INSERT INTO directors (firstName, lastName, academyAward, rating) values ('Quentin', 'Tarantino', TRUE, 1.00); INSERT INTO directors (firstName, lastName, academyAward, rating) values ('John', 'Hughes', FALSE, 9.00); INSERT INTO directors (firstName, lastName, academyAward, rating) values ('Brian', 'Helgeland', TRUE, 6.00); INSERT INTO movies (title, directorId, grade) values ('Jaws', 1, 'A'); INSERT INTO movies (title, directorId, grade) values ('Jurassic Park', 1, 'A'); INSERT INTO movies (title, directorId, grade) values ('Sin City', 2, 'A'); INSERT INTO movies (title, directorId, grade) values ('Inglourious Basterds', 2, 'A'); INSERT INTO movies (title, directorId, grade) values ('Ferris Bueller''s Day Off', 3, 'A'); INSERT INTO movies (title, directorId, grade) values ('The Breakfast Club', 3, 'A'); INSERT INTO movies (title, directorId, grade) values ('A Knight''s Tale', null, 'A'); UPDATE movies SET releaseDate ='1999-01-01', grade = "B" WHERE id = 1; UPDATE movies SET releaseDate ='2001-01-01', grade = "B" WHERE id = 2; UPDATE movies SET releaseDate ='1998-01-01', grade = "B" WHERE id = 3; UPDATE movies SET releaseDate ='2005-01-01', grade = "B" WHERE id = 4; UPDATE movies SET releaseDate ='1999-01-01', grade = "B" WHERE id = 5; UPDATE movies SET releaseDate ='2009-01-01', grade = "B" WHERE id = 6; UPDATE movies SET releaseDate ='2010-01-01', grade = "B" WHERE id = 7; // Result table/Result-set 1: Show All directors table columns/fields: id, firstName, lastName SELECT * FROM directors; // Result table/Result-set 2: Show All movies table columns/fields: id, directorId, title SELECT * FROM movies; // Result table/Result-set 3: Show All directors that dont have an Academy Award. SELECT * FROM directors WHERE academyAward= FALSE; // Result table/Result-set 4: Show the movie with the earliest release date. SELECT * FROM movies WHERE releaseDate= (SELECT MIN(releaseDate) FROM movies); // Alternatively: // SELECT * FROM movies ORDER BY releaseDate ASC LIMIT 1; // Result table/Result-set 5: Show All movies with directors // JOIN movie names with assigned directorId to the data of directors with matching ids. // INNER JOIN only returns all matching values from both tables SELECT title, firstName, lastName FROM movies INNER JOIN directors ON movies.directorId = directors.id; // Result table/Result-set 6: Show ALL movies, even if we dont know the director // LEFT JOIN returns all of the values from the left table, and the matching ones from the right table SELECT title, firstName, lastName FROM movies LEFT JOIN directors ON movies.directorId = directors.id; // Result table/Result-set 7: show ALL movies, even if we dont know the director // RIGHT JOIN returns all of the values from the right table, and the matching ones from the left table SELECT title, firstName, lastName FROM movies RIGHT JOIN directors ON movies.directorId = directors.id;