Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 124 additions & 0 deletions Core Tasks.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
CREATE TABLE director (
id SERIAL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
country VARCHAR(128) NOT NULL
);

CREATE TABLE writer (
id SERIAL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
email VARCHAR(128) UNIQUE NOT NULL
);

CREATE TABLE actor (
id SERIAL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
dob DATE NOT NULL
);

CREATE TABLE movie (
id SERIAL PRIMARY KEY,
release_title VARCHAR(128) NOT NULL,
release_year INT NOT NULL,
genre VARCHAR(128) NOT NULL,
score SMALLINT NOT NULL CHECK (score BETWEEN 0 AND 100),
director_id INT NOT NULL REFERENCES director(id),
actor_id INT NOT NULL REFERENCES actor(id),
writer_id INT NOT NULL REFERENCES writer(id)
);

INSERT INTO director (id, name, country) VALUES
(1, 'Stanley Kubrick', 'USA'),
(2, 'George Lucas', 'USA'),
(3, 'Robert Mulligan', 'USA'),
(4, 'James Cameron', 'Canada'),
(5, 'David Lean', 'UK'),
(6, 'Anthony Mann', 'USA'),
(7, 'Theodoros Angelopoulos', 'Greece'),
(8, 'Paul Verhoeven', 'Netherlands'),
(9, 'Krzysztof Kieslowski', 'Poland'),
(10, 'Jean-Paul Rappeneau', 'France');

INSERT INTO writer (id, name, email) VALUES
(1, 'Arthur C Clarke', '[email protected]'),
(2, 'George Lucas', '[email protected]'),
(3, 'Harper Lee', '[email protected]'),
(4, 'James Cameron', '[email protected]'),
(5, 'Boris Pasternak', '[email protected]'),
(6, 'Frederick Frank', '[email protected]'),
(7, 'Theodoros Angelopoulos', '[email protected]'),
(8, 'Erik Hazelhoff Roelfzema', '[email protected]'),
(9, 'Krzysztof Kieslowski', '[email protected]'),
(10, 'Edmond Rostand', '[email protected]');

INSERT INTO actor (id, name, dob) VALUES
(1, 'Keir Dullea', '1936-05-30'),
(2, 'Mark Hamill', '1951-09-25'),
(3, 'Gregory Peck', '1916-04-05'),
(4, 'Leonardo DiCaprio', '1974-11-11'),
(5, 'Julie Christie', '1940-04-14'),
(6, 'Charlton Heston', '1923-10-04'),
(7, 'Manos Katrakis', '1908-08-14'),
(8, 'Rutger Hauer', '1944-01-23'),
(9, 'Juliette Binoche', '1964-03-09'),
(10, 'Gerard Depardieu', '1948-12-27');

INSERT INTO movie (id, release_title, release_year, genre, score, director_id, actor_id, writer_id) VALUES
(1, '2001: A Space Odyssey', 1968, 'Science Fiction', 10, 1, 1, 1),
(2, 'Star Wars: A New Hope', 1977, 'Science Fiction', 7, 2, 2, 2),
(3, 'To Kill A Mockingbird', 1962, 'Drama', 10, 3, 3, 3),
(4, 'Titanic', 1997, 'Romance', 5, 4, 4, 4),
(5, 'Dr Zhivago', 1965, 'Historical', 8, 5, 5, 5),
(6, 'El Cid', 1961, 'Historical', 6, 6, 6, 6),
(7, 'Voyage to Cythera', 1984, 'Drama', 8, 7, 7, 7),
(8, 'Soldier of Orange', 1977, 'Thriller', 8, 8, 8, 8),
(9, 'Three Colours: Blue', 1993, 'Drama', 8, 9, 9, 9),
(10, 'Cyrano de Bergerac', 1990, 'Historical', 9, 10, 10, 10);

SELECT
m.release_title,
d.name
FROM
movie m
LEFT JOIN director d ON m.director_id = d.id;

SELECT
m.release_title,
d.name,
a.name
FROM
movie m
LEFT JOIN director d ON m.director_id = d.id
LEFT JOIN actor a ON m.actor_id = a.id;

SELECT
m.release_title
FROM
movie m
LEFT JOIN director d ON m.director_id = d.id
WHERE
d.country = 'USA';

SELECT
m.release_title
FROM
movie m
LEFT JOIN director d ON m.director_id = d.id
LEFT JOIN writer w ON m.writer_id = w.id
WHERE
d.name = w.name;

SELECT
m.release_title,
d.name
FROM
movie m
LEFT JOIN director d ON m.director_id = d.id
WHERE
m.score >= 8;






148 changes: 148 additions & 0 deletions Extension Tasks 1.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
-- Extension Task 1.1

CREATE TABLE
people (
id SERIAL PRIMARY KEY,
name varchar(128) NOT NULL
);

CREATE TABLE
director (
id SERIAL PRIMARY KEY,
people_id INT NOT NULL REFERENCES people (id),
country VARCHAR(128) NOT NULL
);

CREATE TABLE
writer (
id SERIAL PRIMARY KEY,
people_id INT NOT NULL REFERENCES people (id),
email VARCHAR(128) UNIQUE NOT NULL
);

CREATE TABLE
actor (
id SERIAL PRIMARY KEY,
people_id INT NOT NULL REFERENCES people (id),
dob DATE NOT NULL
);

CREATE TABLE
movie (
id SERIAL PRIMARY KEY,
release_title VARCHAR(128) NOT NULL,
release_year INT NOT NULL,
genre VARCHAR(128) NOT NULL,
score SMALLINT NOT NULL CHECK (score BETWEEN 0 AND 100),
director_id INT NOT NULL REFERENCES director (id),
actor_id INT NOT NULL REFERENCES actor (id),
writer_id INT NOT NULL REFERENCES writer (id)
);


