SQL-Server-3-T-SQL语言

本文详细介绍了SQL Server的T-SQL语言,包括基本概念如标识符的命名规则,常量和变量的声明与赋值,以及运算符的使用。接着,深入探讨了流控制语句,如BEGIN...END、IF...ELSE、WHILE、CASE等,还有BREAK、CONTINUE、GOTO和RETURN等控制结构。文章通过实例展示了T-SQL在实际操作中的应用。
摘要由CSDN通过智能技术生成

T-SQL语言

1. 基本概念

  1. 标识符
    标识符:数据库对象的名称

  2. 标识符的种类

    • 常规标识符
    • 分隔标识符

  3. 标识符的命名规则
    ① 第一个字符必须是:英文字母 a~z 和 A ~Z、下划线(_)、@或者#。

② 后续字符:可包括:
• 英文字母 a~z 和 A ~Z、下划线()、以及来自其他语言的字母字符
• 十进制数字
• @、¥、# 和 下划线(
)

③ 标识符不能是T-SQL关键字

④ 不允许嵌入空格或其他特殊字符

2. 常量和变量

2.1 常量

2.2 变量

局部变量

声明局部变量的语法:
DECLARE @变量名 数据类型 [,@变量名 数据类型] …

--声明两个变量 name 字符类型 age int
declare @name varchar(10), @age int

声明后赋值:
可以用SET或SELECT语句赋值,语法格式为:

SET @局部变量=值
SELECT @局部变量=值[,……值n]

--set:
set @name='张'
set @age=18

--select
select @name='李',@age=19

--输出
print @name
print @age

:SET一次只可赋一个值,SELECT可以一次赋多个值

练习:
将局部变量Homepage声明为char类型,长度为100,并为其赋值为
http://www.itzcn.com

/*将局部变量Homepage声明为char类型,长度为100,并为其赋值为
http://www.itzcn.com*/
Declare @Homepage char(100)
SET @Homepage='http://www.itzcn.com'
全局变量

首先定义好的变量,不允许用户创建和修改。
以@@开头。

2.3 运算符

  1. 算术运算符 + - * / %
--算术运算符
declare @a int, @b int, @z int
set @a=18
set @b=4
set @z=@a+@b
print @z
  1. 赋值运算符,即“=”

  2. 位运算符
    两个表达式必须是任意两个整数类型。&与,|或,^异或(两个位相同为0,不同为1)

  3. 比较运算符

  4. 逻辑运算符
    返回结果是布尔类型的值,True或者False,表示条件成立或不成立。
    AND 若两个表达式都为True,则结果为True。
    BETWEEN 如果操作数在某个范围内,则结果为True。
    IN
    LIKE
    NOT
    OR

  5. 连接运算符
    ‘+’,可以将字符串连接起来。

declare @name char(20)
set @name='world'
print 'hello'+@name
  1. 一元运算符
    +数值为正 -数值为负 ~逻辑非,位反

  2. 运算符的优先级:

    ①一元运算符 +(正)、-(负)、~(取反)
    ②算术运算符
    ③比较运算符
    ④逻辑运算符
    ⑤赋值运算符

具体见图:
在这里插入图片描述

3. 流控制语句

BEGIN…END

begin……end用于将多个语句组合成逻辑块
当流程控制语句必须执行一个包含两条或两条以上的语句块时,使用BEGIN…END语句。

语法
BEGIN
{
两条或两条以上的语句块
}
END

说明:BEGIN和END语句必须成对使用,任何一条语句都不可单独使用。{}代表中间内容必须要写。

例:
声明两个数字,交换位置。

--声明两个数字,交换位置。
declare @x int,@y int,@t int
set @x=1
set @y=2
begin
set @t=@x
set @x=@y
set @y=@t
end

print @x
print @y

IF…ELSE

若条件为真,则执行条件表达式后面的T-SQL语句,当条件为假,则可使用ELSE关键字指定要执行的T-SQL语句。

语法:
IF 布尔表达式
T-SQL语句
[ELSE
T-SQL语句]
例:

