数据库实训sqlserver

这篇具有很好参考价值的文章主要介绍了数据库实训sqlserver。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数据库设计题

1、以“library”为名称创建一个数据库。该数据库中包含一个主数据文件tsdata.mdf,存放路径为“d:\data\”;一个事务日志文件tslog.ldf,存放路径为“d:\data\”。其他设置自定。数据库实训sqlserver

 2、在上题创建好的数据库中,按如下要求创建三张表。

表1 书籍表:用来存储书籍的基本信息

字段名称

数据类型

长度

是否为空

说明

序号

int

非空

初始值和增量均为1

图书编号

char

10

非空

主键

书名

varchar

50

非空

作者

varchar

20

非空

价格

Money

出版社

varchar

50

非空

出版日期

smalldatetime

库存量

int

非空

>=0

数据库实训sqlserver

 

表2读者表:用来存储读者的基本信息

字段名称

数据类型

长度

是否为空

约束

借书证号

char

10

非空

主键

姓名

varchar

20

非空

性别

char

2

非空

默认值为“男”

单位

 varchar

50

联系电话

char

11

数据库实训sqlserver

表3 借阅表:存储读者借阅的信息

字段名称

数据类型

长度

是否为空

约束

图书编号

char

10

非空

外键,参照书籍表

借书证号

char

10

非空

外键,参照读者表

借书日期

smalldatetime

非空

还书日期

smalldatetime

归还否

char

2

非空

数据库实训sqlserver

3、在“library”数据库中插入以下记录。

(1)在书籍表中插入以下数据:

图书编号

书名

作者

价格

出版社

出版日期

库存量

J1

计算机基础

刘大石

29

机械工业出版社

2014/2/1

5

J2

数据库应用教程

李刚

32

电子工业出版社

2014/9/1

8

(2)在读者表中插入以下数据:

借书证号

姓名

性别

单位

联系电话

10001

柯思扬

信息系

13837482123

10002

孙一明

管理系

13978621278

(3)在借阅表中插入以下数据:

图书编号

借书证号

借书日期

还书日期

归还否

J1

10001

2015/6/3

2015/12/3

J2

10001

2015/6/3

2015/12/3

数据库实训sqlserver

 

数据库实训sqlserver

 

数据库实训sqlserver

 4、为读者表创建一个“姓名”列的非聚集索引文件。

数据库实训sqlserver

 5、创建“读者借阅信息”视图,包括借书证号、姓名、书名、还书日期等信息。

数据库实训sqlserver

 

二、查询设计题(每小题5分,共25分)

1、在library数据库中查询“孙一明”的相关信息。

请粘贴T-SQL查询语句:

select * from 读者表 where 姓名='孙一明';

2、查询信息系或电子系的读者信息。

请粘贴T-SQL查询语句:

select * from 读者表 where 单位='信息系' or 单位='电子系';

3、查找书名以“计算机”打头的所有图书和作者。

请粘贴T-SQL查询语句:

select * from 书籍表 where 书名 like '计算机%';

4、查找姓名为“柯思扬”借阅书本的书名。  

请粘贴T-SQL查询语句:

select 书名 from 书籍表 where 图书编号 in

(select 图书编号 from 借阅表 where 借书证号 =

(select 借书证号 from 读者表 where 姓名='柯思扬'))

5、查询借书证号为“10001”所借书本的本数,显示借书证号和借书本数,并按借书证号升序排序。(4分)

请粘贴T-SQL查询语句:

select  b.借书证号,COUNT(*) 借书本数 from 借阅表 b,书籍表 a

where a.图书编号=b.图书编号 and b.借书证号='10001' group by b.借书证号 order by b.借书证号;

三、填空题(每空2分,共10分)

1、读者还书存储过程:ReturnBook的创建,若读者没有借阅此书,则显示‘对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!’信息。

use Library

go

create  procedure ___ReturnBook___

@no char(10),@bid char(10)

as

if not exists(___select * from 借阅表where 借书证号=@no and 图书编号=@bid______________________________________________________)

begin

       print'对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!'

end

 

2、在借阅表中创建一个触发器:tri_Book,若要借的书已无库存,则无法进行借书操作,即无法在‘借阅表’中插入记录。

