思维导图
1 基本概念
1.1 标识符
概念:数据库对象的名称
1.2 标识符的种类
种类 | 说明 | 案例 |
常规标识符 | 不用分隔开的标识符 | |
分隔标识符 |
1.3 批处理
批处理,是包含一个或者多个语句的组,从应用一次性发送到SQLserver执行,SqlServer将批处理的语句编译成一个可执行的单元,称为执行计划;
1.4 注释
被标注不执行的
单行注释:-- 注释内容
1.5 常量和变量
(1)常量也被称为文字量或标量值
字符串常量:在单引号内
Unicode字符串:与普通字符串相似,前缀是大写N;
二进制常量:前缀是0X且是十六进制数字字符串
bit常量:0和1
datetime常量:
integer常量:
money常量:前缀$
(2)变量,程序运行过程中可变的量
局部变量:是用户自定义变量,它用DECLARE语句声明,作用范围仅在程序内部;局部变量名称以“@”开头;
-- 定义变量 DECLARE @count varchar(4),@count2 varchar(4) -- 为变量赋值方式1,使用select一次可以赋值多个 select @count=8,@count2=6 -- 为变量赋值方式2,使用set一次只能赋值一个 set @count = 9 select * from HrmResource where id=@count2;
全局变量:是SqlServer系统内部事先定义好的变量,用户不能创建,修改;全局变量以@@开头
全局变量名 | 作用 | 备注 |
@@version | 查看数据库版本 |
1.6 运算符
包含:算术运算符、逻辑运算符、赋值运算符、连接运算符等与其他语言基本相同
比较运算符
核心作用主要用作用快速的条件查询
运算符 | 作用 |
= | 判断相等 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!= <> | 不等于 |
! | 非 |
运算符优先级:
2 流控制
2.1 begin…end
用于将多个语句组合成一个逻辑块;必须成对使用
BEGIN -- SQL语句块 END
2.2 if…else
用于分支
-- 定义变量 declare @temp int -- 为变量赋值 set @temp = 77 -- if...else语句执行 if @temp>88 print '很大的数' else print '数不够大'
2.3 while
循环
-- 求1-10的和 -- 定义变量 declare @numb int,@numb2 int select @numb = 1,@numb2 = 0 -- while循环 while @numb < 11 begin set @numb2 = @numb+@numb2 set @numb = @numb+1 print @numb2 end
2.4 case
根据表达式的真假来确定是否返回某个值,
T-sql 判断相等用“=”
1
2
3
4
5
6
7
8
9
10
-- 输入1-7打印对应的星期 declare @week int,@temps varchar(50) set @week = 2 set @temps = case when @week = 1 then '星期一' when @week = 2 then '星期二' when @week = 3 then '星期三' when @week = 4 then '星期四' when @week = 5 then '星期五' when @week = 6 then '星期六' when @week = 7 then '星期天' else '输入有误' end print @temps
2.5 waitfor
waitfor延迟语句将它之后的语句在一个指定时间间隔之后执行;
waitfor delay ‘time’
delay:设定等待时间最多24小时
time:设定结束时间点,数据类型必须是datetime "hh:mm:ss"不能包含日期
-- 3秒后输出,hello Word -- 方式一 waitfor delay '00:00:03' print 'hello word' -- 方式二 waitfor time '15:58:40' print 'hello word'
2.6 goto
用于改变,程序执行的流程,跳到标识符指定的程序再继续往下执行
-- 使用goto 输出1-3 declare @numb int set @numb = 1 temp: print @numb set @numb = @numb+1 while @numb<4 goto temp