1、SQLServer数据库编程基本语法汇总一、定义变量-简单赋值declare aintset a=5print a-使用 select 语句赋值declare user1 nvarchar ( 50)select user1= 张三 print user1declare user2 nvarchar ( 50)select user2 = Name from ST_Userprint user2where ID =1-使用 update 语句赋值declare user3 nvarchar ( 50)update ST_User set user3 = Name where ID =1prin
2、t user3二、表、临时表、表变量-创建临时表 1create table #DU_User1(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);-向临时表 1 插入一条记录insert into #DU_User1 (ID,Oid, Login ,Rtx,Name, Password ,State)v
3、alues ( 100, 2, LS , 0000 , 临时 , 321 , 特殊 );-从 ST_User 查询数据,填充至新生成的临时表select * into #DU_User2 from ST_User where ID 8-查询并联合两临时表select * from #DU_User2 where ID 3 union select * from #DU_User1-删除两临时表drop table #DU_User1drop table #DU_User2-创建临时表CREATETABLE#t(ID int NOTNULL,Oid int NOTNULL,Login nvarc
4、har ( 50) NOTNULL,Rtx nvarchar ( 4) NOTNULL,Name nvarchar ( 5) NOTNULL,Password nvarchar ( max) NULL,State nvarchar ( 8) NOTNULL,)-将查询结果集 ( 多条数据 ) 插入临时表insert into #t select * from ST_User-不能这样插入-select * into #t from dbo.ST_User-添加一列,为 int 型自增长子段alter table #t add myid int NOTNULL IDENTITY( 1, 1)-添
5、加一列,默认填充全球唯一标识alter table #t add myid1 uniqueidentifier NOTNULLdefault ( newid()select * from #tdrop table #t-给查询结果集增加自增长列-无主键时:select IDENTITY( int , 1, 1) as ID, Name,Login , Password into #t from ST_Userselect * from #t-有主键时:select ( select SUM( 1) from ST_User where ID = a.ID)ST_User a order by
6、myIDas myID, * from-定义表变量declaret table(id intnotnull ,msg nvarchar ( 50) null)insertintot values ( 1, 1)insertintot values ( 2, 2)select* from t三、循环-while 循环计算 1 到 100 的和declare aintdeclare sumintset a=1set sum=0while a=100beginset sum+=aset a+=1endprint sum四、条件语句-if,else 条件分支if ( 1+1=2)beginprint
7、对endelsebeginprint 错end-when then 条件分支declare today intdeclare weeknvarchar ( 3)set today=3set week=casewhen 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 值错误 endprint week五、游标declare ID intde
8、clare Oidintdeclare Login varchar ( 50)-定义一个游标declare user_cur cursor for select ID,Oid, Login from ST_User-打开游标open user_curwhile fetch_status =0begin-读取游标fetch next from user_cur into ID, Oid, Loginprint ID-print Loginendclose user_cur-摧毁游标deallocate user_cur六、触发器触发器中的临时表:Inserted存放进行 insert 和 upd
9、ate 操作后的数据Deleted存放进行 delete 和 update 操作前的数据-创建触发器Create trigger User_OnUpdateOnST_Userfor UpdateAsdeclare msgnvarchar ( 50)-msg记录修改情况select msg= N 姓名从“ + Deleted.Name + N ”修改为“ + Inserted.Name + ” from Inserted,Deleted-插入日志表insert into LOG(MSG)values ( msg)-删除触发器drop trigger User_OnUpdate七、存储过程- 创建
10、带 output 参数的存储过程CREATEPROCEDURE_Sumaint ,bint ,sumint outputASBEGINset sum=a+bEND-创建 Return 返回值存储过程CREATEPROCEDURE_Sum2aint ,bintASBEGINReturn a+bEND-执行存储过程获取 output 型返回值declare mysumintexecute PR_Sum1, 2, mysumoutputprint mysum- 执行存储过程获取 Return 型返回值declare mysum2intexecute mysum2= PR_Sum21, 2print
11、mysum2八、自定义函数函数的分类:1)标量值函数2)表值函数a: 内联表值函数b: 多语句表值函数3)系统函数-新建标量值函数create function FUNC_Sum1(aint ,bint)returns intasbeginreturn a+bend-新建内联表值函数create function FUNC_UserTab_1(myIdint)returns tableasreturn ( select * from ST_User where ID myId)-新建多语句表值函数create function FUNC_UserTab_2(myIdint)returns t
12、table(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)asbegininsert into t select * from ST_User where ID myIdreturnend-调用表值函数select * from dbo.FUNC_UserTab_1(15)-调用标量值函数declare
13、 sintset s=dbo.FUNC_Sum100,( 50)print s-删除标量值函数drop function FUNC_Sum1谈谈自定义函数与存储过程的区别:一、自定义函数:1.可以返回表变量2.限制颇多,包括不能使用 output 参数 ;不能用临时表 ;函数内部的操作不能影响到外部环境 ;不能通过 select 返回结果集 ;不能 update ,delete ,数据库表 ;3.必须 return 一个标量值或表变量自定义函数一般用在复用度高,功能简单单一,争对性强的地方。二、存储过程1.不能返回表变量2.限制少,可以执行对数据库表的操作,可以返回数据集3.可以 return 一个标量值,也可以省略 return存储过程一般用在实现复杂的功能,数据操纵方面。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1