《SQL Server 数据库》Transact-SQL程序设计实验报告
数据库实验报告 Transact-SQL 语言基础

实验结果:
3、编程求50到100之间所有能被3整除的奇数之和
SQL代码:
DECLARE @count INT,@SUM INT
SET @count=51
SET @SUM=0
WHILE @count<=100
BEGIN
if ( @count/2=1 and @count/3=0)
SQL代码:
USE test
GO
SET Nte datetime,@enddate datetime
SET @startdate='1/17/2008 12:12AM'
SET @enddate='11/10/2009 12:00 Am'
SELECT DATEDIFF(year, @startdate,@enddate)
实验评语:
实验成绩
教师签字
SET @SUM=@SUM+@count
SET @count=@count+1
END
PRINT '50到之间所有能被整除的奇数之和'+CAST(@SUM AS NCHAR(4))
实验结果:
实验总结:
通过本节实验对Transact-SQL语言有了更深入的理解,同时掌握其语言也是进一步学习更多的管理技术和数据库应用开发技术的关键。
西北师范大学计算机科学与工程学院学生实验报告
学号
专业
计算机科学与技术
姓名
课程名称
数据库应用与开发
班级
实验名称
Transact-SQL语言基础
课程类型
专业限选课
实验目的:
本章主要介绍Transact-SQL语言中的常量、变量、函数、表达式等语言成分和控制流语句等。掌握Transact-SQL语言是进一步学习更多的管理技术和数据库应用开发技术的关键。
SQL Server数据表的管理(实验报告)

列名
数据类型
允许空
学号
Char(4)
Not null
姓名
Char(8)
性别
Char(2)
出生日期
datatime
家庭住址
Varchar(50)
备注
text
四﹑命令(代码)清单
五﹑运行结果
(12)分别使用SQL Server管理平台和SQL语句delete删除studentdb数据库的grade表中学号为0004的成绩记录。
(13)使用SQL语句update修改studentdb数据库的grade表中学号为0003、课程编号为0005的记录,使其成绩为90。
(14)使用SQL语句alter…add为studentdb数据库的grade表添加一个名为“备注”的数据列,其数据类型为varchar(20)。
东方市中山路25号
null
0006
郭文斌
男
1980-6-4
长岛市解放路25号
null
0007
肖海燕
女
1980-3-15
南山市红旗路15号
null
0008
张明华
女
1980-4-18
滨江市解放路35号
null
图1-5student_info的数据
课程编号
课程名称
学分
0001
大学计算机基础
2
0002
C语言程序设计
70
0002
0005
89
0003
0001
83
sqlserver实验报告

实验报告:SQL Server一、实验目的本次实验旨在熟悉并掌握SQL Server数据库管理系统,了解其功能特点、操作方法和应用场景。
通过实验,我们希望深入理解数据库的基本概念,掌握SQL Server的基本操作,为后续的数据库学习和应用打下坚实的基础。
二、实验内容1. 了解SQL Server版本和功能特点通过阅读教材、查阅资料,我们了解了SQL Server的不同版本及其功能特点。
目前,SQL Server最新版本是SQL Server 2008,它只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。
2. 安装SQL Server在实验过程中,我们按照教材的指导,成功安装了SQL Server 2008。
安装过程中,我们注意了安装选项的选择,确保安装了必要的组件和工具。
3. 创建和管理数据库在SQL Server中,我们通过对象资源管理器创建了名为“testdb”的数据库。
在创建过程中,我们设置了数据库的名称、文件路径、文件大小等参数。
同时,我们还学习了如何修改数据库的属性,如修改数据库的名称、删除数据库等。
4. 创建和管理表在“testdb”数据库中,我们创建了名为“employees”的表,用于存储员工信息。
在创建表的过程中,我们定义了表的列名、数据类型、约束等属性。
同时,我们还学习了如何修改表的属性,如添加列、删除列等。
5. 查询数据通过查询语句,我们从“employees”表中检索了所有员工的信息。
在查询过程中,我们使用了SELECT语句,并通过WHERE子句对结果进行了筛选。
同时,我们还学习了如何使用聚合函数对数据进行统计和分析。
6. 插入、更新和删除数据在“employees”表中,我们插入了新的员工信息,更新了现有员工的信息,并删除了离职的员工信息。
在插入、更新和删除数据的过程中,我们使用了INSERT、UPDATE和DELETE语句。
同时,我们还学习了如何使用事务来确保数据的完整性和一致性。
SQL SERVER数据库系统设计与实现实验报告

