变量分为:
DECLARE @变量名 数据类型
例如:
DECLARE @name varchar(8)
DECLARE @seat int
SET @变量名 =值
SELECT @变量名 = 值
例如:
SET @name=‘张三’
SELECT @name=stuName FROM stuInfo
WHERE stuNo=‘s25302’ (必须确保筛选出的记录只有1条 )
变量 |
含义 |
@@ERROR |
最后一个T-SQL错误的错误号 |
@@IDENTITY |
最后一次插入的标识值 |
@@LANGUAGE |
当前使用的语言的名称 |
@@MAX_CONNECTIONS |
可以创建的同时连接的最大数目 |
@@ROWCOUNT |
受上一个SQL语句影响的行数 |
@@SERVERNAME |
本地服务器的名称 |
@@TRANSCOUNT |
当前连接打开的事务数 |
@@VERSION |
SQL Server的版本信息 |
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
……
ELSE 其他结果
END
参考语句:
print 'ABCDE五级显示成绩如下:'
SELECT Student_id,
成绩= CASE
WHEN Student_grade<60 THEN 'E'
WHEN Student_grade BETWEEN 60 AND 69 THEN 'D'
WHEN Student_grade BETWEEN 70 AND 79 THEN 'C'
WHEN Student_grade BETWEEN 80 AND 89 THEN 'B'
ElSE 'A'
END
FROM Student_course
总结:
- 变量的赋值有两种方式:使用SET语句或SELECT语句。
- 输出结果也有两种方式:print语句和SELECT语句。
- 控制流语句提供了条件操作所需的顺序和逻辑。
- 语句块使用BEGIN…END。
- 批处理可以提高语句执行的效率,批处理结束的标志是“GO”。
存储过程:
create proc(edure) procName
参数列表 --输入参数 按值传递
--输出参数 按引用传递
@参数名 数据类型 [output]
as
--T-SQL编程,定义变量,流程控制
go
数据库事务:
begin transaction
rollback transaction
commit transaction
create[unique] [ clustered//nonclustered] index index_name
on table_name(column_name [ASC//DESC])
[with
[pad_index]
[[,] fillfactor = fillfactor]
[[,] drop_existing]
]
注:unique指定创建的索引是惟一索引
clustered//nonclustered指定被创建的索引类型,聚簇还是非聚簇,二选一
index_name指定新建索引的名字
table_name创建索引的基表的名字
column_name索引中包含的列的名字
[ASC//DESC]指定某个具体的索引列是升序还是降序排序,默认为ASC升序
pad_index、fillfactor填充因子,指定创建索引过程中个索引页的填满程度
drop_existing 删除先前存在的与创建索引同名的聚簇或非聚簇索引
触发器是一种特殊的存储过程:
- 触发器定义在特定的表上,与表相关
- 自动触发执行
- 不能直接调用
- 是一个事务(可回滚)
触发器触发时:
- 系统自动在内存中创建deleted表或inserted表
- 只读,不允许修改,触发器执行完成后,自动删除
inserted表:
- 临时保存了插入或更新后的记录行
- 可以从inserted表中检查插入的数据是否满足业务需求
- 如果不满足,则向用户报告错误消息,并回滚插入操作
deleted表:
- 临时保存了删除或更新前的记录行
- 可以从deleted表中检查被删除的数据是否满足业务需求
- 如果不满足,则向用户报告错误消息,并回滚插入操作
语法
on table_name
with encrypion –加密触发器
for update...
as
Transact-SQL