Tsql基本编程:
定义变量 declare @变量名 数据类型
赋值 set @变量名 = 值 select @变量名 = 值
取值打印 select @变量名 print @变量名
分支语句:
if @a>@b
begin
语句。。。。
end
else
begin
....
end
循环语句:
注意循环四要素:初始条件,循环条件,循环体,状态改变
declare @a int;
select @a = 1;
while 循环条件 @a<=10
begin
循环体
end
存储过程:
相当于函数,四要素:输入,输出,函数名,函数体
创建:
create proc 存储过程名
参数 @a int,
@b int
as
函数体
return 值
调用:
exec 存储过程名
exec @a = 存储过程名
-----------分页查询-------------
select top 10 * from student where Sno not in(select top 20 Sno from student) --分页查询标准语句
--------------------------------------------------------------------
declare @abc nvarchar(200); --定义变量,变量名一定要带@
set @abc = 'haha'; --变量赋值,用set
select @abc = MAX(degree) from score --变量赋值,适用方式不同
select @abc --将结果映射到结果集
print @abc --将结果打印到消息
----------分支语句判断------------
declare @a int; --定义变量,变量名一定要带@
declare @b int;
select @a =2; --变量赋值
select @b =1;
if @a>@b -------标准格式-------
begin
select 'a比b大'
end
else
begin
select 'b比a大'
end
----------循环语句------------
declare @aa int;
select @aa = 1;
while @aa<=10 -------标准格式------
begin
select @aa;
select @aa = @aa+1;
end
-----------存储过程-------------
create proc JiaFa --创建一个存储过程,命名
@a int, --参数
@b int
as
return @a+@b; --返回的值
declare @ccc int; --定义一个变量
exec @ccc = JiaFa 25,10 --exec表示你要用存储过程
select @ccc --打印结果
--另一个用法
create proc SelectAll --创建一个存储过程
as
select *from Student --函数体
select *from Score
select *from Course
select *from teacher
exec SelectAll --使用这个存储过程,结果就是把上面的内容执行一边
-----------分页查询-------------
select top 10 * from student where Sno not in(select top 20 Sno from student) --分页查询标准语句
触发器:
一个特殊的存储过程,没办法直接调用它,而是通过增删改的动作来触发它
一个表的一个动作只能有一个触发器
create trigger 命名(哪个表的哪个动作)
on 表名 --针对于哪一个表写的触发器
for 动作 --针对于哪一个动作触发之后的触发器
instead of 动作 --针对于哪一个动作执行替换
as
触发器内容
------增删改后执行查询-------
create trigger users_Insert --创建触发器,命名
on users --作用于什么表
for insert --触发器作用关键词(增删改)
as
select *from users --触发器执行内容
------虽然执行删除,但是被替换了,触发器执行的是查看要删除的内容-------
create trigger No_delete
on users
instead of delete
as
select *from deleted
--------触发器与分支语句额的结合应用----------
create trigger No_delete
on users
instead of delete
as
declare @a nvarchar(200); --定义变量,变量名一定要带@
select @a =classcode from class; --变量赋值
if @a= 'c002' -------分支语句标准格式-------
begin
delete from class where classcode = 'c002'
end
else
begin
select '不能删除'
end
----------级联删除---------同时删除拥有主外键关系的两个表的数据
create trigger D_delete
on class
instead of delete
as
declare @aa nvarchar(200)
select @aa = class from delete --变量赋值
delete from student where class = @aa --删除外键表数据
delete from class where class_code = @aa --删除主键表数据