考虑电影数据库中的以下表格:
ARTIST (Art_id, Art_Name, Art_Gender)
PRODUCER (Prod_id, Prod_Name, Prod_Phone)
FILMS (Film_id, Film_Title, Film_Year, Film_Lang, Prod_id)
CASTING (Art_id, Film_id, Part)
REVIEW (Film_id, Stars)
这五个表的数据内容如下所示:
SELECT * FROM ARTIST;
Art_id | Art_Name | Art_Gender |
---|---|---|
101 | AMIT | M |
102 | PRITAM | M |
103 | SREYA | F |
104 | SUJATA | F |
SELECT * FROM PRODUCER;
Prod_id | Prod_Name | Prod_Phone |
---|---|---|
200 | ADITYA | 6735835863 |
201 | FARAN | 8654297433 |
202 | YASH | 8765421567 |
203 | NIRAJ | 7654321986 |
SELECT * FROM FILMS;
Film_id | Film_Title | Film_Year | Film_Lang | Prod_id |
---|---|---|---|---|
11 | WAR 2 | 2017 | ENGLISH | 201 |
12 | MOMENTS | 2015 | HINDI | 203 |
13 | THE MAY | 2019 | ENGLISH | 201 |
14 | BHANUMATI | 2014 | TELEGU | 200 |
SELECT * FROM CASTING;
Art_id | Film_id | Part |
---|---|---|
101 | 12 | ACTOR |
101 | 11 | ACTOR |
103 | 13 | ACTRESS |
103 | 12 | GUEST |
104 | 14 | ACTRESS |
SELECT * FROM REVIEW;
Film_id | Stars |
---|---|
11 | 4 |
12 | 2 |
13 | 5 |
14 | 4 |
查询 1:
找出所有制片人为“NIRAJ”的电影的名称。
首先,我们将找到名为“NIRAJ”的生产者的生产者 ID,为此我们使用 PRODUCER 表。
SELECT PROD_ID
FROM PRODUCER
WHERE PROD_NAME = ‘NIRAJ’
上述查询将返回 Prod_id “203”。现在我们将找到 pros_id 为“203”的电影的标题。为此,我们使用表 FILMS 并将上述查询用作子查询。
SELECT FILM_TITLE
FROM FILMS
WHERE PROD_ID IN (SELECT PROD_ID
FROM PRODUCER
WHERE PROD_NAME = ‘NIRAJ’);
输出:
FILM_TITLE |
---|
MOMENTS |
查询 2:
显示所有在 2016 年至 2018 年期间出演电影的艺术家。
为了找到这一点,我们需要使用 ARTIST 表的 ARTIST_NAME 字段以及 FILMS 表的 FILM_YEAR 字段。为了连接这两个表,我们使用第三个表 CASTING 使用 Art_id 和 Film_id。加入后,我们使用 BETWEEN运算符检查 2016 年和 2018 年之间的 FILM_YEAR。
SELECT A.ART_NAME, F.FILM_TITLE, F.FILM_YEAR
FROM ARTIST A, CASTING C, FILMS F
WHERE A.ART_ID=C.ART_ID
AND C.FILM_ID=F.FILM_ID
AND F.FILM_YEAR BETWEEN 2016 AND 2018;
输出:
ART_NAME | FILM_TITLE | FILM_YEAR |
---|---|---|
AMIT | WAR 2 | 2017 |
查询 3:
显示获得星级的电影名称,并根据星级对结果进行排序。
为此,我们需要 FILMS 表的 FILM_TITLE 字段以及 REVIEW 表的 STARS 字段。为了连接这两个表,我们将使用公共字段,即 FILM_ID。加入后,我们使用 ORDER BY 子句按 STARS 增加的顺序显示结果。
SELECT F.FILM_TITLE, R_STARS
FROM FILMS F, REVIEW R
WHERE F.FILM_ID=R.FILM_ID
ORDER BY R.STARS DESC
输出:
FILM_TITLE | STARS |
---|---|
THE MAY | 5 |
BHANUMATI | 4 |
WAR 2 | 4 |
MOMENTS | 2 |
查询 4:
将所有制片人为“NIRAJ”的电影的明星更新为 5。
首先,我们使用以下查询找到名为“NIRAJ”的 PRODUCER 的 PRODUCER ID:
SELECT PROD_ID
FROM PRODUCER
WHERE PROD_NAME = ‘NIRAJ’
然后使用这个 PROD_ID 从 FILMS 表中找到 FILM_ID。
SELECT FILM_ID FROM FILMS
WHERE PROD_ID IN (SELECT PROD_ID
FROM PRODUCER
WHERE PROD_NAME = ‘NIRAJ’)
然后这个 FILM_ID 有助于使用 UPDATE 命令更新 REVIEW 表中 STARS 的值。
UPDATE REVIEW
SET STARS=5
WHERE FILM_ID IN (SELECT FILM_ID FROM FILMS
WHERE PROD_ID IN (SELECT PROD_ID
FROM PRODUCER
WHERE PROD_NAME = ‘NIRAJ’));
输出:
1 row updated.
为了观察变化,我们可以在 REVIEW 表中使用 SELECT * 命令。
SELECT * FROM REVIEW;
Film_id | Stars |
---|---|
11 | 4 |
12 | 5 |
13 | 5 |
14 | 4 |