首页 > 数据库技术 > 详细

SQL Server 基础语法

时间:2019-02-19 14:11:32      阅读:210      评论:0      收藏:0      [点我收藏+]

一、定义变量及赋值

1.1 普通变量

--定义变量
declare @parameter_set int
declare @parameter_select varchar(20)
declare @parameter_update varchar(20)
--set 关键字赋值
set @parameter_set = 1;
--select 赋值
select @parameter_select = ‘‘;
select @parameter_select = Name from Member where Account = ‘‘
--update 赋值
update Member set @parameter_update = Name where ID=‘‘;

 1.2 表变量,赋值和临时表

--定义表变量
declare @tab table(
    Id varchar(36) not null,
    Name varchar(10) null
)
--赋值
insert into @tab values(123,312);
insert into @tab select ID,Name from Member;
--创建临时表
--# 表示局部的生命周期临时表
create table #table_1(
    Id varchar(36) not null,
    Name varchar(10) null
)
--## 表示全局的生命周期临时表
create table ##table_2(
    Id varchar(36) not null,
    Name varchar(10) null
)
--赋值
insert into #table_1(Id,Name) values(123,312);
insert into ##table_2 select ID,Name from Member;

二、条件、循环、分支语句、异常处理

2.1 条件 if else

if(10>2)
    begin
        print(true);
    end
else
    begin
        print(false);
    end

2.2 循环 while

declare @num int
declare @sum int
set @num=1 
set @sum=0 
while(@num<=10)
    begin
        set @sum+=@num 
        set @num+=1 
    end
print @sum

2.3 分支 case when then else

declare @case_value int
declare @result varchar(10)
set @result = case
                when @case_value = 1 then 1
                when @case_value = 2 then 2
                when @case_value = 3 then 3
                when @case_value = 4 then 4
                else0
              end
print @result

2.4 异常处理try catch

begin try
    declare @try_int int;
    set @try_int = 1 / 0;
    print(1);
end try
begin catch
--这几个函数只能用在Catch里面!
    print(error_number());print(error_severity());
    print(error_state());print(error_procedure());
    print(error_line());print(error_message());
end catch

三、定义存储过程、函数、触发器、事务

3.1 存储过程

技术分享图片
--基本语法
create procedure p1
as 
begin 
    print(执行过程);
end
go
--带参数
create procedure p2
    @parameter_1 int
as 
begin 
    print(@parameter_1);
end
--调用
execute p2 1
go
--带返回值
--返回带有output关键字的参数
-- output 可以有多个
create procedure p3
    @parameter_1 int,
    @parameter_out int output,
    @parameter_out_1 int output
as 
begin 
    set @parameter_out = @parameter_1 + 1
    set @parameter_out_1 = 10
end
--调用
declare @r1 int
declare @r2 int
execute p3 1,@r1 output,@r2 output;
print @r1
print @r2
go
--用return返回结果
create procedure p4
    @parameter_1 int
as 
begin 
    return @parameter_1 + 1;
end
--调用
declare @result int
execute @result = p4 10
print @result
go
View Code

3.2 函数

a.  标量值函数

技术分享图片
--创建标量值函数
create function func_1(@func_parameter_1 int,@func_parameter_2 int)
returns int
as 
begin 
    return 1
end
View Code

b.  内联表值函数

技术分享图片
--内联表值函数
create function func_2 (@parameter_id varchar(36)) 
returns table
as
return (select * from Member where ID = @parameter_id) 
View Code

c.  多语句表值函数

技术分享图片
--多语句表值函数
create function func_3(@parameter_id varchar(36))
returns @tab_1 table(
    ID varchar(36),
    Name varchar(10)
)
as
begin
    insert into @tab_1(ID,Name) select ID,Name from Member where ID = @parameter_id
    return
end
View Code

3.3 触发器

--基本语法
create trigger Trigger_Name
on TableName for type --type:insert,update,delete 
as
--执行逻辑

a. insert 触发器获取当前值

create trigger Member_Inserts
on Member for insert
as
declare @id varchar(36)
select @id = id from inserted;
insert into Member(ID,Sex) values(@id+insert,0);

b. update 触发器获取修改前的值和修改后的值:update操作等于先删除记录,再插入新的记录

create trigger Member_Updates
on Member for update
as
declare @idnew varchar(36);
declare @idold varchar(36);
select @idnew = id from inserted;--inserted在修改时存放的新值的临时表
select @idold = id from deleted;--deleted在修改时存放的旧值的临时表
insert into Member(ID,Sex) values(@idnew+new,0);
insert into Member(ID,Sex) values(@idold+old,0);

3.4 事务

--基础语法
begin tran
    if(@@ERROR <> 0) 
        begin
            rollback tran;
        end
commit tran

SQL Server 基础语法

原文:https://www.cnblogs.com/haosit/p/10398677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!