大型数据库技术-实验一T-SQL
实验内容及步骤
1.使用局部变量、全局变量
(1)定义一个tinyint的整型变量,为其赋值45,并显示变量的值。
declare @A tinyint
set @A=45
print @A
go
(2)定义一个长度为20的可变长度型字符变量,为其赋值“Welcome to SWPU”, 并显示变量的值。
declare @B varchar(20)
set @B='Welcome to SWPU'
print @B
go
(3)查询当前数据库服务器名@@SERVERNAME。
select @@SERVERNAME
go
(4)查询当前数据库管理系统版本@@VERSION。
SELECT @@VERSION
go
2.函数的使用
(1) 数学函数的使用
分别用ABS,SQRT,POWER函数求出-3的绝对值,16的平方根,5的三次方。
select ABS(-3) '-3的绝对值',SQRT(16) '16的平方根',POWER(5,3) '5的3次方'
GO
(2) 字符串函数的使用
1)用UPPER和LOWER函数分别将字符串“china”、“MACHINE”转换成大写、小写字母;
select UPPER('china') '大写',LOWER('MACHINE') '小写'
GO
2)用LTRIM函数去掉字符串“ machine ”左边的空格,再与“china”及“press“连接起来;
select LTRIM(' machine ')+'china'+'press' '去左空格'
go
3)用RTRIM函数去掉字符串“ machine ”右边的空格,再与“china”及“press“连接起来;
select RTRIM(' machine ')+'china'+'press' '去又空格'
GO
4)去掉字符串“ machine ”左右两边的空格,再与“china”及“press“连接起来;
select LTRIM(RTRIM(' machine '))+'china'+'press' '去两边空格'
GO
5)用LEN函数计算字符串‘I am a teacher.’的长度,并使用REPLACE函数将“teacher”替换为“student”。
select LEN('I am a teacher.') '长度',REPLACE('I am a teacher.','teacher','student') '替换'
GO
(3) 日期、时间函数的使用
1)用GETDATE,DAY,MONTH,YEAR等函数返回系统当前日期并以整数形式返回当前日期的年份、月份、日;
declare @date date
set @date=GETDATE()
select YEAR(@date) '年',MONTH(@date) '月',day(@date) '日'
go
2)用DATEDIFF函数返回你的生日与当前日期相差的天数、月数及年数。
select DATEDIFF(dd,'2000-04-07','2020-12-06') '天数',
DATEDIFF(MM,'2000-04-07','2020-12-06') '月数',
DATEDIFF(YY,'2000-04-07','2020-12-06') '年数'
GO
(4) 系统函数与元数据函数的使用
1)显示正在使用的用户名(USER_NAME)、数据库名(DB_NAME);
select USER_NAME() '用户名',DB_NAME() '数据库名'
GO
2)返回当前主机标识(HOST_ID)及主机名称(HOST_NAME)。
select HOST_ID(),HOST_NAME()
GO
3.编写较复杂的Transact-SQL程序
(1) 在教学管理数据库中,我们将学生的课程考试成绩水平分为3类,即低于60为不及格,61到79为及格,大于等于80为优秀,成绩为NULL的不统计。请显示所有学生的姓名、所选各个课程的课程名和成绩水平。
use 教学管理
SELECT 姓名,课名,CASE
WHEN 成绩<60 THEN '不及格'
WHEN 成绩<80 THEN '及格'
ELSE '优秀'
END AS '等级表'
FROM dbo.学生表,dbo.选课表,dbo.课程表,dbo.开课表
WHERE dbo.学生表.学号=dbo.选课表.学号
AND dbo.选课表.开课号=dbo.开课表.开课号
AND dbo.开课表.课号=dbo.课程表.课号
AND 成绩 IS NOT NULL
GO
(2) 用Transact-SQL语言编写程序计算1~100之间所有能被7整除的数的总和。
DECLARE @SUM INT,@START INT,@END INT,@NUM INT
SELECT @SUM=0,@START=1,@END=100,@NUM=7
WHILE @START<@END
BEGIN
IF(@START%@NUM=0)
BEGIN
PRINT @START
SET @SUM=@SUM+@START
END
SET @START=@START+1
END
PRINT '-----------------'
PRINT @SUM
GO