查询在st1公司于2018年制作的电影中出演的影星

本文介绍了如何使用SQL查询从StarsIn表中获取特定年份和电影公司的演员列表。通过JOIN操作结合Movie和StarsIn表,利用外键约束确保数据一致性。示例查询展示了获取2018年由st1电影公司制作电影的演员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表结构
CREATE TABLE Movie              
(  title CHAR(20) NOT NULL,     --电影名称
  year INT NOT NULL,            --拍摄年份
  length INT ,                  --长度
  inColor BIT DEFAULT 1,        --是否彩色
  studioName CHAR(20),          --所属电影公司
  producerCertID CHAR(10),      --制片人
  PRIMARY KEY (title,year), 
);

CREATE TABLE StarsIn                      
(  movieTitle CHAR(20),                   --电影名称
  movieYear INT ,                         --拍摄年份
  starName CHAR(20),                      --演员姓名
  PRIMARY KEY(movieTitle,movieYear,starName),
  FOREIGN KEY(movieTitle, movieYear) REFERENCES Movie(title,year) 
);

表样例

Movie表:

titleyearlengthinColorstudioNameproducerCertID
M120181001st10001
M220181001st10002
M320191001st20003
M420171001st20004
M520141001st20004
M620151001st20004
M72018951st20003

StarsIn表:

movieTitlemovieYearstarName
M12018S1
M22018S1
M32019S2
M42017S3
M32019S3
M32019S4
M72018S2
输出样例:
starName
S1
SELECT distinct starName   #distinct:确保数据大量时输出不同的结果
FROM StarsIn
WHERE movieYear=2018 AND movieTitle IN (SELECT title 
					                    FROM Movie
					                    WHERE studioName='st1' and year=2018); 

第二个条件里的year限制也很重要,本人认为是由于Movie表里是title和year两个属性联合做主码,而StarsIn表里参照的外码是Movie里的主码因此 限制条件要特别声明年份

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@这个编程我不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值