T-SQL常用语句学习汇总

--声明变量并赋值
declare @i as int;--as 可以省略
    --declare @i int;
print @i;--在没有赋值前,不会报错,输出空
set @i=3;
print @i;

--在sql server 2008之后可以对变量在声明的同时赋值
declare @ii int=3;
print @ii;

--注意:nvarchar与nchar不同,nchar是固定长度,当达不到既定长度时,用空来表示
declare @s nvarchar(20);
set @s='hello';
set @s=@s+' world';
print @s;
declare @ss nchar(20);
set @ss='hello';
set @ss=@ss+' world';
print @ss;

--select在这里只是赋值作用,不会返回查询结果
declare @now datetime;
select @now=GETDATE();
print @now;

--if条件控制
declare @minute int=datepart(HOUR,getdate());
if @minute>20
    begin --一条语句的时候,可以不需要begin end
        print @minute;
        print '睡觉';
    end
else
    print '娱乐'

--while循环控制
declare @sum int=0,@m int=0;
while @m<100
    begin 
        set @m=@m+1;
        set @sum=@sum+@m;
    end
print @sum;

--局部临时表
--在查询过程中创建临时表,并将数据插入到临时表中
select * into #tempstudent from Student;
select * from #tempstudent

--全局临时表  对所有会话都是可见的,但是当前进程如何关闭或者
--全局临时表长时间不用,那么就会被删除
select * into ##tempUsers from users where 1=0;--只创建表结构
insert into ##tempUsers select *from Users;--将表数据插入临时表


--动态sql:就是使用exec执行的字符串sql语句   不能防止sql注入漏洞攻击
declare @sql nvarchar(100);
set @sql='select * from Student';
exec (@sql);--得用()括起来,不然会报“找不到存储过程”

--存储过程
--创建存储过程------传入参数
create proc MyDemoPro
(
    --存储过程中要使用到的参数
    @StuID numeric--传入参数
)
as
--下面是执行的sql语句
select * from Student where StuID=@StuID;
exec MyDemoPro @StuID=20130523069;

--传出参数
create proc MyDemoPro2
(
    @count int output
)
as
select @count=count(*) from Student;

--执行,一定以声明一个变量,赋值给传出参数
declare @outCount int;
exec MyDemoPro2 @count=@outCount output;--等号不能写反,不然会报“必须声明标量变量”的错误
print @outCount;

--触发器:特殊的存储过程,主要是为了检索。必须依赖事件,只有当事件发生时,触动触发器。
--sql server中触发器对应两个事件 :数据操作事件和数据定义事件
--在触发器的代码里,只能访问到 inserted 和deleted 两张表.对数据进行更新的是先删除然后在插入执行的。 
--inserted表包含 insert 和update操作 之后新数据的行。
--deleted表含有 delete和update 操作之后旧数据的行。

--DML触发器
create trigger mytrigger
on student after delete
as
select *from deleted

delete from student where StuID=20130523069

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值