INSERT INTO people (name) VALUES
('Stanley Kubrick'),
('George Lucas'),
('Robert Mulligan'),
('James Cameron'),
('David Lean'),
('Anthony Mann'),
('Theodoros Angelopoulos'),
('Paul Verhoeven'),
('Krzysztof Kieslowski'),
('Jean-Paul Rappeneau'),
('Arthur C Clarke'),
('Harper Lee'),
('Boris Pasternak'),
('Frederick Frank'),
('Erik Hazelhoff Roelfzema'),
('Edmond Rostand'),
('Keir Dullea'),
('Mark Hamill'),
('Gregory Peck'),
('Leonardo DiCaprio'),
('Julie Christie'),
('Charlton Heston'),
('Manos Katrakis'),
('Rutger Hauer'),
('Juliette Binoche'),
('Gerard Depardieu');


INSERT INTO director (people_id, country) VALUES
((SELECT id FROM people WHERE name='Stanley Kubrick'), 'USA'),
((SELECT id FROM people WHERE name='George Lucas'), 'USA'),
((SELECT id FROM people WHERE name='Robert Mulligan'), 'USA'),
((SELECT id FROM people WHERE name='James Cameron'), 'Canada'),
((SELECT id FROM people WHERE name='David Lean'), 'UK'),
((SELECT id FROM people WHERE name='Anthony Mann'), 'USA'),
((SELECT id FROM people WHERE name='Theodoros Angelopoulos'), 'Greece'),
((SELECT id FROM people WHERE name='Paul Verhoeven'), 'Netherlands'),
((SELECT id FROM people WHERE name='Krzysztof Kieslowski'), 'Poland'),
((SELECT id FROM people WHERE name='Jean-Paul Rappeneau'), 'France');

INSERT INTO writer (people_id, email) VALUES
((SELECT id FROM people WHERE name='Arthur C Clarke'), '[email protected]'),
((SELECT id FROM people WHERE name='George Lucas'), '[email protected]'),
((SELECT id FROM people WHERE name='Harper Lee'), '[email protected]'),
((SELECT id FROM people WHERE name='James Cameron'), '[email protected]'),
((SELECT id FROM people WHERE name='Boris Pasternak'), '[email protected]'),
((SELECT id FROM people WHERE name='Frederick Frank'), '[email protected]'),
((SELECT id FROM people WHERE name='Theodoros Angelopoulos'), '[email protected]'),
((SELECT id FROM people WHERE name='Erik Hazelhoff Roelfzema'), '[email protected]'),
((SELECT id FROM people WHERE name='Krzysztof Kieslowski'), '[email protected]'),
((SELECT id FROM people WHERE name='Edmond Rostand'), '[email protected]');

INSERT INTO actor (people_id, dob) VALUES
((SELECT id FROM people WHERE name='Keir Dullea'), '1936-05-30'),
((SELECT id FROM people WHERE name='Mark Hamill'), '1951-09-25'),
((SELECT id FROM people WHERE name='Gregory Peck'), '1916-04-05'),
((SELECT id FROM people WHERE name='Leonardo DiCaprio'), '1974-11-11'),
((SELECT id FROM people WHERE name='Julie Christie'), '1940-04-14'),
((SELECT id FROM people WHERE name='Charlton Heston'), '1923-10-04'),
((SELECT id FROM people WHERE name='Manos Katrakis'), '1908-08-14'),
((SELECT id FROM people WHERE name='Rutger Hauer'), '1944-01-23'),
((SELECT id FROM people WHERE name='Juliette Binoche'), '1964-03-09'),
((SELECT id FROM people WHERE name='Gerard Depardieu'), '1948-12-27');

INSERT INTO movie (release_title, release_year, genre, score, director_id, actor_id, writer_id) VALUES
('2001: A Space Odyssey', 1968, 'Science Fiction', 10,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='Stanley Kubrick'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Keir Dullea'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='Arthur C Clarke')),
('Star Wars: A New Hope', 1977, 'Science Fiction', 7,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='George Lucas'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Mark Hamill'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='George Lucas')),
('To Kill A Mockingbird', 1962, 'Drama', 10,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='Robert Mulligan'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Gregory Peck'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='Harper Lee')),
('Titanic', 1997, 'Romance', 5,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='James Cameron'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Leonardo DiCaprio'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='James Cameron')),
('Dr Zhivago', 1965, 'Historical', 8,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='David Lean'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Julie Christie'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='Boris Pasternak')),
('El Cid', 1961, 'Historical', 6,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='Anthony Mann'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Charlton Heston'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='Frederick Frank')),
('Voyage to Cythera', 1984, 'Drama', 8,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='Theodoros Angelopoulos'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Manos Katrakis'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='Theodoros Angelopoulos')),
('Soldier of Orange', 1977, 'Thriller', 8,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='Paul Verhoeven'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Rutger Hauer'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='Erik Hazelhoff Roelfzema')),
('Three Colours: Blue', 1993, 'Drama', 8,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='Krzysztof Kieslowski'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Juliette Binoche'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='Krzysztof Kieslowski')),
('Cyrano de Bergerac', 1990, 'Historical', 9,
(SELECT d.id FROM director d JOIN people p ON p.id=d.people_id WHERE p.name='Jean-Paul Rappeneau'),
(SELECT a.id FROM actor a JOIN people p ON p.id=a.people_id WHERE p.name='Gerard Depardieu'),
(SELECT w.id FROM writer w JOIN people p ON p.id=w.people_id WHERE p.name='Edmond Rostand'));
Loading