索引创建

  1. 在图书表中按出版社号建立一个非聚集索引PublishingnoIdx:

    sql

    CREATE NONCLUSTERED INDEX PublishingnoIdx ON 图书(Publishingno);

  2. 在读者表中按身份证号建立一个非聚集索引IdentifycardIdx:

    sql

    CREATE NONCLUSTERED INDEX IdentifycardIdx ON 读者(身份证号);

  3. 在读者表中,首先按工作单位的升序,然后按最大借书数量降序建立一个非聚集索引WorkunitCountIdx:

    sql

    CREATE NONCLUSTERED INDEX WorkunitCountIdx ON 读者(工作单位 ASC, 最大借书数量 DESC);

视图创建

  1. 创建一个图书名称中含有“数据”的图书视图BookView:

    sql

    CREATE VIEW BookView AS

    SELECT * FROM 图书

    WHERE 图书名称 LIKE '%数据%';

  2. 创建包含读者编号、读者姓名、图书编号、图书名称、借阅日期、归还日期的视图BorrowView:

    sql

    CREATE VIEW BorrowView AS

    SELECT 读者编号, 读者姓名, 图书编号, 图书名称, 借阅日期, 归还日期

    FROM 借阅记录;

  3. 创建显示至少借阅3本书的读者信息视图ReaderView:

    sql

    CREATE VIEW ReaderView AS

    SELECT 读者编号, 读者姓名, COUNT(借阅编号) AS 借阅数量

    FROM 借阅记录

    GROUP BY 读者编号, 读者姓名

    HAVING COUNT(借阅编号) >= 3;

视图查询

  1. 查询2016年3月1日以前借阅的图书信息(基于BorrowView视图):

    sql

    SELECT * FROM BorrowView

    WHERE 借阅日期 < '2016-03-01';

  2. 查询姓张的读者信息(基于ReaderView视图):

    sql

    SELECT * FROM ReaderView

    WHERE 读者姓名 LIKE '张%';

  3. 基于BorrowView创建只包含“统一股份有限公司”读者的借阅视图BorrowView1:

    sql

    CREATE VIEW BorrowView1 AS

    SELECT * FROM BorrowView

    WHERE 读者单位 = '统一股份有限公司';

  4. 删除视图BorrowView:

    sql

    DROP VIEW BorrowView;