数据库图书信息管理数据库SQL语句
数据库课程设计--图书借阅管理系统的设计
图书借阅管理系统的设计1.需求分析图书信息、借阅证件信息及图书借阅管理是一件非常繁琐但又及其重要的工作,因此有必要开发一个数据库管理系统,用来管理这些信息。
这篇课程设计介绍的就是图书借阅信息管理系统。
系统的具体要求如下所述:(1)图书信息的录入:要求能够将图书信息录入到数据库中。
(2)图书信息的修改:根据需要,修改、删除图书信息。
(3)用户登陆:根据用户权限登陆此系统。
(4)系统用户管理:要求可以管理系统的用户,包括添加、修改和删除用户。
(5)借阅证件信息录入:可以输入不同类型的借阅者信息,并根据需要修改、删除借阅证件信息。
(6)借阅证管理:包括借阅证丢失、过期等管理。
(7)借阅管理:包括借书、还书、过期还书与书籍丢失处罚等管理。
2.数据库设计数据库设计主要在SQL Server服务器端建立数据库和数据表,并实现数据处理功能。
本文所设计的数据库中要记录读者的借书情况、图书被借阅的情况以及读者、图书的基本情况。
下面对图书借阅管理系统所需的数据结构进行分析并创建数据库。
2.1 概念结构设计现在对所设计系统的需求作进一步的分析,产生概念结构设计的E-R模型。
由于这个系统并不复杂,因此可采用自顶向下的设计方法。
自顶向下设计的关键是确定系统的核心活动。
所谓核心活动就是系统中的其他活动都要围绕这个活动展开,或与此活动密切相关。
确定了核心活动之后,系统就有了可扩展的余地。
对于这个图书借阅管理系统,其核心活动是借阅,读者与图书之间是通过借阅发生联系的。
因此,此系统包含的实体有:(1) 读者:用于描述一名读者的基本信息,用借书卡编号来标识。
(2) 图书:用于描述一本图书的基本信息,用图书编号来标识。
经过初步分析,可以得到此系统中各实体所包含的基本属性如下:读者:借阅证编号、读者姓名、工作单位、身份证号、借阅证类型、办证日期、证件状态。
图书:图书编号、图书名称、图书分类、作者、出版社、图书价格、图书封面由于一名读者可以同时借阅多本图书,而一本图书一次只能借给一名读者,因此读者和图书之间是一对多的联系。
用SQL语句建立数据库图书
select作者,图书编号
from图书编目表
3)查询所以男生的信息
select *
from学生表
where性别=’男’
4)查询所以学生的借书情况
select学生表.证件号,姓名,借书登记表.图书编号,借期,还期
from学生表,图书编目表,借书登记表
where学生表.证件号=借书登记表.证件号
用SQL语句建立数据库图书
create database图书
on
(name=图书.data,
filename=’D:\图书_mdf’,
size=2,
mazsize=unlimited,
filegrowth=10%)
log on
(name=图书.log,
filename=’D:图书_ldf’,
size=5,
and
图书编目表.图书编号=借书登记表.图书编号
5)查询所以学生的姓名和班级和所借的书名
select姓名,班级,图书名
from学生表,借书登记表,图书编目表
where学生表.证件号=借书登记表.证件号
and图书编目表.图书编号=借书登记表.图书编号
图书名char(15) ,
作者char(10) ,
类别char(20) ,
单价char(10)
)
学生表(证件号,姓名,性别,籍贯,电话)
图书编目表(图书编号,图书名,作者,类别,单价)
借书登记表(证件号,图书编号,借期,还期)
学生表
借书登记表
图书编目表
1)查询学生表的所有信息
select *
from学生表
create table借书登记表
SQL语句练习及参考答案
SQL语句练习及参考答案SQL 语句练习1.设学⽣选课数据库有关系S (sno,sname,age,sex )、SC (sno,cno,grade )和C(cno,cname,teacher ),分别表⽰学⽣、选课和课程,sno 代表学号,sname 代表学⽣姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。
试完成表⽰下列查询。
(1)检索年龄⼤于21的男学⽣学号(sno)和姓名(sname)。
(2)建⽴性别只能为“男”、“⼥”的约束。
(3)创建⼀个视图v1,该视图⽤来查询学⽣的选课情况,要求包含:学⽣姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。
(4)检索选修课程号为k1和k5的学⽣学号(sno)。
(5)检索全部学⽣都选修的课程的课程号(cno)和课程名(cname)。
(6)删除所有男同学的选课记录。
1.(1)select sno,snae from s where sex=’男’ and age>21 (2)alter table s add constraint c1 check sex in (‘男’,’⼥’)(3)create view v1 as select sname,cname,teacher,grade from s,sc,c where s.sno=sc.sno and/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o (4)select sno fromsc sc1 where cno=’k1’ and exists (se lect * fromsc sc2 where sc1.sno =sc2.sno and/doc/62176c89fe4733687e21aaca.html o=’k5’)(5)select cno,cnam from c where not exists (select * from s where not exists (select * from sc where/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o and s.sno=sc.sno)(6)delete from sc where sno in (select sno from s where sex=’男’)或delete sc from sc,s where s.sno=sc.sno and sex=’男’2.设图书借阅数据库有关系图书(图书编号,书名,作者,出版社,出版时间,图书类别)、读者(读者编号,姓名,读者类别)和借阅(读者编号, 图书编号, 借阅⽇期,还期)。
高校图书馆管理系统(SQL数据库)
高校图书馆管理系统(SQL数据库)高校图书馆管理系统(SQL数据库)随着信息技术的发展,高校图书馆管理系统在图书馆运营中的重要性日益凸显。
为了更好地管理馆藏资源和提供优质的服务,许多高校选择使用SQL数据库作为图书馆管理系统的基础。
本文将探讨高校图书馆管理系统中SQL数据库的应用及其优势。
一、图书馆管理系统简介图书馆管理系统是高校图书馆中的核心业务系统,它涵盖了图书馆的各个环节,包括图书采购、编目、借阅、归还、查询等功能。
通过图书馆管理系统,读者可以方便地查找、借阅和归还图书,图书馆工作人员也可以高效地管理馆藏资源。
二、SQL数据库在图书馆管理系统中的应用1. 数据库设计在图书馆管理系统中,SQL数据库的设计是至关重要的一环。
通过合理的数据库设计,可以提高系统的查询效率和安全性。
例如,可以将图书馆中的书籍信息、读者信息、借阅记录等存储在不同的数据库表中,并通过外键关联它们,实现数据的联合查询。
2. 图书馆资源管理SQL数据库提供了强大的查询和管理功能,可以方便地进行图书馆资源管理。
通过SQL语句,图书馆管理员可以实现对图书馆馆藏资源进行分类、检索和统计。
同时,SQL数据库还支持数据的备份和恢复,保障了图书馆数据的安全性。
3. 借阅管理借阅管理是图书馆管理系统中的核心功能之一。
SQL数据库可以存储读者的借阅记录,包括借阅时间、归还时间、借阅状态等信息。
通过SQL查询语句,管理员可以实时监控图书的借阅情况,及时催还逾期图书。
4. 读者管理通过SQL数据库,图书馆管理员可以方便地管理读者信息。
包括读者的个人信息、借阅历史记录、借阅限制等。
管理员可以针对不同的读者类型设置不同的借阅权限,确保图书馆资源的合理利用。
5. 统计和报表SQL数据库提供了强大的统计和报表功能,方便图书馆管理员进行图书馆运营效果的评估。
通过SQL查询语句,可以得到图书馆的借阅量、图书馆藏资源的流通情况等各项指标,为图书馆决策提供有力支持。
3-SQL语句练习题参考答案
标准SQL语言一、选择题1、下面关于SQL标准的叙述中,不正确的是(B )。
A.SQL语言是集数据定义、数据操纵、数据控制功能为一体的语言。
B.SQL语言是一种高度过程化的语言。
C.SQL标准规定数据库是按三级模式结构构建。
D.SQL语言是关系型数据库的标准语言。
E.SQL语言是面向集合的语言。
2、SQL语言中,修改基本表结构的语句是( B )。
A.UPDATE B.ALTER C.DROP D.CREATE3、SQL语言中,删除基本表结构的语句是( C )。
A.DELETE B.ALTER C.DROP D.CREATE4、下面关于“视图”的叙述中,不正确的是( C )。
A.视图是一种“虚表”,它的数据被存放在基本表中。
B.视图提供了逻辑数据独立性。
C.不能通过视图来更新数据库中的数据。
D.视图能提供对数据的安全保护。
5、下面关于SELECT语句的叙述中,不正确的是(C)。
A.SELECT产生的结果是一个集合。
B.HA VING子句必须与GROUP BY子句一起使用。
C.可以省略FROM子句。
D.可以省略WHERE子句。
二、填空题1、在使用INSERT语句向一个表中插入元组时,“值列表”中值的个数、(顺序)、类型必须与“列名表”保持一致。
2、在向一个表中插入元组时,对于未指定默认值且(不能取空值)的字段必须赋值。
3、向表中插入元组时,主键的值不能取(NULL )值。
4、在使用DELETE语句时,如果不指定(where 条件)就会将整个表的数据删除。
5、视图是从一个或几个基本表或(视图)导出的表,它与基本表不同,是一个虚表。
三、判断题1、SQL语言是面向集合操作的语言。
√2、可以通过视图来查询数据,但不能通过视图来更新数据库中的数据。
×3、在SQL Server数据库系统中,向表中插入元组时,系统自动为具有标识属性的列赋值。
√4、在SQL Server数据库系统中,向表中插入元组时,对取值类型为timestamp(时间戳)的列不能赋值,系统自动赋值。
图书管理系统数据库设计_MYSQL实现
图书管理系统数据库设计一、系统概述1、系统简介图书管理是每个图书馆都需要进行的工作。
一个设计良好的图书管理系统数据库能够给图书管理带来很大的便利。
2、需求分析图书管理系统的需求定义为:1.学生可以直接通过借阅终端来查阅书籍信息,同时也可以查阅自己的借阅信息。
2.当学生需要借阅书籍时,通过账号密码登陆借阅系统,借阅系统处理学生的借阅,同时修改图书馆保存的图书信息,修改被借阅的书籍是否还有剩余,同时更新学生个人的借阅信息。
3.学生借阅图书之前需要将自己的个人信息注册,登陆时对照学生信息。
4.学生直接归还图书,根据图书编码修改借阅信息5.管理员登陆管理系统后,可以修改图书信息,增加或者删除图书信息6.管理员可以注销学生信息。
通过需求定义,画出图书管理系统的数据流图:数据流图二、系统功能设计画出系统功能模块图并用文字对各功能模块进行详细介绍。
三、数据库设计方案图表1、系统E-R模型2、设计表给出设计的表名、结构以及表上设计的完整性约束。
student:book_sort:ticket_fee float null 处罚金额列名数据类型是否为空/性质说明manager_id varchar not null / PK 管理员编号manager_name varchar not null 管理员姓名manager_age varchar not null 管理员年龄manager_phone varchar not null 管理员电话3、设计索引给出在各表上建立的索引以及使用的语句。
student:1.为stu_id创建索引,升序排序sql:create index index_id on student(stu_id asc);2.为stu_name创建索引,并且降序排序sql:alter table student add index index_name(stu_name, desc);插入索引操作和结果如下所示:mysql> create index index_id on student(stu_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> alter table student add index index_name(stu_name desc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql>book:1.为book_id创建索引,升序排列sql:create index index_bid on book(book_id);2.为book_record创建索引,以便方便查询图书的登记日期信息,升序:sql:create index index_brecord on book(book_record);插入索引的操作和结果如下所示:mysql> create index index_bid on book(book_id);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> create index index_brecord on book(book_record);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0borrow:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on borrow(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid on borrow(stu_id asc, book_id asc); Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0return_table:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on return_table(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid_r on return_table(stu_id asc, book_id asc); Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0ticket:1. 为stu_id和book_id创建多列索引:sql:create index index_sid_bid on ticket(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid on ticket(stu_id asc, book_id asc); Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0manager:1.为manager_id创建索引:sql:create index index_mid on manager(manager_id);插入索引的操作和结果如下所示:mysql> create index index_mid on manager(manager_id);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 04、设计视图给出在各表上建立的视图以及使用的语句。
数据库sql课后练习题及答案解析
先创建下面三个表:(book表)(borrow表)(reader表)1) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。
2) 列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。
3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。
4) 查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OU TPUT)和单价(PRICE)升序排序。
5) 查找书名以”计算机”开头的所有图书和作者(WRITER)。
6) 检索同时借阅了总编号(BOOK_ID)为和两本书的借书证号(READER_ID)。
##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。
8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。
9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。
##10)* 找出借阅了<FoxPro大全>一书的借书证号。
11) 找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。
12) 查询2006年7月以后没有借书的读者借书证号、姓名及单位。
#13) 求”科学出版社”图书的最高单价、最低单价、平均单价。
##14)* 求”信息系”当前借阅图书的读者人次数。
#15) 求出各个出版社图书的最高价格、最低价格和总册数。
#16) 分别找出各单位当前借阅图书的读者人数及所在单位。
17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。
18) 分别找出借书人次数多于1人次的单位及人次数。
19) 找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。
20) 查询经济系是否还清所有图书。
如果已经还清,显示该系所有读者的姓名、所在单位和职称。
附录:建表语句创建图书管理库的图书、读者和借阅三个基本表的表结构:创建BOOK:(图书表)CREATE TABLE BOOK (BOOK_ID int,SORT VARCHAR(10),BOOK_NAME VARCHAR(50),WRITER VARCHAR(10),OUTPUT VARCHAR(50),PRICE int);创建READER:(读者表)CREATE TABLE READER (READER_ID int,COMPANY VARCHAR(10),NAME VARCHAR(10),SEX VARCHAR(2),GRADE VARCHAR(10),ADDR VARCHAR(50));创建BORROW:(借阅表)CREATE TABLE BORROW (READER_ID int,BOOK_ID int,BORROW_DATE datetime)插入数据:BOOK表:insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP5/10','计算机基础','李伟','高等教育出版社',18.00);insert into BOOK values(,'TP3/12','FoxBASE','张三','电子工业出版社',23.60);insert into BOOK values(,'TS7/21','高等数学','刘明','高等教育出版社',20.00);insert into BOOK values(,'TR9/12','线性代数','孙业','北京大学出版社',20.80);insert into BOOK values(,'TR7/90','大学英语','胡玲','清华大学出版社',12.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(,'TP4/15','计算机网络','黄力钧','高等教育出版社',21.80);insert into BOOK values(,'TP4/15','计算机网络','黄力钧','高等教育出版社',2 1.80);READER表:insert into reader values(111,'信息系','王维利','女','教授','1号楼424'); insert into reader values(112,'财会系','李立','男','副教授','2号楼316 ');insert into reader values(113,'经济系','张三','男','讲师','3号楼105'); insert into reader values(114,'信息系','周华发','男','讲师','1号楼316'); insert into reader values(115,'信息系','赵正义','男','工程师','1号楼224 ');insert into reader values(116,'信息系','李明','男','副教授','1号楼318 ');insert into reader values(117,'计算机系','李小峰','男','助教','1号楼214 ');insert into reader values(118,'计算机系','许鹏飞','男','助工','1号楼216 ');insert into reader values(119,'计算机系','刘大龙','男','教授','1号楼318 ');insert into reader values(120,'国际贸易','李雪','男','副教授','4号楼506');insert into reader values(121,'国际贸易','李爽','女','讲师','4号楼510 ');insert into reader values(122,'国际贸易','王纯','女','讲师','4号楼512 ');insert into reader values(123,'财会系','沈小霞','女','助教','2号楼202'); insert into reader values(124,'财会系','朱海','男','讲师','2号楼210'); insert into reader values(125,'财会系','马英明','男','副教授','2号楼212 ');BORROW表:insert into borrow values(112,,'3-19-2006');insert into borrow values(125,,'2-12-2006');insert into borrow values(111,,'8-21-2006');insert into borrow values(112,,'3-14-2006');insert into borrow values(114,,'10-21-2006');insert into borrow values(120,,'11-2-2006');insert into borrow values(120,,'10-18-2006');insert into borrow values(119,,'11-12-2006');insert into borrow values(112,,'10-23-2006');insert into borrow values(115,,'8-21-2006');insert into borrow values(118,,'9-10-2006');现有关系数据库如下:数据库名:图书借阅管理系统读者表(读者编号 char(6),姓名,性别,年龄,单位,身份证号,职称)图书表(图书编号char(6),图书名称,出版社,作者)借阅表(读者编号,图书编号,借阅时间)用SQL语言实现下列功能的sql语句代码。
Access 2010数据库应用:修改“图书信息2”表中新添加记录的“价格”
5
更新完成后,打开数据表“图书信息2”, 可以看到新追加记录的价格已修改为“40”, 如图6-31所示。
图6-31 数据表“图书信息2”中修改“价格”字段的值
6
《Access2010数据库应用》
ቤተ መጻሕፍቲ ባይዱ
3
【任务实施】
(1)打开SQL视图 (2)输入SQL语句 在【SQL视图】窗口输入如下所示的Update语句。
Update 图书信息2 Set 价格=40 Where 图书编号="TP3/2715"
4
(3)保存查询 将该查询进行保存,其名称为“查询6-13”。 (4)运行SQL语句 在查询工具的【设计】上下文命令选项卡的 【结果】组中单击选择【运行】按钮,此时会弹出 如图6-30所示的对话框,单击【是】按钮,则对 “图书信息2”表中符合条件的数据进行修改操作。
单元6 应用SQL语句操作Access数据表
《Access2010数据库应用》
单元6 应用SQL语句操作Access数据表
6.5 使用Update语句修改数据表中的数据
2
《Access2010数据库应用》
【任务6-13】修改“图书信息2” 表中新添加记录的“价格”
【任务描述】
将数据表“图书信息2”中新添 加的记录的“价格”修改为40元。
实验十一 图书管理系统数据库设计
注销
图3-1
学生的操作流程
(2)管理员 管理员可完成书籍和学生的增加、删除和修改以及对学生借阅、续借、归还的确认,其 操作流程如图3-2 所示。 登录
书籍信息维护
学生信息维护
借阅图书确认
归还图书确认
注销
图3-2 2、概念模型设计
管理员操作流程
数据库需要表述的信息有以下几种: (1)图书信息 (2)学生信息 (3)管理员信息 (4)学生预定图书信息 (5)学生借阅还图书信息 说明: 1)书号是图书的键码,每本书有唯一的书号。一个学生可同时借阅多本书。一个管理员可 处理多个同学的借阅等事宜。 2)一般情况下,学生、管理员和图书之间的联系为1:1:n,借书关系Lend作为连接关系, 其键码为n端实体集的键码,即书号为借书关系的键码。这反映了如果还书时也把当初的借 书记录删除,则书号就能唯一识别一个元组。 如果在不删除借书记录的情况下,同一学生再次借同一本书,这时,学生、管理员和图 之间的联系变为m:p:n,于是,借书关系的键码为书号、学号和管理员号的组合。但这里有一 个隐含的信息, 即同一学生前后两次借同一本书所遇到的管理员不同, 而这种不同可能仅仅 是“ 日期”不同。因此,借书日期成了必不可少的成分,也就是说,在这种情况下,属性全集 才是借书关系的键码。 总之,借书关系的键码与图书管理模式有关,读者可按照自己的理解确定键码,并编写 相应的事务处理流程。其他关系也有类似之处。 3)要知道图书当前的状态,是在图书馆存放,还是被借阅等,需要在Book的模式中增加对 应项用以表示图书当前的状态。 比如我们增加State, 并且约定取值和状态的对应关系如下: 0:在图书馆中并且没有被预定 1:在图书馆中并且已被预定 2:被借出并且没有被预定 3:被借出并且已被预定 用E-R模型表达该模型的设计,画出E-R模型如下: 3、逻辑设计 通过E-R模型到关系模型的设计,请写出关系模式: (实体或属性的英文可以自取) 4、物理设计 为了提高在表中搜索元组的速度, 在实际实现的时候应该基于键码建立索引。 下面是各 表中建立索引的表项: (1)在书表中按书号建立索引 T-SQL语句: (2)在学生表中按学号建立索引 T-SQL语句: 5、用T-SQL实现设计 (1)建立数据库表 1) 建Book(图书信息) 表(同2) 时定义约束) T-SQL: 2) 建Student(学生信息)表(同4) 时定义约束) T-SQL:
数据库系统原理课程设计——图书借阅管理系统
数据库系统原理课程设计——图书借阅管理系统数据库系统原理课程设计报告图书借阅管理系统第1章设计背景与需求分析1.1设计背景1.1.1 图书管理的现状图书馆作为⼀种资源的集散地,图书和⽤户在借阅资料繁多,包含很多的信息管理,现在有很多的图书馆都是初步的开始使⽤,甚⾄尚未使⽤计算机进⾏资源管理,没有建⽴相对应的图书管理数据系统,⽽是使⽤⼈⼯计算,抄写进⾏,数据处理⼯作量⼤,容易出错和数据丢失。
1.2.2 选题的⽬的、意义图书管理系统数据库有着⼿⼯管理⽆法⽐拟的优点,如检索迅速、查找⽅便、可靠性⾼、存储量⼤、保密性好,成本低等等。
这些优点能极⼤提⾼图书管理的效率,因此,开发⼀套能够为⽤户提供充⾜的信息和快捷的查询⼿段的图书管理系统是⼗分必要的。
1.2功能需求1.2.1读者信息的增加、修改、删除等基本操作1.读者类别信息的输⼊,包括图书类型、图书册数等2.读者档案信息的输⼊,包括读者编号、读者类型等1.2.2图书信息的增加、修改、删除等基本操作。
1.图书类别信息的输⼊,包括类别编号,类别名称等。
2.图书类别信息的查询,修改,包括类别编号,类别名称等。
3.图书档案信息的输⼊,包括图书编号,图书名称,图书类别,作者名称,出版社名称,出版⽇期,图书页数,关键词,登记⽇期,备注信息等。
1.2.3图书流通管理1.图书征订管理2.图书借阅管理3.图书归还管理4.图书罚款管理1.3系统开发环境1、系统:Windows XP,7,8,102、开发平台:SQL SERVER 2070, VISUAL BASIC6.01.4S Q L S E R V E R2017概述SQL SERVER2017是⼀个关系数据管理系统,是微软公司推出的新版本,该版本增加了许多先进的功能,具有⽅便使⽤,可伸缩性好与软件集成度⾼等的优点,可以运⾏在个⼈电脑到⼤型多处理器的服务器等多种平台使⽤。
第2章数据库概念结构设计2.1实体型结构2.2实体间的联系1.⼀个出版社对应多个图书,⼀个图书对应⼀个出版社,出版社和图书是⼀对多联系。
mysql图书馆管理系统的数据库
根据概念设计,创建相应的数据表,并定义主键、外键等约束条件。
视图设计
根据需要,设计相应的视图以简化复杂的查询操作。
索引设计
合理规划索引,提高数据查询效率。
物理设计
存储规划
确定数据库的存储方式(如文 件系统、分布式存储等)和存 储参数(如存储容量、备份策
略等)。
性能优化
根据查询需求和数据量,进行 数据库性能优化,如分区、缓 存等。
备份策略
制定完善的数据备份策略,包括 备份频率、备份内容、备份存储 位置等,确保数据安全可靠。
备份实施
按照备份策略进行数据备份,并 记录备份情况,确保备份数据的 完整性和可用性。
恢复流程
建立数据恢复流程,明确恢复步 骤和责任人,确保在数据丢失或 损坏时能够迅速恢复。
数据库安全防护
防火墙配置
配置数据库服务器的防火墙,限制非法访问和恶意攻击,提高数据 库的安全性。
查询优化
总结词
查询优化器是MySQL中用于优化查询性能的重要工具。
详细描述
MySQL查询优化器会自动分析查询语句和索引,选择最优的执行计划。但是,在某些情况下,可能需要手动干 预优化器的决策,例如使用FORCE INDEX或IGNORE INDEX来指导优化器的选择。
存储优化
总结词
详细描述
总结词
类别
图书所属的类别,如文学、科技等。
读者信息表
姓名
读者的姓名。
年龄
读者的年龄。
读者编号
唯一标识每位读者 的编号。
性别
读者的性别。
联系方式
读者的联系方式, 如电话、邮箱等。
借阅信息表
读者编号
关联到读者信息表的读者编号。
数据库-SQL语言的实验
北华航天工业学院《数据库原理与应用》实验报告报告题目: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语句对读者信息表进行修改:删除系部字段、添加所在系字段。
实验5 sql语句练习——图书馆数据库答案
实验5sql语句练习——图书馆数据库实验5sql语句练习——图书馆数据库实验目得(1)了解SQLServer数据库得逻辑结构与物理结构;(2)了解表得结构特点;(3)了解SQL Server得基本数据类型;(4)了解空值概念;(5)学会在企业管理器中创建数据库与表;(6)学会使用T—SQL语句创建数据库与表。
(7)学会使用T-SQL语句更新数据。
(7)学会使用T—SQL语句创建多种查询.实验准备首先要明确,能够创建数据库得用户必须就是系统管理员,或就是被授权使用CREATE DA TABASE语句得用户。
其次创建数据库必须要确定数据库名、数据库大小(最初得大小、最大得大小、就是否允许增长及增长方式)与存储数据库得文件.然后,确定数据库包含哪些表,以及所包含得各表得结构,还要了解SQL Server得常用数据类型,以创建数据库得表。
此外还要了解两种常用得创建数据库、表得方法,即在企业管理器中创建与使用T-SQL得CREATE DAT ABASE语句.实验内容假设有5本书设有一图书馆数据库,其中包括3个表,即图书表、读者表与借阅表。
三个表得结构如图:图书表结构列名说明数据类型约束说明书号图书唯一得编号定长字符串,长度为10 主键书名图书得名称定长字符串,长度为50 空值作者图书得编著者名定长字符串,长度为30 空值出版社图书得出版社定长字符串,长度为30 空值单价出版社确定得图书得单价浮点型,Float 空值读者表结构列名说明数据类型约束说明读者号读者唯一得编号定长字符串,长度为10 主键(1)用Sql语句创建图书馆数据库Create databaseLab05(2)用Sql语句创建上述3个表createtable book(ﻩbookId char(10)primary key,ﻩbookNamevarchar(50),ﻩbookWritervarchar(30),bookPublishvarchar(30),ﻩbookPricefloat)create tablereader(readerId char(10)primarykey,readerName varchar(8)notnull,readerSex char(2)not null,ﻩreaderOfficeTel char(8),readerDepartment varchar(30))create table借阅表(readerIdchar(10),bookIdchar(10),checkOutTime char(8),checkInTime char(8),primarykey(readerId,bookId),ﻩforeignkey (readerId) references reader(readerId),foreignkey (bookId)references book(bookId),)(3)基于图书馆数据库得3个表,用sql语言完成一下操作:1)为图书表增加一列“ISBN”,数据类型为CHAR(10)alter table book add ISBN char(10)2)为刚添加得ISBN列增加缺省值约束,约束名为ISBNDEF,缺省值为‘7111085949'ALTER TABLE bookADDCONSTRAINT ISBNDEFDEFAULT ('7111085949’) FORISBN3)删除图书表中ISBN列增加得缺省值约束alter table bookdrop ISBNDEF4)删除图书表中新增得ISBN列ALTER TABLE book DROPCOLUMNISBN5)查询全体图书得图书号、书名、作者、出版社与单价select bookId,bookName,bookWriter,bookPublish,bookPricefrom book6)查询全体图书得信息,其中单价打8折,并设置该列得别名为‘打折价’select bookId,bookName,bookWriter,bookPublish,(bookPrice*0、8)as打折价from book7)显示所有借阅者得读者号,并去掉重复行selectdistinct readerIdfrom 借阅表8)查询所有单价在20-30元之间得图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPrice between 20and309)查询机械工业出版社、科学出版社、人民邮电出版社得图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwherebookPublish in('机械工业出版社’, '科学出版社',’人民邮电出版社’)10)查询既不就是机械工业出版社、人民邮电出版社、也不就是科学出版社出版得图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish not in(’机械工业出版社’, '科学出版社','人民邮电出版社’)11)查询姓名得第二个字符就是'建’,并且只有2个字得读者得读者号及姓名select readerId,readerNamefromreaderwhere readerName like’_建'12)查询姓名不就是以‘王’、‘张'或‘李’开头得所有读者得读者号及姓名【方式一】查询出来得结果有问题!select readerId,readerNamefrom readerwhere readerName not in('王%','张%','李%')【方式二】select readerId,readerNamefrom readerwhere readerName not in(selectreaderNameﻩfromreaderwhere readerName like’王%’or readerName like'张%’orreaderNamelike'李%')13)查询无归还日期得借阅信息selectﻩbook、bookId,book、bookName,reader、readerId,reader、readerName,借阅表、checkOutTime as 借书时间,ﻩ借阅表、checkInTimeas 还书时间from借阅表,book,readerwhereﻩ借阅表、bookId = book、bookIdand借阅表、readerId=reader、readerIdand ﻩﻩ借阅表、checkInTimeisnull14)查询机械工业出版社图书得平均价格、最高价、最低价select avg(bookPrice)as 平均价格,max(bookPrice)as 最高价,min(bookPrice)as 最低价from bookwhere bookPublish =’机械工业出版社图书’15)查询读者得基本信息及借阅情况ﻩﻩselect reader、readerId,reader、readerName ,借阅表、bookId,book、bookName,book、bookPublishfrom reader ,借阅表,bookwherereader、readerId = 借阅表、readerIdﻩﻩﻩﻩandbook、bookId = 借阅表、bookIdﻩﻩand 借阅表、readerId='1000000007'16)查询至少借阅过1本机械工业出版社出版得图书得读者得读者号、姓名、书名及借阅本数,并按借阅本书多少降序排列selectr、Rno,Rname,count(borrow、Bno)借阅册数from borrow,b,rwhere b、bno=borrow、bnoand press='机械工业出版社' and borrow、rno=r、rnogroup by r、rno,Rnameorderbycount(borrow、Bno) desc17)查询与‘王小平'得办公电话相同得读者得姓名/* 使用“自连接方式”求解*/ﻩﻩselect b、readerName,b、readerId,a、readerOfficeTelfrom readera,reader bwhere a、readerName like ’王小平'anda、readerOfficeTel=b、readerOfficeTel/*18)查询所有单价小于平均单价得图书得书号、书名及出版社select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(ﻩselectavg(bookPrice)as averagePriceﻩfrom book)19)查询‘科学出版社’得图书单价比‘机械工业出版社’最高单价还高得图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPublish like’科学出版社’and bookPrice〉(ﻩselectmax(bookPrice)ﻩfrom bookwhere bookPublish='机械工业出版社')20)查询‘科学出版社’得图书中单价比‘机械工业出版社'最低单价高得图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice 〈(ﻩselect max(bookPrice)ﻩfrom bookﻩwhere bookPublish ='机械工业出版社’ﻩ)and bookPublish like’科学出版社'21)创建机械工业出版社图书得视图CREATE VIEW 机械工业出版社ViewASSELECT bookId,bookName,bookPriceFROM bookWHERE bookPublish=’机械工业出版社'22)创建一个借阅统计视图,名为CountView,包含读者得读者号与总借阅本数CREATEVIEW CountViewASSELECT readerId as读者号,count(*) as 总借阅本数FROM借阅表GROUPBY readerId23)创建一个借阅统计视图,名为CountView10,包含借阅总本数打于2得读者号与总借阅本数CREATE VIEW借阅统计视图ViewASSELECT readerIdas读者号,count(*) as总借阅本数FROM 借阅表GROUP BY readerIdHAVINGCOUNT(*)〉2。
数据库原理习题及答案(总共5套)
数据库原理习题及答案(总共5套)模拟试题(⼀)⼀、填空题(30分)1.数据的独⽴性包括数据的物理独⽴性和数据的逻辑独⽴性。
2.数据的物理独⽴性是指当数据的存储结构(或内模式)改变时,通过系统内部的⾃动映象功能或转换功能,保持了数据的全局逻辑结构(或模式)不变。
3.数据模型由三部分组成:数据结构数据操作完整性约束4.⼀个学⽣可以同时借阅多本图书,⼀本图书只能由⼀个学⽣借阅,学⽣和图书之间为1:n(⼀对多)的联系。
5.⼀个关系模型由若⼲个关系模式组成。
6.在选择运算所得到的结果关系中,所含的元组数不多于原关系中的元组数。
7.SQL语⾔具有对数据的定义查询操纵控制等四个⽅⾯的功能。
8.设X→Y是关系模式R的⼀个函数依赖,并且Y是X的⼦集,则称X→Y是平凡函数依赖。
9.在⼀个关系模式中,若⼀个属性或属性组K完全函数决定整个元组,则称K为该关系的⼀个候选关键字。
10.如果⼀个关系R中的所有⾮主属性都不传递依赖于任何候选关键字,则称关系R属于第三范式,记作R∈3NF。
11.⼀个关系模式为Y(X1,X2,X3,X4),假定该关系存在如下函数依赖:X1←→X2,X1→X3,X1→X4,则该关系属于BCNF。
12.假定⼀个E-R图包含有A实体和B实体,并且从A到B存在着1∶n的联系,则转换成关系模型后,包含有3个关系模式。
13.实现系统案例,防⽌⾮法破坏数据,所采⽤的数据保护措施有:⽤户标识和鉴定、存取控制定义视图审计数据加密14.恢复的实现技术有:数据转储和登录⽇志⽂件。
13、15.____分布式数据库___________是⼀个逻辑上统⼀、地域上分布的数据集合。
16.关系中能唯⼀标识元组,且⼜不含多余属性称为___候选键_____________。
17.在概念结构设计中先,定义全局概念结构的框架,然后逐步细化。
这种⽅法称为_____________⾃顶向下⽅法___________。
18.分布式数据库系统中透明性层次越⾼,应⽤程序的编写越简单。
数据库操作语言
数据库操作语言数据库操作语言是一种用于管理数据库的语言,包括创建、更新、删除、查询和维护数据库中的数据的操作。
在实际应用中,数据库操作语言通常分为两个部分:数据定义语言(DDL)和数据操作语言(DML)。
数据定义语言(DDL)主要用于定义和管理数据库、表、列、主键、外键、索引等数据库对象。
常见的DDL语句包括CREATE、ALTER和DROP。
CREATE语句用于创建数据库、表和其他对象,例如:CREATE DATABASE mydatabase;CREATE TABLE users (id INT(11) AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255),age INT(11));ALTER语句用于修改现有对象,例如:ALTER TABLE users ADD email VARCHAR(255);DROP语句用于删除现有对象,例如:DROP TABLE users;数据操作语言(DML)主要用于查询、插入、更新和删除数据。
常见的DML 语句包括SELECT、INSERT、UPDATE和DELETE。
SELECT语句用于从表中检索数据,例如:SELECT name, age FROM users;INSERT语句用于将新数据插入到表中,例如:INSERT INTO users (name, age) VALUES ('John', 30);UPDATE语句用于更新表中的数据,例如:UPDATE users SET name='John Doe' WHERE id=1;DELETE语句用于从表中删除数据,例如:DELETE FROM users WHERE id=1;除了DDL和DML之外,还有许多其他的数据库操作语言。
例如,存储过程(stored procedure)是一组为特定数据库执行操作的SQL语句。
触发器(trigger)是一种编程结构,用于自动在数据库中执行操作。
Access 2010数据库应用:从“图书信息1”数据表中查询无重复的出版社名称
《Access2010数据库应用》
单元6 应用SQL语句操作Access数据表
6.1 使用Select语句实现单表查询
6.1.2 查询时选择行
2
《Access2010数据库应用》
【任务6-5】从“图书信息1”数据表 中查询无重复的出版社名称
【任务描述】
图6-12 SQL查询6-5的运行结果
5
《Access2010数据库应用》
从“图书信息1”数据表中查询所 有图书的出版社,要求剔除结果中的 QL视图 (2)输入SQL语句 在【SQL视图】窗口输入如下所示的Select语句。
Select Distinct 出版社名称 From 图书信息1
4
(3)保存查询 将该查询进行保存,其名称为“查询6-5”。 (4)运行SQL语句 该Select语句的运行结果如图6-12所示,从运行 结果可看出,出版社没有出现重复值,由于关键字 Distinct决定了只有互不相同的字段值才被操作。
数据库图书信息管理数据库SQL语句
实验 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)——课程编号Course number 、课程名Course name 、先修课The first course 、学分credit2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下:图书类别信息表(tb_booktype)——类别编号Type number 、类别名称Category name图书信息表(tb_book)——图书编号ISBN 、类别编号Type number、书名title 、作者author、出版社BookPublic、定价BookPrice、库存数Inventory number读者信息表(tb_reader)——读者编号Reader ID 、姓名、性别、学号Student ID 、班级、系部pastern借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期Borrowing date 、归还日期Return date3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。
数据库实验(图书信息表)
数据库实验(图书信息表)数据库实验(图书信息表)实验⼀1)创建表图书、读者和借阅,并为每个表定义主键约束;图书(书号,类别,出版社,作者,书名,定价,出版数量) 读者 (读者编号,姓名,单位,性别,电话) 借阅(书号,读者编号,借阅⽇期);2)定义借阅表与图书表之间以及借阅表与读者表之间的键约束;3)分别向每个表中插⼊⾄少5⾏模拟数据;4)修改借阅表,增加“归还⽇期”字段;代码如下:1.创建三个表:create table Book(Bno int primary key,Bkind char(20),Bpublish char(20),Bauthor char(20),Bname char(40),Bprice int,Bnum smallint,)create table Reader(Rno int primary key,Rname char(20),Rworkplace char(20),Rsex char(4),Rtel int,)create table borrow(Bno int,Rno int,rdate int,foreign key(Bno)references Book(Bno),foreign key(Rno)references Reader(Rno),)2.插⼊数据insert into Book values(56201,'计算机','清华⼤学','严蔚敏','数据结构',48,20)insert into Book values(56202,'计算机','清华⼤学','王珊','数据库',28,20)insert into Book values(56203,'英语','⼈民教育','张亮','单词100天',36,50)insert into Book values(56204,'数学','清华⼤学','王菲','⾼等数学',48,20)insert into Book values(56205,'艺术','⼈民教育','张三','书法鉴赏',58,100)insert into Reader values(01,'王敏','清华⼤学','⼥',158123)insert into Reader values(02,'张丽','吕梁学院','⼥',159301)insert into Reader values(03,'陈浩','⼭西⼤学','男',13658)insert into Reader values(04,'贾丽','太原理⼯⼤学','⼥',135430)insert into Reader values(05,'陈琳','北京⼤学','⼥',138364)insert into borrow values(56201,01,0904)insert into borrow values(56202,04,0904)insert into borrow values(56202,03,0921)insert into borrow values(56203,04,0903)insert into borrow values(56204,05,0914)3.修改借阅表,增加“归还⽇期”字段alter table borrow add 归还⽇期 date实验⼆对图书读者数据库,应⽤SQL 语句实现以下查询要求:1)查询计算机类和机械⼯业出版社出版的图书;select * from Book where Bkind='计算机'and Bpublish='机械⼯业出版社'2)查询“机械⼯业出版社”出版的各类图书的平均定价,⽤GROUP BY 表⽰;select AVG (Bprice)'平均定价' from Bookwhere Bpublish='机械⼯业出版社' group by Bpublish3)查找这样的图书类别:要求类别中最⾼的图书定价不低于全部按类别分组的图书平均定价的2倍;select Bkind from Book group by Bkindhaving MAX(Bprice)>=all(select AVG(Bprice)*2 from Book group by Bkind4)列出计算机类图书的书号、名称及价格,最后给出总册数和总价格;(提⽰:可以使⽤Compute⼦句最简便地实现);select Bno,Bname,Bprice from Book create view v_s asselect first.Bprice*second.Bnum total from Book first,Booksecond where first.Bno=second.Bnoselect * from Book,v_s compute sum(Bnum),sum(total)5)列出各出版社计算机类图书的具体书号、名称、价格和销售数量,并求出各出版社这类书的平均价格和销售总量。
数据库系统原理与设计(第2版) 万常选版 第3章 SQL 课后答案
一个图书管理数据库BookDB的模式如图3-31—图3-34所示。
请基于该数据库模式用SQL图3-32 图书表Book的模式图3-34 借阅表Borrow的模式答案:SET NOCOUNT ONSET DATEFORMAT YMDUSE masterGO创建数据库BookDBIF EXISTS(SELECT * FROM sysdatabases WHERE name='BookDB')DROP DATABASE BookDBGOCREATE DATABASE BookDBGOUSE BookDBGO创建图书分类表BookClassCREATE TABLE BookClass(classNo char(3) PRIMARY KEY, /*分类号*/ className char(20) NOT NULL /*分类名称*/)GO创建图书表BookCREATE TABLE Book(bookNo char(10) PRIMARY KEY, /*图书编号*/ classNo char(3) NOT NULL /*分类号*/FOREIGN KEY REFERENCES BookClass, bookName varchar(40) NOT NULL, /*图书名称*/ authorName char(8) NOT NULL, /*作者姓名*/ publishingName varchar(20) NOT NULL, /*出版社名称*/ publishingNo char(17) NOT NULL, /*出版号*/price numeric(7,2) NOT NULL, /*单价*/ publishingDate datetime NOT NULL, /*出版时间*/ shopDate datetime NOT NULL, /*入库时间*/ shopNum int NOT NULL /*入库数量*/)GO创建读者表ReaderCREATE TABLE Reader(readerNo char(8) PRIMARY KEY, /*读者编号*/ readerName char(8) NOT NULL, /*读者姓名*/sex char(2) NOT NULL, /*性别*/ identitycard char(18) NOT NULL, /*身份证号*/ workUnit varchar(50) NULL /*工作单位*/)GO创建借阅表BorrowCREATE TABLE Borrow(readerNo char(8) NOT NULL, /*读者编号*/ bookNo char(10) NOT NULL, /*图书编号*/ borrowDate datetime NOT NULL, /*借阅日期*/shouldDate datetime NOT NULL, /*应归还日期*/returnDate datetime NULL, /*归还日期*/FOREIGN KEY(readerNo) REFERENCES Reader,FOREIGN KEY(bookNo) REFERENCES Book,PRIMARY KEY(readerNo,bookNo,borrowDate))GO3.1 查询1991年出生的读者姓名、工作单位和身份证号。
SQL查询(图书数据库-题目)
SQL查询设有一图书馆数据库,包括三个表:图书表、读者表、借阅表。
三个表的结构如下图所示。
要求:完成以下习题。
表1图书表结构表2读者表结构表3借阅表结构(1)创建图书馆数据库1.用SQL语句创建图书馆数据库。
答:CREATE DATABASE 图书馆(2)创建图书馆数据库的三个表。
(在SQL Server 2008平台环境下实现)2.创建图书表3.创建读者表4.创建借阅表(3)针对以上三个表,用SQL语言完成以下各项查询:5.查询全体图书的信息,其中单价打8折,并且将该列设置别名为’打折价’。
6.显示所有借阅者的读者号,并去掉重复行。
7.查询所有单价不在20到30之间的图书信息。
8.查询机械工业出版社、科学出版社、人民邮电出版社的图书信息9.查询既不是机械工业出版社、也不是科学出版社出版的图书信息10.查找姓名的第二个字符是’建’并且只有两三个字符的读者的读者号、姓名。
11.查找姓名不是以’王’、’张’或’李’开头的所有读者的读者号、姓名。
12.查询无归还日期的借阅信息。
13.查询机械工业出版社或科学出版社出版的图书名,出版社,单价。
14.求读者的总人数15.求借阅了图书的读者的总人数16.求机械工业出版社图书的平均价格、最高价、最低价。
17.查询借阅图书本数超过2本的读者号、总本数。
并按借阅本数值从大到小排序。
(4)针对以上三个表,用SQL语言完成以下各项多表连接查询、子查询、组合查询18.查询读者的读者号、姓名、借阅的图书名、借出日期、归还日期。
19.查询借阅了机械工业出版社出版,并且书名中包含’数据库’三个字的图书的读者,显示读者号、姓名、书名、出版社,借出日期、归还日期。
20.查询至少借阅过1本机械工业出版社出版的书的读者的读者号、姓名、书名,借阅本数,并按借阅本数多少降序排列。
21.查询与’王平’的办公电话相同的读者的姓名。
22.查询办公电话为’88320701’的所有读者的借阅情况,要求包括借阅了书籍的读者和没有借阅的读者,显示他们的读者号、姓名、书名、借阅日期。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验 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)——课程编号Course number 、课程名Course name 、先修课The first course 、学分credit2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下:图书类别信息表(tb_booktype)——类别编号Type number 、类别名称Category name图书信息表(tb_book)——图书编号ISBN 、类别编号Type number、书名title 、作者author、BookPublic、定价BookPrice、库存数Inventory number读者信息表(tb_reader)——读者编号Reader ID 、、性别、学号Student ID 、班级、系部pastern 借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期Borrowing date 、归还日期Return date3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。
4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。
5、通过SQL语句删除课程信息表。
(三)创建和删除索引1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。
2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的字段的升序创建。
3、使用SQL语句删除之前创建的两个索引。
(四)数据库及数据表设计根据周围的实际应用情况,自选一个小型的数据库应用项目进行研究,完成该系统的设计。
要求2人一组,通过需求分析,列出系统的主要功能,并完成该系统数据库的逻辑结构设计。
例如可选择学籍管理系统、企业进销存管理系统、人事管理系统或在线考试系统等。
(五)数据查询通过SSMS向各数据表中添加以下记录。
(1(2)图书信息表(4)借阅信息表对以上数据表,完成以下操作:(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”视图。
三、实验步骤use[master]gocreate database db_Libraryon primary(name=N'db_Library_data',filename='E:\SQL\db_Library_data.mdf',size=10MB,maxsize=300MB,filegrowth=10%)log on(name='db_Library_log',filename='E:\SQL\db_Library_data.ldf',size=5MB,maxsize=200MB,filegrowth=2MB)gouse db_Librarygocreate schema"L-C"authorization guest create table tb_course--课程信息表(Coursenumber int,Coursename char(20),Thefirstcourse char(20),Credit int)gocreate table tb_booktype--图书类别信息表(Typenumber int,Categoryname char(20))gocreate table tb_book--图书信息表(ISBN int,Typenumber int,Title char(20),Author char(20),BookPublic char(20),BookPrice float,Inventorynumber int)gocreate table tb_reader--读者信息表(ReaderID char(20),Name char(20),Sex char(2),StudentID int,Class char(20),Pastern char(20))gocreate table tb_borrow--借阅信息表(ISBN int,ReaderID char(20),Borrowingdate char(20),Returndate char(20))goalter table tb_reader drop column Pasternalter table tb_reader add column Pasternalter table tb_book alter column BookPrice realdrop table tb_course--创建和删除索引create index IX_S_QUANTITY on tb_book(Inventorynumber)create index IX_S_NAME on tb_reader(Name asc)drop index IX_S_QUANTITYdrop index IX_S_NAME--图书类别信息表信息insert into tb_booktype values(1,'数学')insert into tb_booktype values(2,'英语')insert into tb_booktype values(3,'计算机')insert into tb_booktype values(4,'文学')insert into tb_booktype values(5,'艺术')insert into tb_booktype values(6,'电子信息')go--图书信息表信息insert into tb_book values(10001,3,'数据库管理','王珊','高等教育',35.50,10) insert into tb_book values(10002,3,'软件测试','贺平','机械工业',24.60,5) insert into tb_book values(10003,3,'C++程序设计','谭浩强','清华大学',30.00,8) insert into tb_book values(10004,4,'红楼梦','雪芹','人民文学',70.00,5)insert into tb_book values(10005,4,'西游记','罗贯中','人民文学',60.00,8) insert into tb_book values(10006,4,'红与黑','司汤达','人民文学',50.00,5) insert into tb_book values(10007,1,'高等数学','翼','清华大学',28.00,4)insert into tb_book values(10008,8,'有机化学','翔','高等教育',29.00,5)insert into tb_book values(10009,2,'大学英语','王琳','高等教育',25.00,10) insert into tb_book values(10010,2,'英语教程','王琳','高等教育',25.00,5)go--读者信息表信息insert into tb_reader values('R10001','小航','男',0851101,'08511','计算机系') insert into tb_reader values('R10002','王文广','女',0851102,'08511','计算机系') insert into tb_reader values('R10003','理','女',0851103,'08511','计算机系') insert into tb_reader values('R10004','彦宏','男',0851201,'08512','计算机系') insert into tb_reader values('R10005','丽霞','女',0851202,'08512','计算机系') insert into tb_reader values('R10006','王强','男',0721104,'07211','电子系') insert into tb_reader values('R10007','宝田','男',0721204,'07212','电子系') insert into tb_reader values('R10008','宋文霞','女',0761104,'07611','建工系') insert into tb_reader values('R10009','芳菲','女',0881104,'08811','外语系') insert into tb_reader values('R10010','常江宁','男',0881204,'08812','外语系') go--借阅信息表信息insert into tb_borrow values(10002,'R10003','2009-9-20','2009-10-20')insert into tb_borrow values(10003,'R10003','2009-9-20','2009-10-20')insert into tb_borrow values(10004,'R10003','2009-9-30','2009-10-30')insert into tb_borrow values(10009,'R10003','2009-9-30','2009-10-30')insert into tb_borrow values(10009,'R10007','2009-5-20','2009-6-20')insert into tb_borrow values(10010,'R10007','2009-5-20','2009-6-20')insert into tb_borrow values(10009,'R10009','2009-5-30','2009-6-30')insert into tb_borrow values(10010,'R10009','2009-5-22','2009-6-22')insert into tb_borrow values(10002,'R10009','2009-5-22','2009-6-22')insert into tb_borrow values(10003,'R10009','2009-5-30','2009-6-30')go--(1)查询每本图书的所有信息;select*from tb_book--(2)查询每个读者的读者编号、和班级;select ReaderID,Name,Classfrom tb_reader--(3)查询每条借阅记录的借阅天数;select datediff(DAY,Borrowingdate,Returndate)from tb_borrow--(4)查询被借阅过的图书的图书编号;select distinct ISBNfrom tb_borrow--(5)查询图书编号为“”的书名和作者;select Title,Authorfrom tb_bookwhere ISBN='10006'--(6)查询库存数在到本之间的图书的图书编号和书名;SELECT ISBN,Titlefrom tb_bookwhere Inventorynumber between 5 and 10--(7)查询计算机系或电子系姓的读者信息;select*from tb_readerwhere pastern in('计算机系','电子系')--(8)查询书名包括“英语”的图书信息;select*from tb_bookwhere Title='英语'--(9)统计男读者、女读者的人数;select Sex,COUNT(*)from tb_readergroup by Sex--(10)统计各类图书的编号、平均定价以及库存总数;select Typenumber,AVG(BookPrice)as平均定价,SUM(Inventorynumber)as库存总数from tb_bookgroup by Typenumber--(11)统计每本书籍借阅的人数,要求输出图书编号和所借人数,查询结果按人数降序排列;select ISBN,COUNT(*)from tb_borrowgroup by ISBNorder by COUNT(*)desc--(12)查询有库存的各类别图书的类别编号、类别名称和借阅数量;select tb_book.Typenumber,Categoryname,COUNT(*)from tb_book,tb_booktype,tb_borrowwhere tb_book.Typenumber=tb_booktype.Typenumber and tb_book.ISBN=tb_borrow.ISBNgroup by tb_book.Typenumber,tb_booktype.Categoryname--(13)查询借阅了“大学英语”一书的读者,输出读者、性别、系部;select Name,Sex,Pasternfrom tb_readerwhere ReaderID in(select ReaderIDfrom tb_borrowwhere ISBN in(select ISBN from tb_book where Title='大学英语'))--(14)查询每个读者的读者编号、、所借图书编号及所借阅日期;select tb_reader.ReaderID,Name,Borrowingdatefrom tb_reader left outer join tb_borrow on tb_reader.ReaderID=tb_borrow.ReaderID--(15)查询现有图书中价格最高的图书,输出书名、作者、定价;select Title,Author,BookPricefrom tb_bookwhere BookPrice=(select MAX(BookPrice)from tb_book)--(16)查询借阅了“大学英语”但没有借阅“C++程序设计”的读者,输出读者、性别、系部select Name,Sex,Pasternfrom tb_reader where Name in(select Namefrom tb_borrow where ISBN in(select ISBN from tb_book where Title='大学英语'))and Name not in(select Name from tb_borrow where ISBN in(select ISBN from tb_book where Title='C++程序设计'))--(17)统计借阅了本以上图书的读者信息;select*from tb_readerwhere ReaderID in(select ReaderID from tb_borrow group by ReaderID having COUNT(*)>2)--(18)查询计算机系中比其他系所有读者借书数量都多的读者的信息;select*from tb_reader tbr1where Pastern='计算机系'and ReaderID in(select tb_reader.ReaderID from tb_reader,tb_borrowwhere tb_reader.ReaderID=tb_borrow.ReaderID and tb_reader.ReaderID=tbr1.ReaderIDgroup by tb_reader.ReaderIDhaving count(ISBN)>any(select count(ISBN)from tb_reader,tb_borrowwhere tb_reader.ReaderID=tb_borrow.ReaderID and Pastern<>'计算机系'group by tb_reader.ReaderID))--(19)查询借阅了“大学英语”一书或者借阅了“C++程序设计”一书的读者信息;(用集合查询完成)select*from tb_readerwhere ReaderID in(select ReaderID from tb_borrow,tb_book where tb_borrow.ISBN=tb_book.ISBN and Title='大学英语')unionselect*from tb_readerwhere ReaderID in(select ReaderID from tb_borrow,tb_book where tb_borrow.ISBN=tb_book.ISBN and Title='C++程序设计')--20)查询既借阅了“大学英语”一书又借阅了“C++程序设计”一书的读者信息。