0% found this document useful (0 votes)
1 views

lec03

Uploaded by

Dương Lionel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views

lec03

Uploaded by

Dương Lionel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

-- BÀI 1

CREATE TABLE Movies (


title TEXT,
year INTEGER,
length INTEGER,
genre TEXT,
studioName TEXT,
producerC INTEGER
);
CREATE TABLE StarsIn (
movieTitle TEXT,
movieYear INTEGER,
starName TEXT
);
CREATE TABLE MovieStar (
name TEXT,
address TEXT,
gender TEXT,
birthdate DATE
);
CREATE TABLE MovieExec (
name TEXT,
address TEXT,
cert INTEGER,
netWorth REAL
);
CREATE TABLE Studio (
name TEXT,
address TEXT,
presC INTEGER
);
INSERT INTO Movies (title, year, length, genre, studioName, producerC)
VALUES
('Star Wars', 1977, 124, 'sciFi', 'Fox', 12345),
('Galaxy Quest', 1999, 104, 'comedy', 'DreamWorks', 67890),
('Wayne’s World', 1992, 95, 'comedy', 'Paramount', 99999);

INSERT INTO MovieExec (name, address, cert, netWorth) VALUES


('Mary Tyler Moore', 'Maple St.', 12345, 100000000),
('Tom Hanks', 'Cherry Ln.', 9982, NULL),
('George Lucas', 'Oak Rd.', 23456, 200000000);

INSERT INTO MovieStar (name, address, gender, birthdate) VALUES


('Carrie Fisher', '123 Maple St. Hollywood', 'F', '1999-09-09'),
('Mark Hamill', '456 Oak Rd. Brentwood', 'M', '1988-08-08'),
('Tom Hanks', 'Cherry Ln.', 'M', '1966-06-06'),
('Harrison Ford', '789 Palm Dr. Beverly Hills', 'M', '1977-07-07');

INSERT INTO StarsIn (MovieTitle, movieYear, StarName) VALUES


('Star Wars', 1977, 'Carrie Fisher'),
('Star Wars', 1977, 'Mark Hamill'),
('Star Wars', 1977, 'Harrison Ford'),
('Gone With the Wind', 1939, 'Vivien Leigh'),
('Wayne’s World', 1992, 'Dana Carvey'),
('Wayne’s World', 1992, 'Mike Meyers');

INSERT INTO Studio (name,address,presC) VALUES


('Fox', 'Hollywood', 1298),
('Disney', 'Buena Vista', 3789),
('Paramount', 'Hollywood', 1129),
('MGM', 'Hollywood', 9982);

SELECT * FROM Movies;

--ý a

SELECT M.name
FROM MovieStar M
JOIN StarsIn S ON M.name = S.starName
WHERE S.movieTitle = 'Star Wars'
AND M.gender = 'F';

--ý b

SELECT DISTINCT S.starName


FROM StarsIn S
JOIN Movies M ON S.movieTitle = M.title AND S.movieYear = M.year
WHERE M.studioName = 'Paramount'
AND M.year = 1992;

--ý c

SELECT E.cert# AS presC, E.name


FROM Studio St
JOIN MovieExec E ON St.presC# = E.cert#
WHERE St.name = 'MGM';

--ý d
SELECT M1.title
FROM Movies M1
WHERE M1.length > (
SELECT M2.length
FROM Movies M2
WHERE M2.title = 'Galaxy Quest'
);

--ý e

SELECT E.name
FROM MovieExec E
WHERE E.netWorth > (
SELECT E2.netWorth
FROM MovieExec E2
WHERE E2.name = 'Mary Tyler Moore'
);

--BÀI 2
CREATE TABLE Product (
maker TEXT,
model TEXT PRIMARY KEY,
type TEXT
);

CREATE TABLE PC (
model TEXT PRIMARY KEY,
speed REAL,
ram INTEGER,
hd INTEGER,
price INTEGER,
FOREIGN KEY (model) REFERENCES Product(model)
);

CREATE TABLE Laptop (


model TEXT PRIMARY KEY,
speed REAL,
ram INTEGER,
hd INTEGER,
screen REAL,
price INTEGER,
FOREIGN KEY (model) REFERENCES Product(model)
);
CREATE TABLE Printer (
model TEXT PRIMARY KEY,
color TEXT,
type TEXT,
price INTEGER,
FOREIGN KEY (model) REFERENCES Product(model)
);

