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
sqlend 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 高階應用
select from select a,b,c from a t where t.a 1 8 說明 between的用法,between限制查詢資料範圍時包括了邊界值,not between不包括 select from table1 where time between time1 and ti...
SQL高階高階
select top 50 percent from websites mysql 語法 oracle 語法 select column name s from table name limit number sql like 操作符 like 操作符用於在 where 子句中搜尋列中的指定模式。s...
SQL 基礎 高階高階
sql高階 1 top子句 top 子句用於規定要返回的記錄的數目。select top 2 from persons select top 50 percent from persons 3 萬用字元 1 通過使用 not 關鍵字,我們可以從 persons 表中選取居住在不包含 lon 的城市裡...