create ____trigger_____ tri_Book ________

on _____借阅表_______

for  insert

as

declare @btotal varchar(10),@bborrowed varchar(10)

select  @bborrowed=图书编号  from inserted

select @btotal=库存量 from 书籍表 where 图书编号=@bborrowed

if(___@btotao=0___________)

begin

rollback transaction

print '借阅失败!'

print'对不起,此书已经没有库存,无法进行本次借书操作!'

end

go

四、程序题(共15分)

1、读者还书存储过程:ReturnBook_1的创建,1.成功还书时将归还否字段的‘否’改成‘是’,还书日期为当前时间,3.显示“成功地向图书馆归还!”。

create procedure ReturnBook_1

@no varchar(10),@bid varchar(30)

as

if exists(select *  from 借阅表 where 借书证号=@no and 图书编号=@bid and 归还否='')

begin

update 借阅表 set 归还否='',借书日期=GETDATE()

where 借书证号=@no and 图书编号=@bid

select '成功地向图书馆归还!'

end

go

2、用借书证号和图书编号为“10001”和“j1” 来验证存储过程。  

exec ReturnBook_1 '10001','J1'

select * from 借阅表;

-- 5、查询借书证号为“10001”所借书本的本数,
-- 显示借书证号和借书本数,并按借书证号升序排序。

select  b.借书证号,COUNT(*) 借书本数 from 借阅表 b,书籍表 a
where a.图书编号=b.图书编号 and b.借书证号='10001' group by b.借书证号 order by b.借书证号;

select * from 书籍表
select * from 读者表
select * from 借阅表


-- 1、读者还书存储过程:ReturnBook_1的创建,1.成功还书时将归还否字段的‘否’改成‘是’,还书日期为当前时间,3.显示“成功地向图书馆归还!”。
create procedure xxx
@no varchar(10),@bid varchar(30)
as
if exists(select * from 借阅表 where 借书证号=@no and 图书编号=@bid and 归还否='否')
begin
update 借阅表 set 归还否='是',还书日期=GETDATE()
select '成功地向图书馆还书!'
end
go

-- 读者还书
exec xxx '10001','J2'
select* from 借阅表

-- 1、读者借书触发器
create trigger borrowbok2
on 借阅表
for insert
as
declare @total varchar(10),@borrow varchar(10)
select @borrow=图书编号 from 借阅表
select @total=库存量 from 书籍表 where 图书编号=@borrow
if(@total>0)
begin
update 书籍表 set 库存量=库存量-1
print'借书成功'
end
go


insert into 借阅表(图书编号,借书证号,借书日期,还书日期,归还否)
values('J1',10002,2022-12-12,2022-12-13,'否')

select* from 书籍表
select * from 借阅表
-- 在借阅表中创建一个触发器:tri_Book,若要借的书已无库存,则无法进行借书操作,即无法在‘借阅表’中插入记录
create trigger tri_Book
on 借阅表
for  insert 
as
declare @btotal varchar(10),@bborrowed varchar(10)
select  @bborrowed=图书编号  from 借阅表
select @btotal=库存量 from 书籍表 where 图书编号=@bborrowed
if(@btotal=0)
begin
rollback transaction
print '借阅失败!'
print'对不起,此书已经没有库存,无法进行本次借书操作!'
end
go

insert into 借阅表(图书编号,借书证号,借书日期,还书日期,归还否)
values('J3',10001,2022-12-12,2022-12-13,'否')


use Library
go
create  procedure ReturnBook
@no char(10),@bid char(10)
as
if not exists(select * from 借阅表 where 借书证号=@no and 图书编号=@bid)
begin
    print'对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!'
end

exec ReturnBook '10002','J1'
select* from 借阅表

create procedure ReturnBook_11
@no char(10),@bid char(10)
as
if not exists(select * from 借阅表 where @no=借书证号 and @bid=图书编号)
begin
    print'你没有借到这本书,无法归还'
end

exec ReturnBook_11 '10001','J3'
select * from 借阅表
文章来源地址https://www.toymoban.com/news/detail-487649.html