INSERT INTO Product (maker, model, type) VALUES


('A', '1001', 'pc'),
('A', '1002', 'pc'),
('A', '1003', 'pc'),
('A', '2004', 'laptop'),
('A', '2005', 'laptop'),
('A', '2006', 'laptop'),
('B', '1004', 'pc'),
('B', '1005', 'pc'),
('B', '1006', 'pc'),
('B', '2007', 'laptop'),
('C', '1007', 'pc'),
('D', '1008', 'pc'),
('D', '1009', 'pc'),
('D', '1010', 'pc'),
('D', '3004', 'printer'),
('D', '3005', 'printer'),
('E', '1011', 'pc'),
('E', '1012', 'pc'),
('E', '1013', 'pc'),
('E', '2001', 'laptop'),
('E', '2002', 'laptop'),
('E', '2003', 'laptop'),
('E', '3001', 'printer'),
('E', '3002', 'printer'),
('E', '3003', 'printer'),
('F', '2008', 'laptop'),
('F', '2009', 'laptop'),
('G', '2010', 'laptop'),
('H', '3006', 'printer'),
('H', '3007', 'printer');

INSERT INTO PC (model, speed, ram, hd, price) VALUES


('1001', 2.66, 1024, 250, 2114),
('1002', 2.1, 512, 250, 995),
('1003', 1.42, 512, 80, 478),
('1004', 2.8, 1024, 250, 649),
('1005', 3.2, 512, 250, 630),
('1006', 3.2, 1024, 320, 1049),
('1007', 2.2, 1024, 200, 510),
('1008', 2.2, 2048, 250, 770),
('1009', 2, 1024, 250, 650),
('1010', 2.8, 2048, 300, 770),
('1011', 1.86, 2048, 160, 959),
('1012', 2.8, 1024, 160, 649),
('1013', 3.06, 512, 80, 529);

INSERT INTO Laptop (model, speed, ram, hd, screen, price) VALUES
('2001', 2, 2048, 240, 20.1, 3673),
('2002', 1.73, 1024, 80, 17, 949),
('2003', 1.8, 512, 60, 15.4, 549),
('2004', 2, 512, 60, 13.3, 1150),
('2005', 2.16, 1024, 120, 17, 2500),
('2006', 2, 2048, 80, 15.4, 1700),
('2007', 1.83, 1024, 120, 13.3, 1429),
('2008', 1.6, 1024, 100, 15.4, 900),
('2009', 1.6, 512, 80, 14.1, 680),
('2010', 2, 2048, 160, 15.4, 2300);

INSERT INTO Printer (model, color, type, price) VALUES


('3001', 'TRUE', 'ink-jet', 99),
('3002', 'FALSE', 'laser', 239),
('3003', 'TRUE', 'laser', 899),
('3004', 'TRUE', 'ink-jet', 120),
('3005', 'FALSE', 'laser', 120),
('3006', 'TRUE', 'ink-jet', 100),
('1007', 'TRUE', 'laser', 200);

--ý a

SELECT p.maker, l.speed


FROM Product p
JOIN Laptop l ON p.model = l.model
WHERE l.hd >= 30;

--ý b

SELECT model, price FROM PC WHERE model IN (


SELECT model FROM Product WHERE maker = 'B'
)
UNION
SELECT model, price FROM Laptop WHERE model IN (
SELECT model FROM Product WHERE maker = 'B'
)
UNION
SELECT model, price FROM Printer WHERE model IN (
SELECT model FROM Product WHERE maker = 'B'
);

--ý c

SELECT maker
FROM Product
WHERE type = 'Laptop'
EXCEPT
SELECT maker
FROM Product
WHERE type = 'PC';

-- d
SELECT p1.hd
FROM PC p1
JOIN PC p2 ON p1.hd = p2.hd AND p1.model <> p2.model;

-- e)
SELECT p1.model AS model1, p2.model AS model2
FROM PC p1
JOIN PC p2 ON p1.speed = p2.speed AND p1.ram = p2.ram AND p1.model <
p2.model;

-- f)
SELECT maker
FROM Product
WHERE type IN ('PC', 'Laptop')
GROUP BY maker
HAVING COUNT(DISTINCT model) >= 2;

You might also like