数据库第八次实验
----------问题-----------
小明打算设计一个数据库来保存自己喜欢的电影信息。
他需要保存的电影信息有,电影名称,电影的类型(如:动作片、动画片、悬疑片、剧情片等),上映日期,电影的导演,参演的主要演员,电影评分。
同时,他还打算把相关的演员和导演的信息也保存下来,这样可以通过导演和演员来查询相关影片,还可以通过电影来查询演员或导演的个人信息。演员的信息有,姓名,性别,生日,星座,参演的影片等;导演的信息有:姓名,性别,生日,执导过的影片等。假设这些影片中,每一部电影由多名演员参演,而且,每一部电影由唯一的一个导演来执导。
请根据以上相关描述来帮助小明设计一个数据库。
----------要求-----------
① 分析以上问题,设计E-R图(一定要先画图)。
② 将以上问题分析完成之后,利用SQL语句(CREATE TABLE)完成表的创建。
③ 完成若干条记录的输入。
④ 编写一个带参数的存储过程,能完成对电影信息表的数据输入。
⑤ 编写一个存储过程,能根据提供的电影名称查询出参演演员名称。
create database db use db create table director( 导演号 varchar(20) primary key, 姓名 char(20), 性别 varchar(5) check(性别 in ('男','女')), 生日 date, ) create table actor( 演员号 varchar(20) primary key, 姓名 char(20), 性别 varchar(5) check(性别 in ('男','女')), 生日 date, 星座 char(8) ) create table files( 电影号 varchar(20) primary key, 名称 varchar(30), 类型 char(10) not null, 上映日期 date, 导演 varchar(20), 演员 varchar(100), 电影评分 numeric(2,1), foreign key(导演) references director(导演号) ) create table af( 演员号 varchar(20), 电影号 varchar(20), foreign key(演员号) references actor(演员号), foreign key(电影号) references files(电影号) ) insert director values ('6640238', '乔.罗素', '男', '1971-03-17'), ('9852348', '王晶', '男', '1961-05-30'), ('0619444', '海莉.贝内特', '女', '1983-02-11'); insert actor values ('06x5411', '艾弗森', '男', '1985-02-03', '白羊'), ('9066x66', '小栗旬', '男', '1981-12-15', '魔蝎'), ('06165x5', '李民基', '男', '1992-03-17', '双鱼'), ('x489116', '石原里美', '女', '1989-7-25', '狮子'), ('65x5988', '斯嘉丽.约翰逊', '女', '1981-06-09', '双子'); insert files values ('f51650', '美国队长3', '科幻', '2016-07-11', '6640238', '克里斯·埃文斯、小罗伯特·唐尼、斯嘉丽·约翰逊、李民基', 8.9), ('f97641', '失恋达人', '爱情', '2017-02-08', '9852348', '小栗旬、石原里美、李民基', 7.6), ('f89412', '达子的春天', '喜剧', '2007-02-16', '9852348', '李民基、李慧颖、孔炯轸、小栗旬、艾弗森', 8.8), ('f65499', '无底洞', '恐怖', '2009-12-11', '0619444', '娜塔莉·波特曼、迈克尔·法斯宾德、方·基默、斯嘉丽.约翰逊', 8.3); insert af values ('06x5411', 'f89412'), ('9066x66', 'f97641'), ('9066x66', 'f89412'), ('06165x5', 'f51650'), ('06165x5', 'f97641'), ('06165x5', 'f89412'), ('x489116', 'f97641'), ('65x5988', 'f51650'), ('06165x5', 'f65499'); go create procedure addfiles @fno varchar(20),@fname varchar(30),@ftype char(10),@fdate date,@fdirector varchar(20),@factor varchar(100),@fscore int as begin insert into files values(@fno, @fname, @ftype, @fdate, @fdirector, @factor, @fscore) end go create procedure queryactor @fname varchar(30) as begin select @fname as 电影, 演员 from files where 名称 = @fname end go execute addfiles 'f69419', '热血高校', '动作', '2007-12-12', '9852348', '小栗旬、石原里美、山田孝之、桐谷健太', 9.5 execute queryactor 美国队长3 execute queryactor 热血高校
查询结果