1、1、 设有一图书馆数据库,包括三个表:图书表、读者表、借阅表。三个表的结构如表3-3、表3-4 和表 3-5所示。完成以下习题。表3-3 图书表结构列名 说明 数据类型 约束图书号图书唯一的图书号 定长字符串,长度为20 主键书名 图书的书名 变长字符串,长度为50空值作者 图书的编著者名 变长字符串,长度为30空值出版社图书的出版社 变长字符串,长度为30空值单价 出版社确定的图书的单价 浮点型,FLOAT 空值表3- 4 读者表结构列名 说明 数据类型 约束说明读者号 读者唯一编号 定长字符串,长度为10 主键姓名 读者姓名 定长字符串,长度为8 非空值性别 读者性别 定长字符串,长度为2
2、 非空值办公电话读者办公电话 定长字符串,长度为8 空值部门读者所在部门 变长字符串,长度为30 空值表3- 5 借阅表结构列名 说明 数据类型 约束说明读者号 读者的唯一编号 定长字符串,长度为10 外码,引用读者表的主键图书号 图书的唯一编号 定长字符串,长度为20 外码,引用图书表的主键借出日期图书借出的日期 定长字符串,长度为8,为yymmdd 非空值归还日期图书归还的日期 定长字符串,长度为8,为yymmdd空值主键为:(读者号, 图书号)(1)用 SQL 语句创建图书馆数据库。Create database 图书馆数据库;(2)用 SQL 语句创建上述三个表。use 图书馆数据库
3、Gocreate table book( bnum char (20) primary key,bname varchar (50),bwri varchar (30),bpub varchar (30),bpri float );use 图书馆数据库 gocreate table rea( rnum char (10) primary key,rname char (8) not null,rsex char (2) not null,rphone char (8),rpar char(30);use 图书馆数据库 gocreate table br( rnum char (10) not
4、null,bnum char (20) not null,brdate char (8) not null,brback char (8),foreign key (rnum) references rea(rnum),foreign key (bnum) references book(bnum);(3)基于图书馆数据库的三个表,用 SQL 语言完成以下各项操作:1)给图书表增加一列“ISBN” ,数据类型为 CHAR(10)alter table book add ISBN CHAR(10);2)为刚添加的 ISBN 列增加缺省值约束,约束名为 ISBNDEF,缺省值为7111085949
5、;ALTER TABLE BOOKADD CONSTRAINT ISBNDEF DEFAULT 7111085949 FOR ISBN;3)为读者表的办公电话列,添加一个 CHECK 约束,要求前五位88320,约束名为 CHECKDEF。ALTER TABLE REAADD CONSTRAINT CHECKDEF CHECK (RPHONE =88320000 AND RPHONE 2order by (count (bnum) desc(6)针对以上三个表,用 SQL 语言完成以下各项多表连接查询、子查询、组合查询1)查询读者的基本信息以及他/她借阅的情况。select rea.* ,br
6、.bnum ,br.brback ,br.brdate from rea,brwhere rea.rnum = br.rnum 2)查询读者的读者号、姓名、借阅的图书名、借出日期、归还日期。select br.bnum ,rea.rname,book.bname,br.brback ,br.brdate from rea,br,book where rea.rnum = br.rnum and book.bnum=br.bnum 3)查询借阅了机械工业出版社出版,并且书名中包含数据库三个字的图书的读者,显示读者号、姓名、书名、出版社,借出日期、归还日期。select rea.rnum,rea.rname,book.bname,br.brback ,br.brdate from rea,br,book where book.bname like %数据库% and bpub = 机械工业出版社 and rea.rnum = br.rnum and book.bnum=br.bnum 4)查询至少借阅过1本机械工业出版社出版的书的读者的读者号、姓名、书名,借阅本数,并按借阅本数多少降序排列。select br.rnum,rea.rname,bname,COUNT(br.bnum )本数from book,rea,br