--轉賬案例
--建立銀行戶頭表 檢查戶主金額是否大於1
create table bank
(bid int identity(1,1) primary key,
customername varchar(10),
currentmoney int check(currentmoney>0),
)insert into bank values('張三',1000)
insert into bank values('李四',1)
--未加事務之前
--張三轉1000元給李四
update bank set currentmoney=currentmoney-1000 where bid=1
update bank set currentmoney=currentmoney+1000 where bid=2
select*from bank
delete from bank
--採用事務的方式轉賬 確保資料的安全性和一致性
begin transaction
declare @errorsum int
set @errorsum=0
update bank set currentmoney=currentmoney-800 where bid=1
set @errorsum=@errorsum+@@error
update bank set currentmoney=currentmoney+800 where bid=2
set @errorsum=@errorsum+@@error
--當操作遇到錯誤時
if @errorsum<>0
begin
print'轉賬失敗,請確認後再經行下一步操作'
--事務回滾 恢復到資料原樣
rollback transaction
endelse
begin
commit transaction
endgo
select*from bank
--建立索引的語法
create [unique] [clustered|nonclustered]
index currentname
on bank (currentmoney)
--指定索引的填充比重 預設的索引頁大小是4kb x(0--100)
[with fillfactor=x]
--批量修改
update bank set customername='姓名'+customername
--使用游標
/*建立游標的語法
declare 游標名稱 cursor for select 字段 from表
*/--將學生姓名通過游標操作的方式將其一行行列印
declare stucursor cursor for select stuname from student
declare @stuname varchar(30)
--開啟游標
open stucursor
fetch next from stucursor into @stuname
while @@fetch_status=0
begin
print @stuname
fetch next from stucursor into @stuname
end--關閉游標
close stucursor
--銷毀游標 釋放資料庫伺服器資源
deallocate stucursor
--利用檢視排除表中的敏感資料
select*from bank
create view bankinfo
asselect bid,customername from bank
--使用檢視中不推薦用來增刪改操作 更多的時候用來進行查詢動作
select *from bankinfo
--刪除檢視
if exists(select *from sysobjects where name='bankinfo')
drop view bankinfo
gocreate view bankinfo as
select bid,customername from bank
看事務的sql語句
select a.sid,a.type,a.lmode,b.client info,b.machine,b.osuser from v lock a v session b where a.sid b.sid select from v session where sid 158 select fr...
精妙sql語句介紹
說明 複製表 只複製結構,源表名 a 新錶名 b sql select into b from a where 1 1 說明 拷貝表 拷貝資料,源表名 a 目標表名 b sql insert into b a,b,c select d,e,f from b sql select a.title,a....
精妙SQL語句介紹
說明 複製表 只複製結構,源表名 a 新錶名 b sql select into b from a where 1 1 說明 拷貝表 拷貝資料,源表名 a 目標表名 b sql insert into b a,b,c select d,e,f from b sql select a.title,a....