数据库应用技术上机报告

  • 格式: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 课程名