SQL实验五:T-SQL编程
更新时间:2023-03-14 01:30:01 阅读量: 教育文库 文档下载
- SQL实验五推荐度:
- 相关推荐
学校代码: 10128 学 号: 201120905048
《数据库原理及应用》实验报告
(
题 目:T-SQL编程 学生姓名:孙跃 学 院:理学院 系 别:数学系
专 业:信息与计算科学 班 级:信计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语句中使用该局部变量查找表中所有女员工的编号、姓名。
(2)定义一个变量,用于获取号码为102201的员工的电话号码。 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
三、实验程序
自定义数据类型的使用
1.对于实验2给出的数据库表结构,再自定义一数据类型ID_type,用于描述员工编号。
USE YGGL
EXEC sp_addtype 'ID_type','char(6)','not null' GO
2.在YGGL数据库中创建Employees3表,表结构与Employees类似,只是EmployeeID列使用的数据类型为用户自定义类型ID_type。
USE YGGL GO
IF EXISTS(SELECT name FROM sysobjects WHERE name='Employees3')
DROP table employees3 CREATE TABLE Employees3 ( ) GO
EmployeeID ID_type, Name char(10)NOT NULL, Education char(4) NOT NULL, Birthday datetime NOT NULL, Sex bit NOT NULL DEFAULT 1, WorkYear tinyint NULL, Address varchar(40) NULL, PhoneNumber char(12)NULL, DepartmentID char(3)NOT NULL, PRIMARY KEY(EmployeeID)
变量的使用
1.对于实验2给出的数据库表结构,创建一个名为female的用户变量,并在SELECT语句中使用该局部变量查找表中所有女员工的编号、姓名。
USE YGGL
DECLARE @female bit SET @female=0
SELECT EmployeeID,Name
FROM Employees WHERE Sex=@Female
2.定义一个变量,用于获取号码为102201的员工的电话号码。
DECLARE @phone char(12) SET @phone=(SELECT PhoneNumber
FROM Employees
WHERE EmployeeID='102201') SELECT @phone
运算符的使用
1.使用算数运算符“-”查询员工的实际收入。
SELECT InCome-OutCome
FROM Salary
2
2.使用比较运算符“>”查询Employees表中工作时间大于5年的员工信息。
SELECT *
FROM Employees
WHERE WorkYear>5
3.判断Employees表中是否存在编号为11006的员工,如果存在则显示该员工信息,不存在则显示“查无此人”。
IF EXISTS (SELECT Name FROM Employees WHERE EmployeeID='111006')
SELECT * FROM Employees WHERE EmployeeID='111006' ELSE
SELECT'查无此人'
4.假设变量X的初始值为0,每次加1,直至X变为5。
DECLARE @X INT SET @X=1 WHILE @X<5 BEGIN GO
5.使用CASE语句对Employees表按部门进行分类。
SET @X=@X+1
PRINT'X='+CONVERT(char(1),@X)
END
USE YGGL GO
SELECT EmployeeID,Name,Address,DepartmentID=
CASE DepartmentID
WHEN1 THEN '财务部' WHEN2 THEN '人力资源部' WHEN3 THEN '经理办公室' WHEN4 THEN '研发部' WHEN5 THEN '市场部'
END
FROM Employees
自定义函数的使用
1.定义一个函数实现如下功能:对于一个给定的DepartmentID值,查询该值在Departments表中是否存在,若存在则返回0,否则返回-1。
CREATE FUNCTION CHECK_ID(@departmentid char(3)) RETURNS integer AS BEGIN GO
3
DECLARE @num int
IF EXISTS(SELECT departmentID FROM departments
WHERE @departmentid=departmentID) ELSE
SELECT @num=-1 RETURN @num SELECT @num=0
END
2.写一段T-SQL程序调用上述函数。
USE YGGL GO
DECLARE @num int
SELECT @num=dbo.CHECK_ID('2') IF @num=0
INSERT Employees
VALUES('990210','张英','本科','1982-03-24',0,4,'南京镇江路号','8497534','2') GO
系统内置函数的使用
1.求一个数的绝对值。
SELECT ABS(-123)
2.求财务部雇员的总人数。
USE YGGL
SELECT COUNT(EmployeeID)AS 财务部人数
FROM Employees
WHERE DepartmentID= (
SELECT DepartmentID
)
FROM Departments
WHERE DepartmentName='财务部'
3.使用ASCII函数返回字符表达式最左端字符的ASCII值。
SELECT ASCII('abc')
4.(1)获得当前的日期和时间。
SELECT getdate()
(2)查询YGGL数据库中员工号为000001的员工出生的年份
SELECT YEAR(Birthday)
FROM Employees
WHERE EmployeeID='000001'
四、实验结果
1.对于实验2给出的数据库表结构,再自定义一数据类型ID_type,用于描述员工编号。
4
2.在YGGL数据库中创建Employees3表,表结构与Employees类似,只是EmployeeID列使用的数据类型为用户自定义类型ID_type。
3.对于实验2给出的数据库表结构,创建一个名为female的用户变量,并在SELECT语句中使用该局部变量查找表中所有女员工的编号、姓名。
4.定义一个变量,用于获取号码为102201的员工的电话号码。
5
5.使用算数运算符“-”查询员工的实际收入。
6.使用比较运算符“>”查询Employees表中工作时间大于5年的员工信息。
7.判断Employees表中是否存在编号为11006的员工,如果存在则显示该员工信息,不存在则显示“查无此人”。
6
8.假设变量X的初始值为0,每次加1,直至X变为5。
9.使用CASE语句对Employees表按部门进行分类。
7
10.定义一个函数实现如下功能:对于一个给定的DepartmentID值,查询该值在Departments表中是否存在,若存在则返回0,否则返回-1。
11.写一段T-SQL程序调用上述函数。
12.求一个数的绝对值。
13.求财务部雇员的总人数。
8
14.使用ASCII函数返回字符表达式最左端字符的ASCII值。
15.获得当前的日期和时间。
16.查询YGGL数据库中员工号为000001的员工出生的年份。
五、实验总结
通过本次实验,我对第2章~第4章所学内容进一步巩固和加深,对课堂上没有理解的问题重新进行了学习,掌握了用户自定义类型、各种运算符、各种控制语句、系统函数及用户自定义函数的使用,也掌握变量的分类及其使用。由于编程量较大,也锻炼了我编程操作要细致谨慎,由于前一阶段的基础知识没有完全掌握,导致本次实验中遇到不少问题,因此在今后的学习中我要吸取经验,认真学习。
9
正在阅读:
SQL实验五:T-SQL编程03-14
005第五章外汇与汇率—F03-11
《能说会道—公众演讲与表达技巧修炼》05-02
北京2015年高级会计师考试报名时间06-09
关于期中考试动员讲话稿【多篇】05-03
六年级数学下册计算题---脱式计算05-05
数学人教版九年级下册27.2.1相似三角形的判定(1)教案(人教新课标九年级下)12-26
2014年河北老年大学招生简章06-11
大工17春《企业税收筹划》大作业标准答案05-10
《寓言四则》教学案03-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- SQL
- 编程
- 实验
- 生态节水型灌区建设关键技术及应用-公示材料 - 图文
- 金融市场学读书报告
- 中考数学四边形知识点汇总
- 吉林省东北师范大学附属中学2015届高考数学一轮复习(第13周)阶段测试卷 理
- 2019-2020届高考英语学业水平测试一轮复习模拟测试卷(三)(含解析)
- 2014年巴中平昌县教师公招公告
- 科技科普宣传手册(修改稿) - 图文
- 微观经济学各校考研试题及答案整理 第八章
- 习题库
- 2014秋青岛版数学九上3.6《弧长及扇形面积的计算》word学案
- 地震知识竞赛答案
- 商务谈判案例 - 图文
- 孙过庭书谱全文
- 14达朗贝尔原理(动静法)
- 优化人力资源配置
- 晋江市人民政府文件
- 民盟盟员述职报告
- 陈安(新加坡国立大学政治系)
- 全国2008年10月自考软件开发工具试题及答案
- 2016春《服务营销管理基础》期末复习题