到了这里,关于数据库实训sqlserver的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • asp.net教务管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计

    一、源码特点         asp.net 教务管理信息系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 asp.net教务管理系统 应用技术:asp.net c#+sqlserver 开发工具:vs2010  +sqlserver 二、

    2024年02月08日
    浏览(58)
  • 【SQLServer】sqlserver数据库导入oracle

    将sqlserver数据库导入到oracle 实用工具: SQL Server Management Studio 15.0.18424.0 SQL Server 管理对象 (SMO) 16.100.47021.0+7eef34a564af48c5b0cf0d617a65fd77f06c3eb1 Microsoft Analysis Services 客户端工具 15.0.19750.0 Microsoft 数据访问组件 (MDAC) 10.0.19041.2486 Microsoft MSXML 3.0 4.0 6.0 Microsoft .NET Framework 4.0.30319.42000 操

    2024年02月09日
    浏览(58)
  • 数据库原理 头歌实训 数据库常用对象

    任务描述 本关任务:创建计算机系的学生信息的视图 student_cs。 相关知识 行列子集视图是指视图的结果集来源于基本表,没有经过二次计算。 #####创建视图 CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTIO

    2024年02月04日
    浏览(50)
  • sqlserver数据库错误码

    错误 严重性 是否记录事件 说明 -2 超时时间已到。 超时时间在操作完成或服务器没有响应之前已过。 (Microsoft SQL Server,错误: -2)。 -1 在建立与服务器的连接时出错。 连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接,这可能会导致此失败。 (提供程序:

    2024年02月05日
    浏览(123)
  • SQLServer 数据库之锁

    SQL Server 数据库支持多个用户同时访问数据库,但当用户同时访问数据库时,就会造成 并发问题 ,锁的机制能很好地解决这个问题,保证数据的完整性和一致性; SQL Server 自带锁机制,若是简单的数据库访问机制,完全能满足用户的需求;但对于数据完全与数据完整性有特殊

    2024年02月13日
    浏览(52)
  • SqlServer 快速数据库脚本迁移

    做工业的,经常遇到内网的项目,就是数据往本地的数据库传。由于这个问题所以我们需要新建一个数据库。最合适的就是数据库脚本迁移。 高级 操作完成 生成模板数据库 生成表结构 生成表数据(因为有些配置数据是写在数据库里面的) 导出模板数据库脚本 生成的脚本语

    2024年02月12日
    浏览(45)
  • SQLServer数据库备份与还原

            Microsoft SQL Server Management Studio,顾名思义,是微软 SQL Server的管理工具,说白了,就是微软官方管理自家数据库的软件。可以对数据库和表操作,本章我们用到它强悍的备份和还原功能。       (1)  选中需要备份的数据库,右键选择备份   (2)添加目标 (3)此

    2024年02月13日
    浏览(47)
  • Python连接SQLserver数据库

    前进四的状态出发! 学习Python 连接 数据库 解决问题: 1:如何连接数据库 2:如何进行简单查询 3:如何将查询中的中文乱码给修复 4:如何进行插入,更新,删除 主要在pymssql.connect 中添加charset = ‘cp936’ 原因:因为字符串字段类型为:varchar,造成读取数据乱码。 方法一的缺点: 如果

    2024年02月02日
    浏览(50)
  • 如何远程连接SQLServer数据库

    1.打开  选中如下的连接方式  连接成功后就会出出现 2.连接成功后:右键设置属性 安全性设置:如下图所示 设置连接属性:     设置完成之后点击完成!!! 3.打开  启动sqlServer服务,必须启动!!  按照如下进行启动,右键即可启动!  设置本机的ip地址,ipconfig查看本

    2024年02月09日
    浏览(48)
  • Kettle连接SQLSERVER数据库

    下载驱动程序 微软官网下载 Microsoft SQL Server JDBC 驱动程序:https://www.microsoft.com/zh-cn/download/details.aspx?displaylang=enid=11774e6b34bbe-475b-1abd-2c51-b5034bcdd6d2=truea03ffa40-ca8b-4f73-0358-c191d75a7468=true44F86079-8679-400C-BFF2-9CA5F2BCBDFC=1 双击下载的软件进行解压,找到jre8文件夹底下的sqljdbc42.jar文件,

    2024年02月11日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包