📄 03.txt
字号:
【例3-1】下面的语句创建了int类型的局部变量,其名字为@var,
由于没有为该变量赋值,则该变量的初始值为NULL。
DECLARE @var int
【例3-2】下面的语句创建了三个局部变量,名称分别为@var1,@var2,@var3,
并用SET语句分别为三个变量赋值。
DECLARE @var1 nvarchar(10),@var2 nchar(5),@var3 int
SET @var1='red'
SET @var2='yellow'
SET @var3=10
【例3-3】下面的语句创建变量并赋值,然后用SELECT语句返回该变量的值。
DECLARE @xuehao int
SET @xuehao=5
SELECT @xuehao
【例3-4】该例中,将选课表中学号为'20050201'的学生的分数赋值给变量@fenshu,
并将该变量的值显示在结果窗口中。
DECLARE @fenshu int
SELECT @fenshu=分数
FROM 选课表
WHERE 学号='20050201'
SELECT @fenshu AS 分数
【例3-5】@@CONNECTIONS的使用。返回连接次数。
SELECT @@CONNECTIONS AS '连接次数'
【例3-6】@@DATEFIRST的使用。将星期五设为每周的第一天,假设今天是星期三,
则今天是该周的第6天
SET DATEFIRST 5
SELECT @@DATEFIRST AS '第一天', DATEPART(dw, GETDATE()) AS '今天'
【例3-7】将“选课表”中各个成绩乘以0.8后输出。
SELECT 学号,课程号,分数*0.8
FROM 选课表
【例3-8】创建两个变量,对其赋值,并输出两个变量的&(位与)、|(位或)和^(位异或)的结果。
DECLARE @var1 int,@var2 int
SET @var1=22
SET @var2=147
select @var1&@var2,@var1|@var2,@var1^@var2
【例3-9】将“实例数据库”中 “学生表”的出生日期在1985年9月1号后的学生显示出来。
USE 实例数据库
SELECT 学号,姓名,出生日期
FROM 学生表
WHERE 出生日期>'1985-09-01'
GO
【例3-10】IF语句的使用。
DECLARE @pingyu char(10)
IF (SELECT MIN(分数) FROM 选课表)>=60
SELECT @pingyu='全部及格'
ELSE
SELECT @pingyu='存在不及格'
PRINT @pingyu
【例3-11】简单的CASE语句的使用。
DECLARE @var1 varchar(1)
SET @var1='B'
DECLARE @var2 varchar(10)
SET @var2=
CASE @var1
WHEN 'R' THEN '红色'
WHEN 'B' THEN '蓝色'
WHEN 'G' THEN '绿色'
ELSE '错误'
END
PRINT @var2
【例3-12】根据输入的学生成绩的值,对该生做出一个具体的评语。
DECLARE @chengji float,@pingyu varchar(40)
SET @chengji=80
SET @pingyu=
CASE
WHEN @chengji>100 or @chengji<0 then '您输入的成绩超出~的范围'
WHEN @chengji>=60 or @chengji<70 then '及格'
WHEN @chengji>=70 or @chengji<85 then '良好'
WHEN @chengji>=85 or @chengji<=100 then '优秀'
ELSE '不及格'
END
PRINT '该生的成绩评语是:'+@pingyu
【例3-13】利用GOTO语句计算0~100之间所有数的和。
DECLARE @x int,@sum int
SET @x=0
SET @sum=0
xh:SET @x=@x+1
SET @sum=@sum+@x
if @x<100
GOTO xh
PRINT '1~100所有数的和是:'+ltrim(str(@sum))
【例3-14】利用WHILE语句计算0~100之间所有数的和。
DECLARE @x int,@sum int
SET @x=0
SET @sum=0
WHILE @x<100
BEGIN
SET @x=@x+1
SET @sum=@sum+@x
END
PRINT '1~100所有数的和是:'+ ltrim(str(@sum))
【例3-15】求1~100之间的所有数之和,但是如果和大于1000,立刻跳出循环,输出结果。
DECLARE @x int,@sum int
SET @x=0
SET @sum=0
WHILE @x<100
BEGIN
SET @x=@x+1
SET @sum=@sum+@x
if @sum>1000
BREAK
END
PRINT '结果是:'+ltrim(str(@sum))
【例3-16】计算1~100所有偶数之和,并输出结果。
DECLARE @x int,@sum int
SET @x=0
SET @sum=0
WHILE @x<100
BEGIN
SET @x=@x+1
if @x%2=1
CONTINUE
SET @sum=@sum+@x
END
PRINT '1~100所有偶数之和是:'+ltrim(str(@sum))
【例3-17】WAITFOR语句的使用。
WAITFOR DELAY '0:0:10' /*等待10秒
WAITFOR TIME '12:00:00' /*等到12点
【例3-18】AVG函数的使用。以下语句统计所有学生成绩的平均值。
USE 实例数据库
SELECT AVG(分数) as 平均成绩
FROM 选课表
GO
【例3-19】MAX函数的使用。以下语句返回选课表中学生成绩的最高分数。
USE 实例数据库
SELECT MAX(分数) as 最高成绩
FROM 选课表
GO
【例3-20】COUNT函数的使用。以下语句返回学生表中的记录个数。
USE 实例数据库
SELECT COUNT(学号) as 总人数
FROM 选课表
GO
【例3-21】ABS函数的使用。
SELECT ABS(-8.5)
【例3-22】CEILING函数的使用。
SELECT CEILING(25.3), CEILING(-25.3), CEILING(0)
【例3-23】RAND函数的使用。
SELECT FLOOR(RAND()*10),FLOOR(RAND(5)*10)
【例3-24】ASCII函数的用法。
SELECT ASCII('ABC')
【例3-25】CHAR函数的用法。
SELECT CHAR(65)
【例3-26】LEFT函数的用法。
SELECT LEFT('CHINA',2)
【例3-27】REPLACE函数的用法。
SELECT REPLACE('CHINA','A','ESE')
【例3-28】REPLACATE函数的用法。
SELECT REPLICATE('*',5)+'AA'+REPLICATE('*',5)
【例3-29】DATEADD函数的使用。对“实例数据库”中的“学生表”的“入学日期”一列加上30天后显示。
USE 实例数据库
SELECT DATEADD(DAY,30,入学日期)
FROM 学生表
GO
【例3-30】DATEDIFF函数的使用。计算“入学日期”和当前日期之间经过了多少天。
USE 实例数据库;
SELECT DATEDIFF(day, 入学日期, GETDATE()) AS 入学天数
FROM 学生表
GO
【例3-31】GETDATE的用法。
SELECT GETDATE();
【例3-32】YEAR、MONTH和DAY函数的用法。
SELECT STR(YEAR('03/12/2007'))+'年'+ STR(MONTH('03/12/2007'))+'月'+ STR(DAY('03/12/2007'))+'日'
【例3-33】创建一个内联表值函数xscj,返回指定学生的成绩。
ALTER FUNCTION [dbo].[xscj](@xh varchar(12))
RETURNS TABLE
AS
RETURN
(
SELECT 选课表.学号,课程表.课程名,选课表.分数
FROM 选课表
INNER JOIN 课程表 ON (课程表.课程号=选课表.课程号)
WHERE [学号]=@xh
)
【例3-34】创建一个标量函数,该函数返回两个参数中的最大值。
CREATE FUNCTION max2(@par1 real,@par2 real)
RETURNS real
AS
BEGIN
DECLARE @par real
IF @par1>@par2
SET @par=@par1
ELSE
SET @par=@par2
RETURN(@par)
END
【例3-35】在“实例数据库中”创建函数“chengjibiao”。该函数以学号为实参,通过调用该函数显示该生的各门功课的成绩。
CREATE FUNCTION chengjibiao
(
@xuehao varchar(12)
)
RETURNS @chengji TABLE
(
xuehao nchar(12),
xingming nchar(20),
kecheng nchar(20),
fenshu tinyint
)
AS
BEGIN
INSERT @chengji
SELECT 学生表.学号,学生表.姓名,课程表.课程名,选课表.分数
FROM 学生表
INNER JOIN 选课表 ON (学生表.学号=选课表.学号)
INNER JOIN 课程表 ON (课程表.课程号=选课表.课程号)
WHERE 学生表.学号=@xuehao
RETURN
END
【例3-36】使用PRINT 调用max2函数。
PRINT dbo.max2(12,38.6)
【例3-37】使用SELECT 调用max2函数。
SELECT dbo.max2(59.7,8)
【例3-38】使用EXEC语句调用max2函数。
USE 实例数据库
DECLARE @par real
EXEC @par=dbo.max2 59.6,8
SELECT @par
GO
【例3-39】使用EXEC语句调用max2函数,参数的标识次序与函数定义中的参数标识次序不同。
USE 实例数据库
DECLARE @par real
EXEC @par=dbo.max2 @par2=8,@par1=59.6
SELECT @par
GO
【例3-40】调用xscj,返回指定学生的各科成绩。
SELECT *
FROM xscj('20050101')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -