Verified Commit a21d4f51 authored by Kiryuu Sakuya's avatar Kiryuu Sakuya 🎵
Browse files

Add No.2 & Example data

parent 6c820f71
# 电影资料数据库
## 数据库
演员A(Ano,Aname,Aaddress,Agender,Abrithday)包括属性:演员编号,演员姓名,演员地址,演员性别,演员生日;
电影公司C(Cno,Cname,Caddress,Ctel)包括属性:电影公司编号、公司名称,公司地址,公司电话;
电影M(Mno,Mname,Mlength,Myear,Cno)包括属性:电影编号,电影名称,电影长度,电影制作年份,电影公司编号;
上映信息I(Ino,Mno,Itime,Iprice)包括属性:上映信息编号、电影编号、上映时间、电影票价;
电影演员关系表R(Rno,Mno,Ano,Rrole,Rtime)包括属性:关系编号、电影编号、演员编号,演员在电影中饰演角色名称,演员在电影中出现时间;
电影、演员、电影公司、上映信息、电影演员关系表分别由电影编号(Mno)、演员编号(Ano)、电影公司编号(Cno)、上映信息编号(Ino)、关系编号(Rno)唯一标识,其中上映时间日期格式为yyyy-MM-dd(提示:格式统一可以直接比较大小);
### 建库命令
```mysql
CREATE DATABASE test2;
USE test2;
CREATE TABLE A (
Ano INT NOT NULL COMMENT '演员编号',
Aname VARCHAR(20) NOT NULL COMMENT '演员姓名',
Aaddress VARCHAR(100) NOT NULL COMMENT '演员地址',
Agender VARCHAR(6) NOT NULL COMMENT '演员性别',
Abirthday DATE NOT NULL COMMENT '演员生日',
PRIMARY KEY (Ano)
);
CREATE TABLE C (
Cno INT NOT NULL COMMENT '电影公司编号',
Cname VARHAR(30) NOT NULL COMMENT '公司名称',
Caddress VARCHAR(100) NOT NULL COMMENT '公司地址',
Ctel VARHAR(15) NOT NULL COMMENT '公司电话',
PRIMARY KEY (Cno)
);
CREATE TABLE M (
Mno INT NOT NULL COMMENT '电影编号',
Mname VARCHAR(50) NOT NULL COMMENT '电影名称',
Mlength INT NOT NULL COMMENT '电影长度',
Myear YEAR NOT NULL COMMENT '电影制作年份',
Cno INT NOT NULL COMMENT '电影公司编号',
PRIMARY KEY (Mno)
);
CREATE TABLE I (
Ino INT NOT NULL COMMENT '上映信息编号',
Mno INT NOT NULL COMMENT '电影编号',
Itime DATE NOT NULL COMMENT '上映时间',
Iprice DOUBLE NOT NULL COMMENT '电影票价',
PRIMARY KEY (Ino)
);
CREATE TABLE R (
Rno INT NOT NULL COMMENT '关系编号',
Mno INT NOT NULL COMMENT '电影编号',
Ano INT NOT NULL COMMENT '演员编号',
Rrole VARCHAR(50) NOT NULL COMMENT '演员在电影中饰演角色名称',
Rtime INT NOT NULL COMMENT '演员在电影中出现时间',
PRIMARY KEY (Rno)
);
```
## 示例数据
```mysql
-- 演员表
INSERT INTO A (
Ano, Aname, Aaddress, Agender, Abirthday
) VALUES (
10001, "Nicolas Cage", "1640 Riverside Drive, Hill Valley, California", Male, "1964-01-07"
), (
10002, "Ellen Burstyn", "214 Caldwell Road, Buffalo, New York", Female, "1932-12-07"
), (
10003, "Kate Beahan", "4725 Longview Avenue, Brooklyn, New York", Female,
"1974-10-12"
), (
10004, "Leelee Sobieski", "2787 Larry Street, Milwaukee, Wisconsin", Female, "1983-06-10"
), (
10005, "赵薇", "北京市海淀区西土城路4号", Female, "1976-03-12"
), (
10006, "陈坤", "重庆市巴南区龙庭街5号城南未来三期1-2-5号", Male, "1976-02-04"
), (
10007, "胡军", "北京市东城区东棉花胡同39号", Male, "1968-03-18"
), (
10008, "房祖名", "香港湾仔皇后大道东281号", Male, "1982-12-03"
), (
10009, "Joaquin Phoenix", "3856 Maple Avenue, Stockton, California", Male, "1974-10-28"
), (
10010, "Robert De Niro", "1276 Oak Drive, Ellenburg Depot, New York", Male, "1943-08-17"
), (
10011, "Zazie Beetz", "Brandenburgische Straße 75, Berlin Pankow, Berlin", Female, "1991-05-25"
), (
10012, "Frances Conroy", "626 College Street, Atlanta, Georgia", Female, "1953-11-13"
);
INSERT INTO C (
Cno, Cname, Caddress, Ctel
) VALUES (
20001, "Warner Bros", "Burbank, US (HQ) 4000 Warner Blvd.", "+1818954 3000",
20002, "星光国际传媒(集团)有限公司", "北京市朝阳区建国路112号4层A1008", "+8601085970999"
);
INSERT INTO M (
Mno, Mname, Mlength, Myear, Cno
) VALUES (
30001, "The Wicker Man", "102", "2006", "0450345",
30002, "花木兰", "114", "2009", "1308138",
30003, "Joker", "122", "2019", "7286456"
);
INSERT INTO I (
Ino, Mno, Itime, Iprice
) VALUES (
40001, 30001, "2006-09-01", "85.33",
40002, 30002, "2009-11-27", "36",
40003, 30003, "2019-10-04", "132.65"
);
INSERT INTO R (
Rno, Mno, Ano, Rrole, Rtime
) VALUES (
50001, 30001, 10001, "Edward Malus", "90"
), (
50002, 30001, 10002, "Sister Summersisle", "90"
), (
50003, 30001, 10003, "Sister Willow Woodward", "80"
), (
50004, 30001, 10004, "Sister Honey", "35"
), (
50005, 30002, 10005, "花木兰", "100"
), (
50006, 30002, 10006, "拓跋宏", "85"
), (
50007, 30002, 10006, "文泰", "15"
), (
50008, 30002, 10007, "门独", "80"
), (
50009, 30002, 10008, "费小虎", "64"
), (
50010, 30003, 10009, "Joker", "105"
), (
50011, 30003, 10010, "Murray Franklin", "90"
), (
50012, 30003, 10011, "Sophie Dumond", "84"
), (
50013, 30003, 10012, "Penny Fleck", "78"
);
```
## 题目与解答
### 1. 用 SQL 查询所有 `Warner Bros` 电影公司制作的电影名称和电影主演的姓名,主演要求在电影中出现的时间大于 40 分钟
```mysql
SELECT
```
### 2. 用 SQL 查询所有上映时间在 2006-09-01 和 2006-10-01 之间的由演员 `Nicolas Cage` 所演的电影的名称
### 3. 用 SQL 将所有上映时间小于 2017-01-01 并且演员姓名为 `赵薇` 的电影的上映信息删除
### 4. 用 SQL 将演员名称为 `Nicolas Cage`,电影制作公司为 `Warner Bros` 的电影的票价增加其原票价的 20%
### 5. 用 SQL 语句设计一个安全策略,保证用户 U1 只能查看演员 `Nicolas Cage` 所演的电影的上映信息(假设数据库中已经存在 U1 用户且他没有任何权限)
### 6. 输出所有上映时间在 2009-11-01 和 2009-12-01 之间的电影信息,输出格式为「电影名/电影演员/电影长度/电影公司/电影上映时间/电影票价」,要求所显示的电影演员在电影中出现时间大于 40 分钟,若电影演员有多个,则用逗号隔开
### 7. 编写一个存储过程,输入为一日期字符串(格式为 `yyyy-MM-dd`)和制作电影的公司名称,如果该公司的电影上映时间晚于输入中日期字符串的时间且其票价小于 100 ,则增加其原票价的 20%,如果其票价大于等于 100,则增加其原票价的 10%。同时按该公司的电影的上映时间从早到晚的顺序分别打印一行字符串「电影名称 & 票价」
### 8. 用 SQL 编写一个完整性规则,当插入上映信息时,如果公司名称为 `Warner Bros` 并且该公司的电影的制作年份大于 2012,则自动将票价提高 20%
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment