
Movie (
title: string,
year: integer,
genre: string, 电影所属的流派
电影制片人的授权证书号码
)
MovieStar (
name: string,
性别:F或M
)
StarsIn (
movieTitle: string,
movieYear: integer,
starName: string
)
MovieExec (电影制片人
cert#: integer, 授权证书号码
资产净值
)
Studio (
name: string,
公司总裁的授权证书号码
)
每一个电影制片人有一个授权证书号码,这个授权号码是具有惟一性的整型数。假设电影公司总裁也一定是电影制片人。用下划线表示主键。
课堂练习一:
1.写出关系Movie的关系模式定义,并定义主键。
CREATE TABLE Movies (
);
2.写出关系StarsIn的关系模式定义,并定义主键。
CREATE TABLE StarsIn (
);
课堂练习二:
已知
关系R 关系S
| A | B |
| 1 | 2 |
| 3 | 4 |
| B | C | D |
| 2 | 5 | 6 |
| 4 | 7 | 8 |
| 9 | 10 | 11 |
2.求R和S的自然连接
3.求R和S的等值连接,连接条件:R.B=S.B
4. 求R和S的连接,连接条件:R.A 课堂练习三: Movies (title, year, length, genre, studioName, producerC#) (1)找出Harrison Ford演过的电影的制片人的姓名 SELECT name FROM MovieExec WHERE cert# IN producerC# (SELECT movieTitle,movieYear FROM StarsIn ’Harrison Ford’; ) SELECT DISTINCT name FROM MovieExec, Movies, StarsIn WHERE cert#=producerC# AND ’ Harrison Ford’; (2)找出被两部或两部以上电影使用过的电影名 SELECT x.title FROM Movies x WHERE x.year<>ANY ); SELECT x.title FROM Movies x WHERE x.year SELECT x.title FROM Movies x WHERE x.year< ); SELECT x.title FROM Movies x WHERE x.year>ANY ); SELECT x.title FROM Movies x WHERE x.year> IN(y.year) ); SELECT x.title FROM Movies x WHERE EXISTS ); 找出最高分在90分以上的学生的学号(HAVING短语可以有子查询) SELECT Sno SELECT Sno MAX(Grade)>90 ; 课堂练习四: Movies (title, year, length, genre, studioName, producerC#) 用SQL语句写出下面的查询: 1.找出电影公司MGM的地址。 SELECT address FROM Studio WHERE name=’MGM’; 2.找出那些在1980年制作的,或者电影名中包括“Love”单词的电影中出现的所有电影明星。 SELECT starName FROM StarsIn WHERE movieYear=1980 OR movieTitle LIKE ‘%Love%’; 3.哪些男影星出演了电影Titanic? SELECT name FROM MovieStar, StarsIn WHERE MovieStar.name= StarsIn.starName AND gender=’M’ AND movieTitle=’ Titanic’; 4.哪些影星在MGM电影公司于1995年制作的电影里演出? SELECT starName FROM StarsIn, Movies WHERE StarsIn.movieTitle= Movies.title and StarsIn.movieYear= Movies.year and movieYear=1995 and studioName=’MGM’; 5.谁是MGM电影公司的总裁? SELECT MovieExec.name FROM Studio,MovieExec WHERE Studio.presC#= MovieExec.cert# and Studio.name=’ MGM’; 6.哪些电影的时间比Gone with the wind长? SELECT title FROM Movies WHERE length> (SELECT length FROM Movies WHERE title=’ Gone with the wind’); 7.找出最富有的制片人的姓名及资产。 SELECT name, netWorth FROM MovieExec WHERE networth >= ALL (SELECT networth 8.找出每个制片人的姓名及制作的电影的数量。 SELECT name,COUNT(title) FROM MovieExec,Movies WHERE MovieExec.cert#= Movies.producerC# GROUP BY name 课堂练习七: 对于电影数据库,包括电影、电影明星、电影制片人和电影公司的信息。电影的信息包括名字、出品的年份、片长和流派;电影明星的信息包括姓名、地址、性别和出生日期;电影制片人的信息包括姓名、地址、证书号和资产净值;电影公司的信息包括名字和地址。每部电影只由一家电影公司制作,只有一个电影制片人。一个电影明星可以在多部电影中演出,一部电影中也可以出现多个电影明星。一家电影公司只有一位总裁,而且一定是一位电影制片人。画出该数据库的E-R图。
