码迷,mamicode.com
首页 > 数据库 > 详细

SQL高级应用

时间:2020-01-20 22:34:52      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:tran   from   注意   llb   col   employee   update   pen   cmd   

1、游标的使用
Select\delete \update\insert into 表 selct*from

定义游标,让游标指向sql查询的结果
declare demoCursor Cursor for select 列名1,列名2,列名3 from 表名
open demoCursor
declare @UserName nvarchar(32)
declare @UserId int
declare @UserAge int

fetch next from demoCursor into
@UserName,
@UserName,
@UserName


close demoCursor
deallocate domeCursor--释放游标

2、视图
把一个查询结果作为虚拟表 提供给开发人员使用

create View VW_UserInfo as
select *from UserInfo where UserAge>40

视图的使用:
select*from VW_UserInfo 视图可以直接当表用

3、临时表

用#修饰临时表
crete table #testTb
(
Id int identity(1,1) primary key not null,
Name nvarchar(32) null

)
--临时表的使用和普通表一样。
select*from #TestTb

--临时表用完之后一定要:释放掉临时表
drop table #TestTb

临时表的用法:
select *into #Tb from Userinfo
select *from #Tb
drop table #Tb

临时表多用于高并发的情况的优化

数据库:锁概念
锁的级别:X:排它锁 S:共享锁

insert update delete 会在表上加 X
select 在表上添加 S锁。

多表连接:
select * from Employee as E
left join Position as P on E.PositionId = p.PositionId7

4、 sql异常处理
begin try
sql…
end try
begin catch
sql
end catch


5、事务

begin transaction 开启事务

conmit transaction 提交事务

rollback transaction 回滚事务

事务AdoNet实现:
SqlTransaction trans = conn.BeginTransaction();
注意:cmd.Transaction = trans;应该将事务对象初始化命令。

6、系统存储过程
exec sp_databases
exec sp_tables
exec sp_columns ‘UserInfo‘

动态执行SQL脚本:

declare @strSql nvarchar(max)
set @strSql =‘select * from UserInfo‘
exec (@strSql)

SQL高级应用

标签:tran   from   注意   llb   col   employee   update   pen   cmd   

原文地址:https://www.cnblogs.com/Mr-Prince/p/12219577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!