第五章 实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5 综合型实验项目T-SQL编程
匹配课程代码及名称:070596,数据库管理系统
适用专业及本项目实验学时:计算机科学与技术(金融信息),6学时
一、实验目的及要求
(1)掌握变量的分类及其使用;
(2)掌握各种运算符的使用;
(3)掌握各种控制语句的使用;
(4)掌握系统函数及其用户自定义函数的使用。
二、实验内容
在已建好的YGGL数据库中,进行变量、运算符、流程控制语句、函数的设计与使用。提交程序源代码(电子版,1周内)和实验报告(纸制、1周内)。
三、实验条件及设备要求
已安装SQL Server 2008数据库管理系统的实验机。
四、实验相关知识点
数据库数据类型、程序设计语言。
五、实验实施步骤
(一)变量的使用
1、对于YGGL中的数据表结构,创建一个名为female的用户变量,并在select 语句中使用该局部变量查找表中所有女员工的编号、姓名。
Declare @female bit
Set @female=0
Select EmployeeID,Name from Employees where Sex=@female
2、定义一个变量,用于获取号码为102201的员工的电话号码。
Declare@PhoneNumber char(12)
set@PhoneNumber=(select PhoneNumber from Employees where
EmployeeID='102201')
select@PhoneNumber
3、定义一个变量,用于描述YGGL数据库的Salary表中000001号员工的实际收入,然后查询该变量。
Declare@RealIncome float
set@RealIncome=(select Income-Outcome from Salary
where EmployeeID='000001')
select@RealIncome
(二)运算符的使用
1、使用算数运算符“-”查询员工的实际收入。
select InCome-OutCome from Salary
2、使用比较运算符“>”查询Emloyees表中工作时间大于5年的员工信息。
select*from Employees where WorkYear>5
(三)流程控制语句
1、判断Employees表中是否存在编号为111006的员工,如果存在,则显示该员工信息;若不存在,则显示“查无此人”。
if EXISTS(select Name FROM Employees where EmployeeID='111006') select*from Employees where EmployeeID='111006'
else
select'查无此人'
2、判断姓名为王林的员工实际收入是否高于3000元,如果是,则显示其收入,否则显示“收入不高于3000”。
if EXISTS(select InCome-OutCome from Salary,Employees
where(InCome-OutCome)>3000
and ='王林'
and Employees.EmployeeID=Salary.EmployeeID)
select InCome-OutCome from Salary,Employees
where((InCome-OutCome)>3000
and ='王林'
and Employees.EmployeeID=Salary.EmployeeID)
else
select'收入不高于'
3、假设变量X的初始值为0,每次加1,直至X变为5。
Declare@X int
set@X=0
while@X<5
Begin
Set@X=@X+1
print'X='+convert(char(1),@X)
end
go
4、使用循环输出一个用“*”组成的三角形。(三角形类型不限)declare@i int
declare@n int
Set@i=1
set@n=20
while@i<@n
Begin
print(Space((@n-@i)/2)+replicate('*',@i))
set@i=@i+2
end
go
5、使用case语句对Employees表按部门进行分类。
go
select EmployeeID,Name,Address,DepartmentID=case DepartmentID when 1 then'财务部'
when 2 then'人力资源部'
when 3 then'经理办公室'
when 4 then'研发部'
when 5 then'市场部'
end
from Employees
(四)自定义函数的使用
1、定义一个函数实现如下功能:对于一个给定的DepartmentID值,查询该值在Departments表中是否存在,若存在则返回0,否则返回-1。
create function check_id(@DepartmentID char(3))
returns Integer AS
begin
declare@num int
if exists(SELECT DepartmentID FROM Departments
WHERE@DepartmentID=DepartmentID)
select@num=0
else
select@num=-1
return@num
end
go
2、写一段T-SQL程序调用上述函数。当用Employees表插入一行记录时,首先调用函数CKECK_ID检索该记录的DpartmentID值在表Departments的DepartmentID字段中是否存在对应值,若存在,则将该记录插入Employees表。
create function check_id(@DepartmentID char(3))
returns Integer AS
begin
declare@num int
if exists(SELECT DepartmentID FROM Departments
WHERE@DepartmentID=DepartmentID)
select@num=0
else