北华航天工业学院
《数据库原理与应用》
实验报告
报告题目: SQL语言
作者所在系部:计算机系
作者所在专业:网络工程
作者学号: 20114052233
作者姓名:张旭刚
指导教师姓名:李建义
完成时间: 2013 4.24
北华航天工业学院教务处制
SQL语言
一、实验目的
1、理解数据库以与数据表的设计;
2、熟悉SQL Server2005中的数据类型;
3、熟悉使用SQL语句创建和删除模式和索引;
4、掌握使用SQL语句创建、修改和删除数据表;
5、掌握使用SQL语句查询表中的数据;
6、掌握使用SQL语句插入、修改和删除数据表中的数据;
7、掌握使用SQL语句创建、删除、查询和更新视图。
二、实验内容
(一)创建数据库和模式
1、通过SQL语句创建图书信息管理数据库,命名为“db_Library”,数据文件和日志文件放在D盘下以自己学号和姓名命名的文件夹中,数据文件的逻辑名为db_Library_data,数据文件的操作系统名为db_Library_data.mdf,文件初始大小为10MB,最大可增加至300MB,增幅为10%;日志文件的逻辑名为db_Library_log,日志文件的操作系统名为db_Library_data.ldf,文件初始大小为5MB,最大可增加至200MB,增幅为2MB。
2、通过SQL语句在该数据库中创建模式L-C。
(二)创建和管理数据表
要求为各数据表的字段选择合适的数据类型与名称;为各数据表设置相应的完整性约束条件。
1、通过SQL语句将以下数据表创建在L-C模式下:
课程信息表(tb_course)——课程编号、课程名、先修课、学分
2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下:
图书类别信息表(tb_booktype)——类别编号、类别名称
图书信息表(tb_book)——图书编号、类别编号、书名、作者、出版社、定价、库存数
读者信息表(tb_reader)——读者编号、姓名、性别、学号、班级、系部
借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期、归还日期
3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。
4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。
5、通过SQL语句删除课程信息表。
(三)创建和删除索引
1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。
2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的姓名字段的升序创建。
3、使用SQL语句删除之前创建的两个索引。
(四)数据库与数据表设计
根据周围的实际应用情况,自选一个小型的数据库应用项目进行研究,完成该系统的设计。要求2人一组,通过需求分析,列出系统的主要功能,并完成该系统数据库的逻辑结构设计。例如可选择学籍管理系统、企业进销存管理系统、人事管理系统或在线考试系统等。
(五)数据查询
通过SSMS向各数据表中添加以下记录。
(1)图书类别信息表
类别编号类别名称类别编号类别名称类别编号类别名称
1 数学 4 文学7 建筑
2 英语 5 艺术8 化学
3 计算机 6 电子信息9 物理
(2)图书信息表
图书编号类别编号书名作者出版社定价库存数10001 3 数据库管理王珊高等教育出版社35.50 10 100创建唯一约束sql语句
02 3 软件测试贺平机械工业出版社24.60 5 10003 3 C++程序设计谭浩强清华大学出版社30.00 8 10004 4 红楼梦曹雪芹人民文学出版社70.00 5 10005 4 西游记罗贯中人民文学出版社60.00 8 10006 4 红与黑司汤达人民文学出版社50.00 5
10007 1 高等数学李翼清华大学出版社28.00 4
10008 8 有机化学张翔高等教育出版社29.00 5 10009 2 大学英语王琳高等教育出版社25.00 10 10010 2 英语教程王琳高等教育出版社25.00 5 (3)读者信息表
读者编号姓名性别学号班级所在系
R10001 张小航男08511 计算机系R10002 王文广女08511 计算机系R10003 李理女08511 计算机系R10004 李彦宏男08512 计算机系R10005 张丽霞女08512 计算机系R10006 王强男07211 电子系
R10007 张宝田男07212 电子系
R10008 宋文霞女07611 建工系
R10009 刘芳菲女08811 外语系
R10010 常江宁男08812 外语系(4)借阅
读者编号借阅日期归还日期信息表
图书编号
10002 R10003 2009-9-20 2009-10-20
10003 R10003 2009-9-20 2009-10-20
10004 R10003 2009-9-30 2009-10-30
10009 R10003 2009-9-30 2009-10-30
10009 R10007 2009-5-20 2009-6-20
10010 R10007 2009-5-20 2009-6-20
10009 R10009 2009-5-30 2009-6-30
10010 R10009 2009-5-22 2009-6-22
10002 R10009 2009-5-22 2009-6-22
10003 R10009 2009-5-30 2009-6-30
对以上数据表,完成以下操作:
(1)查询每本图书的所有信息;
(2)查询每个读者的读者编号、姓名和班级;
(3)查询每条借阅记录的借阅天数(函数DATEDIFF获取两个日期的差);
(4)查询被借阅过的图书的图书编号;
(5)查询图书编号为“10006”的书名和作者;
(6)查询库存数在5到10本之间的图书的图书编号和书名;
(7)查询计算机系或电子系姓张的读者信息;
(8)查询书名包括“英语”的图书信息;
(9)统计男读者、女读者的人数;
(10)统计各类图书的类别编号、平均定价以与库存总数;
(11)统计每本书籍借阅的人数,要求输出图书编号和所借人数,查询结果按人数降序排列;
(12)查询有库存的各类别图书的类别编号、类别名称和借阅数量;
(13)查询借阅了“大学英语”一书的读者,输出读者姓名、性别、系部;
(14)查询每个读者的读者编号、姓名、所借图书编号以与所借阅日期;(LEFT OUTER JOIN)
(15)查询现有图书中价格最高的图书,输出书名、作者、定价;
(16)查询借阅了“大学英语”但没有借阅“C++程序设计”的读者,输出读者姓名、性别、系部;
(17)统计借阅了2本以上图书的读者信息;
(18)查询借阅了“大学英语”一书或者借阅了“C++程序设计”一书的读者信息;(用集合查询完成)
(19)查询既借阅了“大学英语”一书又借阅了“C++程序设计”一书的读者信息;(用集合查询完成)
(20)查询计算机系中比其他系所有读者借书数量都多的读者的信息;
(21)在读者信息表中插入一条新的记录(读者编号:R10011;姓名:张三;所在系:电子系);
(22)定义一个表tb_booknew,包含图书编号、书名和类别名称字段,要求将类编编号为“3”的图书的图书编号、书名和类别名称插入到tb_bknew表中;
(23)将类别编号为“3”的所有图书的库存数增加5;
(24)将“C++程序设计”这本书的归还日期增加一个月(函数DATEADD)。
(25)删除姓名为“张三”的读者的信息;
(26)删除tb_bknew表中的所有数据;
(27)创建一个名为“读者借阅信息_VIEW”的视图,要求显示计算机系所有读者的借阅信息,包括读者编号、姓名、所在系、图书编号、书名和借阅日期等字段,更新该视图时要保证只有计算机系的读者借阅信息;
(28)创建一个名为“图示借阅信息_VIEW”的视图,要求显示图书的借阅情况,包括图书编号、书名、库存数、借阅次数字段;
(29)查询借阅次数大于2的图书的图书编号、书名、库存数和借阅次数;
(30)删除“图示借阅信息_VIEW”视图。
三、实验步骤
(1)查询每本图书的所有信息;
select *
from tb_book;
(2)查询每个读者的读者编号、姓名和班级;
select Rnum,name,class
from tb_reader;
(2) (3) (4)
(3)查询每条借阅记录的借阅天数(函数DATEDIFF获取两个日期的差); select 'Borrowday'=datediff(DD,Bodata,redata)
from tb_borrow;
(4)查询被借阅过的图书的图书编号;
select Bnum
from tb_borrow;
(5)查询图书编号为“10006”的书名和作者;
select Bname,writer
from tb_book
where Bnum='10006';
(6)查询库存数在5到10本之间的图书的图书编号和书名;
select Bnum,Bname
from tb_book
where Knum between 5 and 10;
(7)查询计算机系或电子系姓张的读者信息;
select *
from tb_reader
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论