考虑电影数据库中的以下表格:
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字段。为了联接这两个表,我们使用Art_id和Film_id使用第三个表CASTING。联接之后,我们使用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”的生产者的生产者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 |