declare @m int
set @m=12
if @m>0
	print 'true'
else
	print 'false'
--
declare @a int, @b int
set @a=3
set @b=7
if @a>@b
	print '@m大于@n'
else
	print '@m不大于@n'
--
declare @m int
set @m=12
if @m between 50 and 80
	print 'true'
else
	print 'false'

例:
输入一个坐标值,然后判断它在哪一个象限

--输入一个坐标值,然后判断它在哪一个象限
declare @x int, @y int
set @x=3
set @y=-2
begin
if @x>0
	if @y>0
	print '第一象限'
	else  --y<0
	print '第四象限'
else
	if @y>0
	print '第二象限'
	else --y<0
	print '第三象限'
end

WHILE

循环结构。当条件为真时,可重复执行循环语句。若想循环执行一组命令,则需配合begin……end一起使用。

语法
WHILE 布尔表达式
begin
逻辑块
end

例:
求1-10之间的整数和

--求1-10之间的整数和
declare @n int, @sum int
set @n=1
set @sum=0
while @n<=10
begin
set @sum=@sum+@n
set @n=@n+1
end
print @sum     --55

求1-10之间的偶数和

--求1-10之间的整数和
declare @m int,@sum int
set @m=1
set @sum=0
while m<=10
	begin 
		if @m%2=0
		begin
		set @sum=@sum+@m
		end
		set @m=@m+1
	end
print @sum   --30

BREAK与CONTINUE

break直接跳出循环,continue跳回循环最开始的的地方

语法
WHILE 条件表达式
begin
逻辑块
[break] --跳出所有循环
[continue] --跳到循环最开始的的地方
逻辑块
end

例:求1到10之间偶数的和

declare @x int,@sum int
set @x=0
set @sum=0
while @x<10
begin
set @x=@x+1
	if @x%2=0
	set @sum=@sum+@x
	else
	continue
end
print @sum

CASE多分支语句

可根据表达式的真假来确定是否返回某个值。

语法

CASE
WHEN 判断条件
THEN 语句块1
[…n]
[ELSE 语句块]
END

例:
根据学生分数给出判断:90-100(包含90,100)的显示excellent,70-90(包含70)显示good,60-70(包含60)的显示pass,其他分数显示fail。

/*根据学生分数给出判断:
90-100(包含90)的显示excellent,
70-90(包含70)显示good,
60-70(包含60)的显示pass,
其他分数显示fail。*/
declare @score int,@message varchar(50)
set @score=88
set @message=
case 
	when @score>=90 and @score<=100 then 'excellent'
	when @score>=70 and @score<90 then 'good'
	when @score>=60 and @score<70 then 'pass'
	else 'fail'
end
print @message

WAITFOR

延迟语句,可以将它之后的语句在一个指定的时间间隔之后执行,或在未来的某一指定时间执行。

语法
Waitfor delay ‘time’ | time ‘time’

其中delay用于设定等待的时间,最多可达24小时。
time用于设定等待结束的时间点。‘时间’的数据类型必须为datetime格式为‘hh:mm:ss’,不能包含日期。

例:

--3秒后显示'hello world'
waitfor delay '00:00:03'
print 'hello world'

--15点显示'hello ye'
waitfor time '15:00:00'
print 'hello ye'

GOTO命令

goto命令用来改变程序执行的流程使程序跳到标识符指定的程序再继续往下执行

语法
goto 标识符
标识符需要在其名称后加上一个冒号":"

标识符自己定义

例:
用goto语句实现跳转输出小于等于3的值

--用goto语句实现跳转输出小于等于3的值
declare @x int
select @x=1
loving:              --这里的标识符loving相当于单独罗列出while条件后的语句
	print @x
	select @x=@x+1
while @x<3
goto loving

RETURN无条件退出语句

从查询或过程中无条件退出。此时位于retur后面的语句不被执行。

语法
RETURN 整数值

例:

declare @x int
select @x=3
if @x>0
print '遇到return之前'
return
print '遇到return之后'

PRINT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值