SQL SERVER数据库系统设计与实现实验报告编制教师傅荣会(适用于计算机科学学院各专业)计算机科学学院实验一:数据库的定义、建立和维护指导教师:实验日期:年月日实验地点:成绩:实验目的:了解SQL Server数据库的逻辑结构和物理结构;了解表的结构特点;了解SQL Server的基本数据类型;了解空值概念;学会在“对象资源管理器”中创建数据库和表;学会使用T-SQL语句创建数据库和表。
实验内容及基本要求:l、创建一个新的数据库。
创建用于企业管理的员工管理数据库,数据库名为YGGL。
数据库YGGL的逻辑文件初始大小为10MB,最大大小50MB,数据库自动增长,增长方式是按5%比例增长。
日志文件初始大小为2MB,最大可增长为5MB(默认为不限制),按1MB增长(默认是按5%比例增长)。
数据库的逻辑文件名和物理文件名均采用缺省值。
事务日志的逻辑文件名和物理文件名也均采用缺省值。
要求分别使用“对象资源管理器”和T-SQL命令完成数据库的创建工作。
2、在创建好的数据库YGGL中创建数据表。
考虑到数据库YGGL要求包含员工的信息、部门信息以及员工的薪水信息,所以数据库YGGL 应包含下列3个表:Employees(员工信息)表、Departments(部门信息)表、Salary(员工薪水情况)表。
各表的结构分别为表T2.1、T2.2和表T2.3所示。
表T2.1 Employees表结构表T2.2 Departments表结构表T2.3 Salary表结构要求分别使用“对象资源管理器”和T-SQL语句完成数据表的创建工作。
基本要求:1.写出实验步骤2.写出实验中遇到的问题及解决的方法实验总结:实验评价(教师):实验二:数据查询指导教师:实验日期:年月日实验地点:成绩:实验目的:掌握SELECT语句的基本语法;掌握子查询的表示;掌握连接查询的表示;掌握SELECT语句的GROUP BY子句的作用和使用方法;掌握SELECT语句的ORDER BY子句的作用和使用方法;实验内容及基本要求:在企业管理器中向数据库YGGL表加入数据在企业管理器中向表Employees中加入如表1所示的记录。
Transact-SQL 语言实验报告

精通C#与.NET4.0数据库开发实验报告实验题目:Transact-SQL 语言专业计算机科学与技术学生姓名班级学号教师指导单位日期教师评语教师签名:年月日成绩评定备注一、实验目的1. 了解什么是T-SQL以及如何创建Visual Studio 2010数据库项目。
2. 学会通过T-SQL管理数据库。
3. 掌握T-SQL的高级特性。
4. 熟悉SQL Server的存储过程。
二、实验环境Microsoft SQL Server 2008 Microsoft Visual Studio 2010三、实验内容例10-1图10-1用CREAT DATABASE创建数据库USE[master]goCREATE DATABASE UserLog2;图10-2 用CREATE TABLE创建数据表USE[UserLog2]GOCREATE TABLE[dbo].[Users]([LoginID][nvarchar](25)COLLATE Chinese_PRC_CI_AS NOT NULL, [Password][nvarchar](25)COLLATE Chinese_PRC_CI_AS NOT NULL, [Name][nvarchar](50)COLLATE Chinese_PRC_CI_AS NULL,[Age][int]NOT NULL,[XingBie][nvarchar](2)COLLATE Chinese_PRC_CI_AS NULL,[Mobile][nvarchar](20)COLLATE Chinese_PRC_CI_AS NULL,[Email][nvarchar](100)COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT[PK_Users]PRIMARY KEY CLUSTERED([LoginID]ASC)WITH (IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]图10-3 用ALTER TABLE创建数据库关系USE UserLog2GOCREATE TABLE[dbo].[Logs]([ID][int]NOT NULL,[UserID][nvarchar](25)COLLATE Chinese_PRC_CI_AS NOT NULL,[LogContent][nvarchar](1024)COLLATE Chinese_PRC_CI_AS NOT NULL, [LogTime][datetime]NOT NULL,CONSTRAINT[PK_Logs]PRIMARY KEY CLUSTERED([ID]ASC)WITH (IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]GO图10-4 用ALTER TABLE创建数据库关系USE[UserLog2]GOALTER TABLE[dbo].[Logs]WITH CHECK ADD CONSTRAINT[FK_Logs_Users] FOREIGN KEY([UserID])REFERENCES[dbo].[Users]([LoginID])例10-4图10-5 用INSERT插入数据库记录USE UserLog2GOINSERT INTO UsersVALUES('User1','Password1','李四', 20,'男','131********','lisi@')GO图10-6 用INSERT插入数据库记录USE UserLog2GOINSERT INTO[Users]([Name],[LoginID],[Password],[Age],[Email], [XingBie],[Mobile])VALUES('王五','User2','Password2', 30,'wangwu@','男','136********')GO图10-7 用INSERT插入数据库记录INSERT INTO[Users]([LoginID],[Password],[Age]) VALUES('User3','Password3', 21)INSERT INTO[Users]([LoginID],[Password],[Age]) VALUES('User4','Password3', 22)INSERT INTO[Users]([LoginID],[Password],[Age]) VALUES('User5','Password3', 23)INSERT INTO[Users]([LoginID],[Password],[Age]) VALUES('User6','Password3', 24)GO例10-5图10-8 用UPDATE更新数据库记录USE UserLog2GOUPDATE UsersSET Users.Age=Users.Age+1GO图10-9 用UPDATE更新数据库记录例10-6图10-10 用DELETE删除数据库记录图10-11 用DELETE删除数据库记录USE UserLog2GODELETE TOP(1)FROM UsersWHERE Users.Age> 20;GODELETE TOP(10)PERCENTFROM UsersWHERE Users.Age> 20;GODELETEFROM UsersWHERE Users.Age> 20;GO例10-7图10-12 用SELECT查询单表的记录USE UserLog2GOSELECT Users.*FROM UsersGOSELECT LoginID,Password AS密码FROM UsersGO图10-13 用SELECT查询单表的记录USE UserLog2GOSELECT Users.LoginID,,Logs.LogTime,Logs.LogContent FROM Users,LogsGO例10-8图10-14 用WHERE查询指定条件的记录USE UserLog2GOSELECT Users.LoginID,,Logs.LogTime,Logs.LogContent FROM Users,LogsWHERE Users.LoginID=erIDGO例10-9图10-15 使用T-SQL表达式DECLARE@userid varchar(10);SET@userid='User1%';SELECT Users.LoginID,,Users.Age FROM UsersWHERE Users.LoginID LIKE@useridGO例10-10图10-16 使用T-SQL结构语句DECLARE@tableid int;SET@tableid= 1IF@tableid= 1BEGINSELECT Users.LoginID,,Users.Age FROM UsersENDELSEBEGINSELECT Logs.*FROM LogsEND例10-11图10-17 使用T-SQL聚合函数SELECT COUNT(*)FROM LogsGOSELECT COUNT(ALL Users.LoginID)FROM UsersGOSELECT COUNT(DISTINCT erID)FROM LogsGO例10-11图10-18 使用T-SQL数学计算函数DECLARE@num floatSET@num=-1.4444;PRINT'Result 1....'SELECT ABS(@num),CEILING(@num),FLOOR(@num),SIGN(@num);SET@num= 2.0;PRINT'Result 2....'SELECT SQRT(@num),SQUARE(@num),POWER(@num,3),LOG(@num),LOG10(@num); 例10-12图10-19 使用T-SQL时间日期函数DECLARE@curDate datetime;SET@curDate=GETDATE();SELECT@curDate,YEAR(@curDate),MONTH(@curDate),DAY(@curDate); SELECT DATENAME(hour,@curDate),DATENAME(minute,@curDate),DATENAME(second,@curDate);例10-13图10-20 使用T-SQL字符串函数DECLARE@str varchar(25);SET@str='This is a test string';SELECT UPPER(@str)AS UpperCase,LEFT(@str, 4)AS FirstWord,LEN(@str) AS Length;SELECT ASCII(@str)AS AsciiCode,LEFT(@str, 1)AS Charactor; SELECT REPLACE(@str,'This','That');例10-14图10-21 安装和执行T-SQL存储过程IF EXISTS(SELECT*FROM sysobjects WHERE type='P'AND name= 'UpdateUserAge')BEGINDROP Procedure UpdateUserAgeENDGOCREATE PROCEDURE UpdateUserAgeASBEGINSELECT Users.LoginID,Users.AgeFROM Users;UPDATE UsersSET Users.Age=Users.Age+1WHERE Users.Age>25;SELECT Users.LoginID,Users.AgeFROM Users;ENDGO例10-15图10-22 编写带参数的T-SQL存储IF EXISTS(SELECT*FROM sysobjects WHERE type='P'AND name= 'FindMaxMinAge')BEGINDROP Procedure FindMaxMinAgeENDGOCREATE Procedure FindMaxMinAge@rtType int,@maxAge int OUTPUT,@minAge int OUTPUTASBEGINSET@maxAge=(SELECT MAX(Users.Age)FROM Users);SET@minAge=(SELECT MIN(Users.Age)FROM Users);IF@rtType= 1RETURN@maxAge;ELSERETURN@minAge;ENDGO图10-23 编写带参数的T-SQL存储四、实验总结通过此次实验,让我更加熟悉了SQL Server 2008以及认识了T-SQL命令。
SQL数据库实验报告实验二

SQL数据库实验报告实验二第一篇:SQL数据库实验报告实验二实验2SQL Server数据库的管理1.实验目的(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。
(2)掌握使用SQL Server管理平台对数据库进行管理的方法。
(3)掌握使用Transact-SQL语句对数据库进行管理的方法。
2.实验内容及步骤(1)在SQL Server管理平台中创建数据库。
① 运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。
② 右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。
在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。
(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。
(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。
指定“最大文件大小”为5MB。
修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb数据库。
然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
(5)在查询设计器中使用Transact-SQL语句ALTER DATABASE 修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。
(6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。
(7)使用SQL Server管理平台将studb数据库的名称更改为student_db。
(8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。
实验六 SQL SERVER数据库安全管理实验报告【模板范本】

实验五数据库安全管理一、实验目的(1)通过实验掌握用户的创建和授权方法,(2)了解microsoft sql sever2000数据库备份的基本策略和方法,(3)掌握使用企业管理器和transact—sql命令进行数据库备份和恢复的方法二、实验原理(1)microsoft sql sever2000的多安全等级的数据库,借故欧清晰,是以“账号”为核心的一系列授权管理。
(2)一般的数据库管理系统将用户分为几类:系统管理员,数据库管理员,数据库对象用户,数据库访问用户;(3)microsoft sql sever2000常用的备份设备主要包括磁盘和磁带,两者的使用方式基本一样(4)microsoft sql sever2000提供了多种备份策略,常用的主要有三种:安全备份数据库,增量备份数据库,备份事务日志。
三、实验要求实验设备:装有SQL Sever 2000的一台联网计算机。
实验用时:2学时四、实验内容及步骤1.检查实验条件:2。
按方案操作并记录实验数据(1)在企业管理器中找到“安全性”--“登陆”,并单击右键,,选择“新建登陆”,如图1所示。
图1(2)选择“新建登陆”菜单项,输入登陆用户名“myuser”,登陆口令为空,并选择sql server身份验证,选择数据库为“教学管理”,如图2所示。
图2(3)打开“数据库访问”选项卡,设置“myuser”账号可以访问的数据库为“教学管理”,数据库角色为“public",如图3所示。
图3(4)展开“教学管理”数据库树形结构,在用户选项上单击右键,选择新建数据库用户,如图4所示。
图4(5)在“新建数据库用户”页面,输入刚创建的登陆账号“myuser”,如图5所示。
图5(6)在“学生档案表”上单击右键,然后选择“所有任务”—〉“管理权限”,如图6所示。
图6(7)为myuser用户选择“select"权限,如图7所示。
图7(8)运行查询分析器,并以“myuser”用户名登录服务器,如图8所示。
sql server数据库课程设计报告书 (3)

第1单元数据库和表的创建一、实训目的1、了解数据库的逻辑结构、物理结构及其特点2、学会利用企业管理器对数据库进行操作3、学会利用Transact-SQL语句对数据库进行操作二、实训任务1、建立数据库,删除该数据库2、建立新数据库3、更改数据库属性4、设计表结构5、建立表,删除表6、更改表7、向表中插入数据,删除表中的数据,更改表中的数据三、实训要求1、数据库、表的创建、更改和删除要求用SQL命令和企业管理器两种方式完成2、要求数据库中至少包含两个文件组,主文件组中至少包含两个数据文件,明确规定数据库存放的物理路径,文件大小,增长方式等属性。
3、建立四张以上的用户表,字段类型要求合理、合法,为空性要求要合理。
4、每张表给出至少三十条以上记录作为后续实训数据,实验数据要求合理5、表结构要用表格的形式给出,并添加到实训内容中6、将涉及到的SQL命令拷贝到“实训内容及步骤”中7、将实训过程、结果通过截屏的方式添加到“实训内容及步骤”中,并用适当的文字进行说明四、实训内容及步骤一 1.界面方式创建数据库pxscj:2.SQL命令创建数据库pxscj:具体的T-SQL命令:create database pxscjon(name='pxscj_data',filename='c:\Program Files\Microsoft SQL Server\pxscj.mdf',size=3MB,filegrowth=1MB)log on(name='pxscj_log',filename='c:\Program Files\Microsoft SQL Server\pxscj.ldf',size=1MB,filegrowth=10%)GO3.删除数据库:drop database pxscj1GO4.在数据库pxscj中增加一个名为FGroup的文件组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北华航天工业学院《数据库系统管理》
实验报告
报告题目:Transact-SQL程序设计作者所在系部:计算机科学与工程系
作者所在专业:网络工程
作者学号:
作者姓名:
指导教师姓名:
完成时间:2011年9月26日
北华航天工业学院教务处制
Transact-SQL程序设计
一、实验目的
1、掌握Transact-SQL语言中注释、局部变量的用法;
2、掌握Transact-SQL语言中常用运算符的用法;
3、掌握Transact-SQL语言中常用函数的用法;
4、掌握Transact-SQL语言中流程控制语句的用法。
二、实验内容
(一)附加上次实验所创建的数据库“tb_Library”,并回顾该数据库的数据表信息。
(二)练习Transact-SQL语言中两种注释的用法。
(三)使用系统函数查看SQL Server当前安装的日期、版本和处理器类型,将结果记录在实验报告中。
(四)按要求在数据库“db_Library”上,完成以下功能。
1、编制一个函数fc_avgp,根据输入的图书类别名称,返回该类别图书的平均价格,并输入实参调用该函数。
2、编制一个函数fc_count,返回本月借书的人数,并输入实参调用该函数。
3、定义两个变量分别存放价格上限和下限,根据给定的两个变量的值,返回在该价格范围内的所有图书的信息。
4、定义变量“@tsmc”,将某图书的名称赋值给该变量,查询出该图书的借阅情况。
如果没有读者借阅,则显示“该图书无人借阅”,否则,显示所借读者的编号、姓名。
5、调整图书的库存量,如果原库存量不超过5本,则各增加50%的库存量,并采用向上取整;如果超过5本但不超过10本,则各增加30%的库存量,采用向上取整;如果超过10本但不超过20本,则各增加20%的库存量,并采用向下取整;如果超过20本,则增加10%的库存量,并采用向下取整。
6、判定是否有图书过期未还,如果有,则将所有图书的归还日期增加1个月,直到所有图书的归还日期都大于当前日期或者有图书的归还日期超过了2011年12月31日时停止,然后等待3秒后,显示出所有图书信息。
三、实验步骤
(三)、使用系统函数查看SQL Server当前安装的日期、版本和处理器类型。
使用命令及结果如下。
select @@VERSION as 系统信息
系统信息
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Express Edition with Advanced Services (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
1、编制一个函数fc_avgp,根据输入的图书类别名称,返回该类别图书的平均价格,并输入 参数调用该函数。
函数fc_avgp 如下: use db_Library go
create function fc_avgp (@booktype as char(30)) returns money as begin
declare @avgprice money select @avgprice=avg(定价)
from tb_booktype,tb_book
where tb_booktype.类别编号=tb_book.类别编号 and 类别名称=@booktype return @avgprice
end
声明变量并调用函数fc_avgp declare @pingjun money declare @srcs char(6) set @srcs='数学'
set @pingjun=dbo.fc_avgp(@srcs)
print '名称为'+@srcs+'的图书的平均价格为'+cast(@pingjun as char(10))
函数fc_avgp 调用结果如图3-1所示。
图3-1函数fc_avgp 的调用结果
2、编制一个函数fc_count,返回本月借书的人数,并输入实参调用该函数。
函数fc_count 如下: create function fc_count (@date datetime) returns int as begin
declare @rs int
select @rs=count(distinct 读者编号)
from tb_borrow
where month(借阅日期)=month(@date) and year(借阅日期)=year(@date) return @rs end
函数fc_count 调用如下:
declare @date datetime set @date='2011-05-01'
select distinct month(@date) as 当前月份,借书人数=dbo.fc_count(@date) from tb_borrow
函数调用结果如图3-2所示。
图3-2函数fc_count 的调用结果
3、定义两个变量分别存放价格上限和下限,根据给定的两个变量的值,返回在该价格范围内的所有图书的信息。
declare @maxprice money,@minprice money
select @maxprice=50,@minprice=25
select * from tb_book
where 定价>@minprice and 定价<@maxprice
执行结果如如3-3所示。
图3-3 查找价格在指定范围的图书信息
4、定义变量“@tsmc”,将某图书的名称赋值给该变量,查询出该图书的借阅情况。
如果没有读者借阅,则显示“该图书无人借阅”,否则,显示所借读者的编号、姓名。
declare @tsmc char(30)
set @tsmc='大学英语'
if exists(select * from tb_borrow,tb_book
where tb_borrow.图书编号=tb_book.图书编号and 书名=@tsmc)
begin
select tb_reader.读者编号,姓名
from tb_borrow,tb_reader,tb_book
where tb_borrow.读者编号=tb_reader.读者编号
and tb_borrow.图书编号=tb_book.图书编号and 书名=@tsmc
end
else print '该图书无人借阅'
执行结果如图3-4所示。
图3-4 查找指定书名的图书借阅情况
5、调整图书的库存量,如果原库存量不超过5本,则各增加50%的库存量,并采用向上取整;如果超过5本但不超过10本,则各增加30%的库存量,采用向上取整;如果超过10本但不超过20本,则各增加20%的库存量,并采用向下取整;如果超过20本,则增加10%的库存量,并采用向下取整。
update tb_book
set 库存数=
case
when 库存数<=5 then ceiling(库存数*1.5)
when (库存数>5 and 库存数<=10) then ceiling(库存数*1.3)
when (库存数>10 and 库存数<=20) then floor(库存数*1.2)
else floor (库存数*1.1)
end
6、判定是否有图书过期未还,如果有,则将所有图书的归还日期增加1个月,直到所有图书的归还日期都大于当前日期或者有图书的归还日期超过了2011年12月31日时停止,然后等待3秒后,显示出所有图书信息。
while exists
(select * from tb_borrow where 归还日期<getdate())
begin
update tb_borrow set 归还日期=dateadd(month,1,归还日期)
if exists(select * from tb_borrow where year(归还日期)>2011)
break
if exists (select * from tb_borrow where 归还日期<getdate())
continue
else break
end
waitfor delay '00:00:03'
select * from tb_book
执行结果如图3-5所示。
图3-5 修改图书归还日期
四、实验总结
通过上机实验掌握了Transact-SQL语言中注释和局部变量的用法,对常用运算符的用法有了更深入的了解,能够编写简单的函数,对常用函数如类型转换cast(),日期操作函数getdate()及相关的year()、month(),向上向下取整ceiling()、flood()等有了较强的认识。
实验中认识到了虽然题目不难,但是对于基础的查询select和判断if exists()等基础功能的实现要很熟练。
另外对于使用while、continue、break进行流程控制不熟练。
尤其对于continue和break 的区别还需要进一步加强认识。