数据库原理与应用习题
emp_name char(20) not null, address char(100)) create table ord(
ORDER_no char(5) primary key, emp_no char(5), ord_date datetime, ord_money int,
foreign key (emp_no) references employee(emp_no)) (3)略
(4)select emp_no,max(ord_money) 最大金额 from ord group by emp_no (5)select * from ord ORDER by ord_date
(6)update ord set ord_money=0 WHERE emp_no='07001'
(7)create view v_1 as select ord.*,employee.emp_name from employee,ord
WHERE employee.emp_no=ord.emp_no
4.(1)create database test (2)建立学生表
create table student(sno varchar(7) primary key,
sname varchar(8) not null, sage int,
ssex varchar(2), sdate datetime, sdept char(20))
建立课程表
create table course(cno varchar(4) primary key, cname varchar(10) not null, cTeacher varchar(8), coffice varchar(20))
建立选课表
create table sc(sno varchar(7), cno varchar(4), grade int,
primary key(sno,cno),
foreign key (sno) references student(sno), foreign key (cno) references course(cno)) (3)略
(4)INSERT into student values('0121901','WU',18,'女','1980-01-01',null) (5)INSERT into course values('X005','管理学','林丽丽','G301') (6)INSERT into sc values('0121901','X005',85)
(7)delete from sc WHERE sno in (select sno from student WHERE sname='WU') (8)create unique index i_sname on student(sname)
(9)select cno,cname from course WHERE cTeacher='刘丽'
(10)create view v_x_001 as select student.* from student,sc
WHERE student.sno=sc.sno and sdept='信管系' and cno='X001'
21
数据库原理与应用习题
5. (1)create database exam
(2)create table shop(a# char(5) primary key,
aname char(30) not null,
wqty int check(wqty>0),
city char(20) default('大连') )
create table goods(b# char(5) primary key,
bname char(20), price float)
create table supply(a# char(5),
b# char(5),
qty int check(qty>0), primary key(a#,b#),
foreign key (a#) references shop(a#), foreign key (b#) references goods(b#))
(3)略
(4)select * from shop where a#='101'
(5)select * from shop where aname like '%商场%' (6)select goods.b#,bname from goods,shop,supply where goods.b#=supply.b# and
shop.a#=supply.a# and aname='大连商场' (7)select aname,bname,qty from goods,shop,supply where goods.b#=supply.b# and
shop.a#=supply.a#
(8)select * from shop where wqty>100 (9)select * from goods order by price
(10)select max(qty),min(qty),avg(qty) from supply where a#='101' (11)create index i_bname on goods(bname desc)
(12)create index i_supply on supply(a# asc,b# desc) (13)create view v_1 as select goods.b#,bname from goods,supply,shop where goods.b#=supply.b#
and shop.a#=supply.a# and city='大连'
(14)create view v_2 as
select supply.a#,supply.b#,qty from shop,supply,goods
where goods.b#=supply.b# and shop.a#=supply.a# and aname='大连商场' and price>10
(15)insert into shop values('102','沃尔玛',null,null) (16)update supply set qty=100 where a# in (
select a# from shop where aname='大连商场') and b# in (select b# from goods where bname='书包') (17)delete from supply where a# in (
select a# from shop where aname='第一百货公司')
(18)alter table shop add adate datetime
6.(1) CREATE TABLE 职工(职工号 CHAR(10)NOT NULL UNIQUE, 姓名 CHAR(8)NOT NULL,
22
数据库原理与应用习题
年龄 SMALLINT, 性别 CHAR(2), CONSTRAINT C1 CHECK(性别IN(‘男’,‘女’)));
CREATE TABLE 社会团体(编号 CHAR(8)NOT NULL UNIQUE,
名称 CHAR(12)NOT NULL, 负责人 CHAR(8), 活动地点 VARCHAR(50),
CONSTRAINT C2 FOREIGN KEY(负责人)REFERENCES职工 (职工号));
CREATE TABLE 参加(职工号 CHAR(8),
编号 CHAR(8), 参加日期 DATA,
CONSTRAINT C3 PRIMARY KEY(职工号,编号),
CONSTRAIN C3 FOREIGN KEY(职工号)REFERENCES职工(职工号));
(2)CREATE VIEW 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别)
AS
SELECT 编号,名称,负责人,姓名,性别 FROM 社会团体,职工
WHERE 社会团体.负责人=职工.职工号;
CREATE VIEW参加人情况(职工号,姓名,社团编号,参加日期)
AS
SELECT参加.职员号,姓名,社会团体.编号,名称,参加日期 FROM 职工,社会团体,参加
WHERE 职工.职工号=参加.职工号AND 参加.编号=社会团体.编号;
(3) SELECT 职工号,姓名 FROM 职工,社会团体,参加
WHERE 职工.职工号=参加.职工号 AND 参加.编号=社会团体.编号 AND 社会团体.名称 IN(‘唱歌队’,‘篮球队’); (4)SELECT * FROM 职工
WHERE NOT EXISTS(SELECT * FORM 参加
WHERE 参加.职工号=职工.职工号); (5) SELECT * FROM 职工
WHERE NOT EXISTS(SELECT * FROM 参加
WHERE NOT EXISTS
(SELECT * FROM 社会团体
WHERE参加.职工号=职工.职工号 AND 参加.编号=社会团体.编号));
(6)SELECT 职工号 FROM 职工
WHERE NOT EXISTS(SELECT * FROM 参加 参加1
WHERE 参加1.职工号=‘1001’AND NOT EXISTS (SELECT*
FROM 参加 参加2
WHERE 参加2.编号=参加1.编号 AND 参加2.职工号=职工.职工号));
23
数据库原理与应用习题
(7) SELECT COUNT(职员号) FROM 参加
GROUP BY 编号;
(8)SELECT 社会团体.名称,COUNT(参加.职工号) FROM 社会团体 参加
WHERE 社会团体.编号=参加.编号 GROUP BY 参加编号
HAVING MAX (COUNT(参加.职工号))=COUNT(参加.职工号)); (9)SELECT 社会团体.名称,职工.姓名 FROM 职工,社会团体,参加
WHERE 社会团体.编号=参加.编号 AND 社会团体.负责人=职工.职工号 GROUP BY 参加.编号 HAVING COUNT(参加.编号)>100;
(10) GRANT SELECT,INSERT,DELECT ON 社会团体,参加 TO 李平 WHERE GRANT OPTION;
7.(1)SELECT 姓名,联系电话 FROM 供应商 WHERE 所在城市=‘天津市’
(2)SELECT * FROM 工程 WHERE 预算 BETWEEN 50000 AND 100000 ORDER BY 预算 DESC;
(3)SELECT 工程代号 FROM 供应零件 WHERE 供应商代码=‘SI’; (4)SELECT 零件.零件名,供应零件.数量 FROM 零件 供应零件
WHERE 零件.零件代码=供应零件.零件代码AND供应零件.工程代码=‘J2 (5)SELECT 零件代号 FROM 供应商,供应零件
WHERE 供应商.供应商代码=供应零件.供应商代码 AND 供应商.所在城市=‘上海’; (6) SELECT 工程名 FROM 供应商,供应零件,工程
WHERE 供应商.供应商代码=供应零件.供应商代码AND 供应零件.工程代码=工程.工程代码 AND 供应商.所在城市=‘上海’; (7) SELECT 工程号码 FROM 工程 WHERE NOT EXISTS(SELECT*
FROM 供应零件
WHERE工程.工程代码=供应零件.工程代码 AND 供应商代码 IN (SELECT 供应商代码 FROM 供应商));
(8)UPDATE 零件 SET 颜色=‘蓝色’ WHERE 颜色=‘红色’; (9)UPDATE 供应零件 SET 供应商代码=‘S3’
WHERE 供应商代码=‘S5’ AND 工程代码=’J4’ AND 零件代码=‘P6’; (10)DELETE FROM 供应零件 WHERE 供应商代码=’S2’; DELETE FROM 供应商 WHERE 供应商代码=’S2’;
24
数据库原理与应用习题
第5章 关系数据理论
(一)选择题
1. 为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是____。
A.关系规范化理论 B.关系代数理论 C.数理逻辑 D.关系运算理论
2. 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是____。 A.长度不变的 B. 不可分解的 C.互相关联的 D. 互不相关的
3. 已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C ,E→A },该关系模式的候选关键字是____。
A.AB B. BE C.CD D. DE
4. 关系模式中,满足2NF的模式____。 A.可能是1NF B.必定是1NF C.必定是3NF D.必定是BCNF
6.如果关系模式R属于1NF,且每个非主属性都完全函数依赖于R的主码,则R属于____。
A.2NF B.3NF C.BCNF D.4NF
7.已知关系R(P,Q,M,N),F是R上成立的函数依赖集,F={(P→Q,Q→M)},则R的侯选
码是____。
A.P B.Q C.PQ D.PN
8.已知学生关系:R(学号,姓名,系名称,系地址),每一名学生属于一个系,每一个系有 一个地址,则R属于____。
A.1NF B.2NF C.3NF D.4NF
9.下列陈述中,错误的是____。
A.2NF必然属于1NF B.3NF必然属于2NF C.3NF必然属于BCNF D.BCNF必然属于3NF
10.已知关系R(A,B,C,D),F是R上成立的函数依赖集,F={(A,B→C,D),B→D},则R
应分解成高一级范式为____。
A.R1(A,B)和R2(C,D) B.R1(A,B,C)和R2(B,D)
C.R1(A,C)和R2(B,D) D.R1(A,B,D)和R2(B,C)
11.在订单管理系统中,客户一次购物(一张订单)可以订购多种商品,一种商品可以被多个客户订购。有订单关系R:R(订单号,日期,客户名称,商品编码,数量),则R的主码
25