Basic syntax for SQL Server programming

Source: Internet
Author: User
Tags scalar

 

first, define variables

--简单赋值

declare@aint

set@a=5

print @a

--使用select语句赋值

declare@user1 nvarchar(50)

select@user1=‘张三‘

print @user1

declare@user2 nvarchar(50)

select@user2 = Name from ST_User whereID=1

print @user2

--使用update语句赋值

declare@user3 nvarchar(50)

updateST_User set @user3 = Name whereID=1

print @user3

Second, table, temporary table, table variable

--创建临时表1

createtable#DU_User1

(

     [ID] [intNOTNULL,

     [Oid] [int]NOTNULL,

     [Login] [nvarchar](50)NOTNULL,

     [Rtx] [nvarchar](4)NOTNULL,

     [Name] [nvarchar](5)NOTNULL,

     [Password] [nvarchar](max)NULL,

     [State] [nvarchar](8)NOTNULL

);

--向临时表1插入一条记录

insertinto #DU_User1 (ID,Oid,[Login],Rtx,Name,[Password],State)values(100,2,‘LS‘,‘0000‘,‘临时‘,‘321‘,‘特殊‘);

--从ST_User查询数据,填充至新生成的临时表

select* into #DU_User2 from ST_User whereID<8

--查询并联合两临时表

select* from #DU_User2 where ID<3 union select * from#DU_User1

--删除两临时表

droptable#DU_User1

droptable#DU_User2

--创建临时表

CREATETABLE#t

(

    [ID] [int]NOTNULL,

    [Oid] [int]NOTNULL,

    [Login] [nvarchar](50)NOTNULL,

    [Rtx] [nvarchar](4)NOTNULL,

    [Name] [nvarchar](5)NOTNULL,

    [Password] [nvarchar](max)NULL,

    [State] [nvarchar](8)NOTNULL,

)

--将查询结果集(多条数据)插入临时表

insertinto #t select * fromST_User

--不能这样插入

--select * into #t from dbo.ST_User

--添加一列,为int型自增长子段

altertable #t add [myid] int NOT NULLIDENTITY(1,1)

--添加一列,默认填充全球唯一标识

altertable #t add [myid1] uniqueidentifier NOT NULLdefault(newid())

select* from#t

droptable#t

--给查询结果集增加自增长列

--无主键时:

selectIDENTITY(int,1,1)as ID, Name,[Login],[Password] into #t fromST_User

select* from#t

--有主键时:

select(select SUM(1) from ST_User where ID<= a.ID) as myID,* from ST_User aorder bymyID

--定义表变量

declare@ttable

(

    idint notnull,

    msg nvarchar(50)null

)

insertinto @tvalues(1,‘1‘)

insertinto @tvalues(2,‘2‘)

select* from@t

Third, circulation

--while循环计算1到100的和

declare@aint

declare@sumint

set@a=1

set@sum=0

while @a<=100

begin

    set@sum[email protected]

    set@a+=1

end

print @sum

Iv. conditional statements

--if,else条件分支

if(1+1=2)

begin

    print‘对‘

end

else

begin

    print‘错‘

end

--when then条件分支

declare@todayint

declare@week nvarchar(3)

set@today=3

set@week=case

    when@today=1 then‘星期一‘

    when@today=2 then‘星期二‘

    when@today=3 then‘星期三‘

    when@today=4 then‘星期四‘

    when@today=5 then‘星期五‘

    when@today=6 then‘星期六‘

    when@today=7 then‘星期日‘

    else‘值错误‘

end

print @week

V. Cursors

declare@IDint

declare@Oidint

declare@Loginvarchar(50)

--定义一个游标

declareuser_cur cursor for select ID,Oid,[Login] fromST_User

--打开游标

openuser_cur

while @@fetch_status=0

begin

--读取游标

    fetchnext from user_cur into@ID,@Oid,@Login

    print @ID

    --print @Login

end

closeuser_cur

--摧毁游标

deallocateuser_cur

VI. triggers

Temporary tables in triggers:

Inserted data stored for INSERT and update operations Deleted the data before the delete and update operations

--创建触发器

CreatetriggerUser_OnUpdate

    OnST_User

    forUpdate

As

    declare@msg nvarchar(50)

    [email protected]记录修改情况

    select@msg = N‘姓名从“‘ + Deleted.Name + N‘”修改为“‘ + Inserted.Name + ‘”‘ fromInserted,Deleted

    --插入日志表

    insertinto[LOG](MSG)values(@msg)

    

--删除触发器

droptriggerUser_OnUpdate

Vii. Stored Procedures

--创建带output参数的存储过程

CREATEPROCEDUREPR_Sum

    @aint,

    @bint,

    @sumintoutput

AS

BEGIN

    set@sum[email protected][email protected]

END

--创建Return返回值存储过程

CREATEPROCEDUREPR_Sum2

    @aint,

    @bint

AS

BEGIN

    Return@[email protected]

END

    

--执行存储过程获取output型返回值

declare@mysumint

executePR_Sum 1,2,@mysumoutput

print @mysum

--执行存储过程获取Return型返回值

declare@mysum2int

execute@mysum2= PR_Sum2 1,2

print @mysum2

Eight, custom functions

Classification of functions:

1) Scalar value function

2) Table-valued function

A: Inline table-valued functions

B: Multi-statement table-valued functions

3) System functions

--新建标量值函数

createfunctionFUNC_Sum1

(

    @aint,

    @bint

)

returnsint

as

begin

    return@[email protected]

end

--新建内联表值函数

createfunctionFUNC_UserTab_1

(

    @myIdint

)

returnstable

as

return(select * from ST_User whereID<@myId)

--新建多语句表值函数

createfunctionFUNC_UserTab_2

(

    @myIdint

)

returns@ttable

(

    [ID] [int]NOTNULL,

    [Oid] [int]NOTNULL,

    [Login] [nvarchar](50)NOTNULL,

    [Rtx] [nvarchar](4)NOTNULL,

    [Name] [nvarchar](5)NOTNULL,

    [Password] [nvarchar](max)NULL,

    [State] [nvarchar](8)NOTNULL

)

as

begin

    insertinto @t select * from ST_User whereID<@myId

    return

end

--调用表值函数

select* fromdbo.FUNC_UserTab_1(15)

--调用标量值函数

declare@sint

set@s=dbo.FUNC_Sum1(100,50)

print @s

--删除标量值函数

dropfunctionFUNC_Sum1

Talk about the differences between custom functions and stored procedures:

One, Custom function:

1. You can return table variables

2. There are a lot of restrictions, including

Output parameters cannot be used;

Temporary tables cannot be used;

The operation inside the function cannot affect the external environment;

Cannot return result set through select;

Not update,delete, database tables;

3. Must return a scalar value or table variable

Custom functions are generally used in a high degree of reuse, simple function, the fight against the strong place.

Second, the stored procedure

1. Cannot return table variable

2. Fewer restrictions, you can perform operations on database tables, you can return datasets

3. You can return a scalar value, or you can omit the return

Stored procedures are generally used in the implementation of complex functions, data manipulation.

[Reprint study]?

Basic syntax for SQL Server programming

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.