数据库应用技术上机报告
- 格式:doc
- 大小:127.00 KB
- 文档页数:10
数据库应用技术上机报告
实验五:T-SQL编程
姓 名: 刘运凯
学 号: 10070050
班 级: 10计科2
1 一、实验目的与要求
1、掌握用户自定义类型的使用;
2、掌握变量的分类及其使用;
3、掌握各种运算符的使用;
4、掌握各种控制语句的使用;
5、掌握系统函数及用户自定义函数的使用;
二、实验准备
1、了解T-SQL支持的各种基本数据类型;
2、了解自定义数据类型使用的一般步骤;
3、了解T-SQL各种运算符、控制语句的功能及使用方法;
4、了解系统函数的调用方法;
5、了解用户自定义函数使用的一般步骤;
三、实验内容
1、已知数据库YGGL中有3个基本表Employees、Departments和Salary,其表结构分别如下:
列名 数据类型 长度 是否可空
EmployeeID 定长字符串型(char) 6 ×
Name 定长字符串型(char) 10 ×
Education 定长字符串型(char) 4 ×
Birthday 日期型(datetime) 系统默认 ×
Sex 位型(bit) 系统默认 ×
WorkYear 整数型(tinyint) 系统默认 √
Address 不定长字符串型(varchar) 40 √
PhoneNumber 定长字符串型(char) 12 √
DepartmentID 定长字符串型(char) 3 ×
表1 Employees表的结构
列名 数据类型 长度 可空
DepartmentID 定长字符串型(char) 3 ×
DepartmentName 定长字符串型(char) 16 ×
Note 不定长字符串型(varchar) 1 √
表2 Departments表的结构
列名 数据类型 长度 可空
EmployeeID 定长字符串型(char) 3 ×
InCome 浮点型(float) 20 ×
OutCome 浮点型(float) 100 ×
表3 Salary表的结构
2 在数据库YGGL按要求完成以下题目
1、T-SQL编程(必做题)
【1】变量的使用:定义一个变量,用于获取‘102201’员工的电话号码
DECLARE @varl char(10)
SET @varl='102201'
SELECT PhoneNumber
FROM Employees
WHERE EmployeeID=@varl
【2】流程控制语句的使用:判断姓名为王林的员工实际收入是否高于3000,如果是则显示其收入,否则显示‘收入低于3000
IF
(SELECT InCome
FROM Salary,Employees
WHERE Salary.EmployeeID=Employees.EmployeeID
AND Name='王林'
)>=3000
SELECT InCome
FROM Salary,Employees
WHERE Salary.EmployeeID=Employees.EmployeeID
AND Name='王林'
ELSE
SELECT '收入低于3000'
【3】使用系统内置函数完成下列操作
(1)删除字符串“ MICROSOFT SQL SERVER”左边的空格,显示结果。
DECLARE @varl char(50)
SET @varl=' MICROSOFT SQL SERVER'
SELECT LTRIM(@varl)
SELECT @varl
3
(2)截取字符串“MICROSOFT”最左边的5个字符,显示结果。
DECLARE @varl char(50)
SET @varl='MICROSOFT'
SELECT LEFT(@varl,5)
SELECT @varl
(3)截取姓名“李晓亮”中的第2个汉字,显示结果。
DECLARE @varl char(50)
SET @varl='李晓亮'
SELECT SUBSTRING(@varl,2,1)
SELECT @varl
(4)获取当前系统日期和对应的年,月,日。显示结果。
select GETDATE() as '当前日期'
(5)将字符串‘050624’的类型转换为数值型和日期型,显示结果。
DECLARE @varl char(50)
4 SET @varl='050624'
SELECT YEAR(@varl )
SELECT @varl
SELECT MONTH(@varl )
SELECT @varl
SELECT DAY(@varl )
SELECT @varl
(6)将数值506的类型转换为日期型,显示结果。
2、在数据库PXSCJ中完成如下T-SQL编程(选做题,任选其中8道题)
【1】创建局部变量@var1、@var2并赋值,然后输出变量的值。
DECLARE @varl char(10),@var2 char(30)
SELECT @varl='12',@var2='21'
SELECT @varl AS '变量',@var2 AS '变量'
【2】创建一个名为sex的局部变量,并在SELECT语句中使用该局部
DECLARE @String char(10)
SET @String ='计算机'
SELECT @String
【3】使用查询给变量赋值。
5 DECLARE @a char(8)
SET @a=(SELECT 姓名
FROM xsb
WHERE 学号= '081101')
SELECT @a
【4】使用SELECT给局部变量赋值。
【5】给局部变量赋空值。
DECLARE @var1 nvarchar(30)
SELECT @var1 = '刘丰'
SELECT @var1 =
(
SELECT 姓名
FROM xsb
WHERE 学号= '089999'
)
SELECT @var1 AS
'NAME'
【6】使用游标变量。
【7】在master数据库中,建立表bitop,并插入一行,然后将a字段和 b字段列上值进行按位与运算。
【8】查询成绩高于“林一帆”最高成绩的学生姓名、课程名及成绩。
use pxscj
go
select 姓名,课程名,成绩
from xsb,cjb,kcb
where 成绩>all
6 (
select b.成绩
from XSB a,cjb b
where a.学号=b.学号and a.姓名='林一帆'
)
AND xsb.学号=cjb.学号
AND kcb.课程号=cjb.课程号
AND 姓名<>'林一帆'
【9】查询总学分在40~50的学生学号和姓名。
SELECT 学号,姓名
FROM XSB
WHERE 总学分>=40 AND 总学分<=50
【10】查询总学分在范围40~50之外的所有学生的学号和姓名。
【11】查询课程名以“计”或C开头的情况。
【12】查询所有选课学生的姓名。
【13】多个字符串的联接。
【14】 如下程序用于查询总学分大于42的学生人数。
DECLARE @num int
SELECT @num=(SELECT COUNT(姓名) FROM 学生表WHERE 总学分>42)
IF @num<>0
SELECT @num AS '总学分>42的人数'
【15】 如果“数据库原理”课程的平均成绩高于75分,则显示“平均成绩高于75分”。
7 【16】IF„ELSE语句的嵌套使用。
【17】 使用第一种格式的CASE语句根据性别值输出“男”或“女”。
【18】将学号为081101的学生的总学分使用循环修改到大于等于60,每次只加2,并判断循环了多少次。
【19】判断是否存在学号为081128的学生,如果存在则返回,不存在则插入081128的学生信息。
【20】 如下语句设定在早上八点执行存储过程sp_addrole。
【21】显示ABS 函数对三个不同数字的效果。
select abs(-4.0),abs(0.0),abs(9.0)
【22】如下程序通过RAND函数返回随机值。
select str(RAND()*100)
go
【23】查找字符串'sql'的最左端字符的ASCII的值。
【24】返回课程名最左边的4个字符。
select left(课程名,4)
from kcb
order by 课程名