Get格雅SQL实验五TSQL编程Word下载.docx
《Get格雅SQL实验五TSQL编程Word下载.docx》由会员分享,可在线阅读,更多相关《Get格雅SQL实验五TSQL编程Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
信计12-2
任课教师:
侯睿
二〇一五年四月
一、实验目的
〔1〕进一步稳固第2章~第4章所学内容;
〔2〕掌握用户自定义类型的使用;
〔3〕掌握变量的分类及其使用;
〔4〕掌握各种运算符的使用;
〔5〕掌握各种控制语句的使用;
〔6〕掌握系统函数及用户自定义函数的使用。
二、实验内容
1.自定义数据类型的使用。
〔1〕对于实验2给出的数据库表结构,再自定义一数据类型ID_type,用于描述员工编号。
〔2〕在YGGL数据库中创立Employees3表,表结构与Employees类似,只是EmployeeID列使用的数据类型为用户自定义类型ID_type。
2.变量的使用。
〔1〕对于实验2给出的数据库表结构,创立一个名为female的用户变量,并在SELECT语句中使用该局部变量查找表中所有女员工的编号、姓名。
3.运算符的使用。
〔1〕使用算数运算符“-〞查询员工的实际收入。
〔2〕使用比拟运算符“>
〞查询Employees表中工作时间大于5年的员工信息。
4.流程控制语句。
〔1〕判断Employees表中是否存在编号为11006的员工,如果存在那么显示该员工信息,不存在那么显示查无此人。
〔2〕假设变量X的初始值为0,每次加1,直至X变为5。
〔3〕使用CASE语句对Employees表按部门进行分类。
5.自定义函数的使用。
〔1〕定义一个函数实现如下功能:
对于一个给定的DepartmentID值,查询该值在Departments表中是否存在,假设存在那么返回0,否那么返回-1。
〔2〕写一段T-SQL程序调用上述函数。
6.系统内置函数的使用。
〔1〕求一个数的绝对值。
〔2〕求财务部雇员的总人数。
〔3〕使用ASCII函数返回字符表达式最左端字符的ASCII值。
〔4〕获得当前的日期和时间。
三、实验程序
自定义数据类型的使用
1.对于实验2给出的数据库表结构,再自定义一数据类型ID_type,用于描述员工编号。
USEYGGL
EXECsp_addtype'
ID_type'
'
char(6)'
notnull'
GO
2.在YGGL数据库中创立Employees3表,表结构与Employees类似,只是EmployeeID列使用的数据类型为用户自定义类型ID_type。
IFEXISTS(SELECTnameFROMsysobjectsWHEREname='
Employees3'
)
DROPtableemployees3
CREATETABLEEmployees3
(
EmployeeIDID_type,
Namechar(10)NOTNULL,
Educationchar(4)NOTNULL,
BirthdaydatetimeNOTNULL,
SexbitNOTNULLDEFAULT1,
WorkYeartinyintNULL,
Addressvarchar(40)NULL,
PhoneNumberchar(12)NULL,
DepartmentIDchar(3)NOTNULL,
PRIMARYKEY(EmployeeID)
变量的使用
1.对于实验2给出的数据库表结构,创立一个名为female的用户变量,并在SELECT语句中使用该局部变量查找表中所有女员工的编号、姓名。
DECLARE@femalebit
SET@female=0
SELECTEmployeeID,Name
FROMEmployees
WHERESex=@Female
2.
DECLARE@phonechar(12)
SET@phone=(SELECTPhoneNumber
FROMEmployees
WHEREEmployeeID='
102201'
)
SELECT@phone
运算符的使用
1.使用算数运算符“-〞查询员工的实际收入。
SELECTInCome-OutCome
FROMSalary
2.使用比拟运算符“>
SELECT*
WHEREWorkYear>
5
3.判断Employees表中是否存在编号为11006的员工,如果存在那么显示该员工信息,不存在那么显示“查无此人〞。
IFEXISTS(SELECTNameFROMEmployeesWHEREEmployeeID='
111006'
SELECT*FROMEmployeesWHEREEmployeeID='
ELSE
SELECT'
查无此人'
4.假设变量X的初始值为0,每次加1,直至X变为5。
DECLARE@XINT
SET@X=1
WHILE@X<
BEGIN
SET@X=@X+1
PRINT'
X='
+CONVERT(char
(1),@X)
END
5.使用CASE语句对Employees表按部门进行分类。
SELECTEmployeeID,Name,Address,DepartmentID=
CASEDepartmentID
WHEN1THEN'
财务部'
WHEN2THEN'
人力资源部'
WHEN3THEN'
经理办公室'
WHEN4THEN'
研发部'
WHEN5THEN'
市场部'
自定义函数的使用
1.定义一个函数实现如下功能:
CREATEFUNCTIONCHECK_ID(@departmentidchar(3))
RETURNSintegerAS
DECLARE@numint
IFEXISTS(SELECTdepartmentIDFROMdepartments
WHERE@departmentid=departmentID)
SELECT@num=0
ELSE
SELECT@num=-1
RETURN@num
2.写一段T-SQL程序调用上述函数。
DECLARE@numint
SELECT@num=dbo.CHECK_ID('
2'
IF@num=0
INSERTEmployees
VALUES('
990210'
张英'
本科'
1982-03-24'
0,4,'
南京镇江路号'
8497534'
系统内置函数的使用
1.求一个数的绝对值。
SELECTABS(-123)
2.求财务部雇员的总人数。
SELECTCOUNT(EmployeeID)AS财务部人数
WHEREDepartmentID=
(
SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='
3.使用ASCII函数返回字符表达式最左端字符的ASCII值。
SELECTASCII('
abc'
4.〔1〕获得当前的日期和时间。
SELECTgetdate()
〔2〕查询YGGL数据库中员工号为000001的员工出生的年份
SELECTYEAR(Birthday)
WHEREEmployeeID='
000001'
四、实验结果
3.对于实验2给出的数据库表结构,创立一个名为female的用户变量,并在SELECT语句中使用该局部变量查找表中所有女员工的编号、姓名。
4.
5.使用算数运算符“-〞查询员工的实际收入。
6.使用比拟运算符“>
7.判断Employees表中是否存在编号为11006的员工,如果存在那么显示该员工信息,不存在那么显示“查无此人〞。
8.假设变量X的初始值为0,每次加1,直至X变为5。
9.使用CASE语句对Employees表按部门进行分类。
10.定义一个函数实现如下功能:
11.写一段T-SQL程序调用上述函数。
12.求一个数的绝对值。
13.求财务部雇员的总人数。
14.使用ASCII函数返回字符表达式最左端字符的ASCII值。
15.获得当前的日期和时间。
16.查询YGGL数据库中员工号为000001的员工出生的年份。
五、实验总结
通过本次实验,我对第2章~第4章所学内容进一步稳固和加深,对课堂上没有理解的问题重新进行了学习,掌握了用户自定义类型、各种运算符、各种控制语句、系统函数及用户自定义函数的使用,也掌握变量的分类及其使用。
由于编程量较大,也锻炼了我编程操作要细致谨慎,由于前一阶段的根底知识没有完全掌握,导致本次实验中遇到不少问题,因此在今后的学习中我要吸取经验,认真学习。