学习T-SQL时记录的笔记,记得并不全也不详细
declare @age intselect @age = DATEDIFF(year,stuAge,getdate()) from TbStudent where stuName = '孙悟空'if(@age>=18)begin --必须有begin..end print N'已成年'endelsebegin print N'未成年'end
declare @age int
select @age = DATEDIFF(year,stuAge,getdate()) from TbStudent where stuName = '孙悟空'
if(@age>=18)
begin --必须有begin..end
print N'已成年'
end
else
begin
print N'未成年'
declare @sum intset @sum = 0declare @i intset @i = 1while(@i <= 100)begin if(@i % 2 <> 0) begin set @sum = @sum + @i end set @i = @i + 1endprint @sum
declare @sum int
set @sum = 0
declare @i int
set @i = 1
while(@i <= 100)
if(@i % 2 <> 0)
set @sum = @sum + @i
set @i = @i + 1
print @sum
分为标量函数、表值函数(内联表值函数和多语句表值函数)
-- 语法create function 函数名([参数列表]) 可以不写参数,先写变量名再写类型returns 返回值类型asbegin-- ······函数体语句 return 返回值end
-- 语法
create function 函数名
([参数列表]) 可以不写参数,先写变量名再写类型
returns 返回值类型
as
-- ······函数体语句
return 返回值
-- 语法create function 函数名([参数名])returns tableasreturn (一条select语句)
([参数名])
returns table
return (一条select语句)
多语句表值函数可以看作是标量函数和内联表值函数的结合体
-- 语法create function 函数名([参数列表])returns 表变量名 table(表变量的字段定义)asbegin SQL return 这里啥都不写end
create function 函数名([参数列表])
returns 表变量名 table
(表变量的字段定义)
SQL
return 这里啥都不写
存储过程时存储在服务器上的一组T-SQL语句的集合,用来完成一个特定功能。 分为系统存储过程(系统自带)和自定义存储过程
-- 语法create procedure(或proc) 存储过程名(up_)[参数列表] --这里的参数列表不能使用圆括号begin 存储过程代码end
create procedure(或proc) 存储过程名(up_)
[参数列表] --这里的参数列表不能使用圆括号
存储过程代码
事务时并发控制的单位,他是用户定义的一个操作,这些操作要么都做要么都不做,不可分割。 分为:SQL Server事务和ADO.NET事务
-- 语法begin tran --开始一个事务操作commit tran --提交rollback --回滚
begin tran --开始一个事务操作
commit tran --提交
rollback --回滚
C#中使用时,通常把事务的操作封装到存储过程中
-- 语法create trigger 触发器名字on 表名after(或for) 之后触发 / instead of 之前触发 [insert/delete/update]as begin-- ······end
create trigger 触发器名字
on 表名
after(或for) 之后触发 / instead of 之前触发 [insert/delete/update]
-- ······
触发器的触发条件:insert,delete,update
create trigger tr_Bank_inserton Bankafter insertasbegin print '往Bank表中插入了记录'endcreate trigger tr_Bank_Deleteon Bankafter deleteasbegin declare @id int declare @userName nvarchar(8) declare @userMoney int select @id = id, @userMoney = userMoney, @userName = userName from deleted insert into BankBak values(@id, @userName, @userMoney)endselect * from Bankselect * from BankBakdelete from Bank where id = 3
create trigger tr_Bank_insert
on Bank
after insert
print '往Bank表中插入了记录'
create trigger tr_Bank_Delete
after delete
declare @id int
declare @userName nvarchar(8)
declare @userMoney int
select @id = id, @userMoney = userMoney, @userName = userName from deleted
insert into BankBak values(@id, @userName, @userMoney)
select * from Bank
select * from BankBak
delete from Bank where id = 3
SQL Server的触发器是表级触发器,表上一次性的多次操作只触发一次
原文链接:http://www.cnblogs.com/xueyubao/p/11494304.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728