以下各题要求都是在Exam数据库中作答。
Exam数据库介绍:该数据库包含了图书表、读者表和借书表,表名分别为:book、reader和borrow。表的结构和数据如下:
  CREATE TABLE book(
bno Char(4) PRIMARY KEY,
bname Char(20),
author Char(10),
publish Char(20),
pubdate Datetime
       )
CREATE TABLE reader(
rno Char(4) PRIMARY KEY,
rname Char(10)
       )CREATE TABLE borrow(
borrowno Int PRIMARY KEY,
bno Char(4),
rno Char(4),
borrowdate Datetime
        )GOINSERT INTO book
VALUES('0001','数据库原理','李明','出版社A','2008-10-01')
INSERT INTO book
VALUES('0002','软件工程','张永','出版社B','2008-08-09')
INSERT INTO book
VALUES('0003','操作系统','赵明哲','出版社C','2009-03-06')
INSERT INTO book
VALUES('0004','数据结构','张辉','出版社D','2009-05-28')INSERT INTO reader
VALUES('0001','李莎')
INSERT INTO reader
VALUES('0002','陈世杰')
INSERT INTO reader
VALUES('0003','吴忠')INSERT INTO borrow
VALUES(1,'0001','0001','2010-03-15')
INSERT INTO borrow
VALUES(2,'0002','0001','2010-03-20')
INSERT INTO borrow
VALUES(3,'0002','0002','2010-03-30')
INSERT INTO borrow
VALUES(4,'0003','0002','2010-04-05')
INSERT INTO borrow
VALUES(5,'0003','0001','2010-04-12')
INSERT INTO borrow
VALUES(6,'0004','0001','2010-04-21')
GO
1 输入语句,查询没有被任何人借过的图书的图书编号、图书名称、作者。操作成功后,按系统提示目录进行保存,文件命名为T2-4.sql。2. 输入语句,查询“出版社A”所出版图书每本的借阅次数,查询结果由“图书编号”和“借阅次数”两列组成。操作成功后,按系统提示目录进行保存,文件命名为T2-7.sql。3. 输入语句,查询借阅次数最多图书的编号和名称。操作成功后,按系统提示目录进行保存,文件命名为T2-8.sql。4. 输入语句,在“图书表”和“借书表”之间进行左外连接操作,连接条件是图书编号相等。操作成功后,按系统提示目录进行保存,文件命名为T2-9.sql。5. 输入语句,创建以上3个基本表及主键,并插入表4、表5和表6所给数据。操作成功后,按系统提示目录进行保存,文件命名为T2-2.sql。
 
6. 输入语句,查询有过借书记录的读者的编号和名称。操作成功后,按系统提示目录进行保存,文件命名为T2-10.sql。7. 输入语句,建立拥有一个参数的名为“bookproc”的存储过程,用来查询借阅次数大于该参数的图书编号,然后执行该存储过程,并将输入参数赋值为“2”。操作成功后,按系统提示目录进行保存,文件命名为T2-12.sql。8. 输入语句,建立名为“newtrigger”的触发器,触发器规定更新借书表的借书日期列时,取消所有操作。操作成功后,按系统提示目录进行保存,文件命名为T2-13.sql。9. 输入语句,删除上题建立的触发器“newtrigger”。操作成功后,按系统提示目录进行保存,文件命名为T2-14.sql。
10. 输入语句,查询“软件工程”的所有借书记录。操作成功后,按系统提示目录进行保存,文件命名为T2-5.sql。
 
11. 输入语句,利用游标循环遍历图书表的每条记录,然后关闭并释放游标。操作成功后,按系统提示目录进行保存,文件命名为T2-15.sql。

解决方案 »

  1.   

    --4.
    select * from 图书表 a left join 借书表 b on a.图书编号=b.图书编号
    --9.
    drop trigger newtrigger
      

  2.   

    --9.
    drop trigger newtrigger
      

  3.   

    大家帮帮忙看看最后一题是这样的嘛??
    DECLEAR @v_ bno  char(4)  , @ v_ bname char(20) , @ v_ author  char(10), @ v_ publish  char(20), @ v_ pubdate  DatetimeDECLEAR book_cursor CURSOR
    FOR SELECT bno,bname,author,publish,pubdate FROm bookOPEN book_cursor
    WHILE @@FETCH_STATUS=0
    BEGIN
    FETCH  NEXT FROM book_cursor INTO @v_ bno, @ v_ bname, @ v_ author, @ v_ publish, @ v_ pubdate END
    CLOSE book_cursor
    DEALLOCATE book_cursor
      

  4.   


    --1.
    select * from book a where not exists(select 1 from borrow where bno=a.bno)
    --2.
    select a.bno,借阅次数=count(*) from (select * from book where rtrim(publish)='出版社A') a inner join borrow b on a.bno=b.bno group by a.bno