九 SQL server 事務 鎖與游標問題

2021-07-08 13:30:28 字數 2914 閱讀 3170

一.實驗目的

1.了解游標的基本作用,了解游標的種類;

2.了解使用游標的方法,掌握使用游標的基本步驟;

3. 掌握事務和鎖的操作技巧。

二.實驗內容

1.宣告乙個游標,用於查詢所有計算機專業的學生的學號、籍貫、和年齡;

2.建立乙個事務l

3.實現乙個鎖

三.實驗步驟:

1. 宣告乙個游標,用於查詢所有計算機系學生的學號和年齡,將宣告游標、開啟游標、使用游標、關閉游標的**全部貼上於下方:

use 學生課程資料庫

godeclare course_cur1 cursor

for select sno,sage from student

where sdept='電腦科學'

for read only

goopen course_cur1

fetch next from course_cur1

while @@fetch_status=0

begin

fetch next from course_cur1

endclose course_cur1

deallocate course_cur1

2.宣告乙個游標,用於查詢選課表(sc

表)中課程為

'1001'

的全部資訊,按分數降序排序;將宣告游標、開啟游標、使用游標、關閉游標的**全部貼上於下方;

use 學生課程資料庫

godeclare course_cur1 cursor

for select * from sc

where cno='1001'

for read only

goopen course_cur1

fetch next from course_cur1

while @@fetch_status=0

begin

fetch next from course_cur1

endclose course_cur1

deallocate course_cur1

3.顯示student

表中的學生人數,開始乙個事務,插入一條學生記錄,再顯示

student

表中的學生人數,如果學生總人數超過最大值(你自己根據測試資料來設定,如

190),回滾該事務,並顯示出錯資訊(如學生總數已滿)。

declare @renshu int

select @renshu=count(*) from student

print @renshu

begin transaction

insert into student(sno,sname,ty) values('2008056129','張麗領','true')

select @renshu=count(*) from student

if @renshu>130 --如果有錯誤

begin

print'學生總數已滿'

rollback transaction

endelse

begin

print '插入成功,提交事務,寫入硬碟,永久的儲存'

commit transaction

end

4. 利用光標的方式實現:顯示1001

課程分數最高的學生所在的系別。

use 學生課程資料庫

godeclare course_cur1 cursor

for select sdept from sc, student where grade in (select grade from sc where cno='1001')

for read only

goopen course_cur1

fetch next from course_cur1

while @@fetch_status=0

begin

fetch next from course_cur1

endclose course_cur1

deallocate course_cur1

5. 定義乙個游標cursor_famale。要求該游標返回所有女同學的基本資訊,在游標中查詢並顯示劉晨男的記錄。

use 學生課程資料庫

godeclare course_cur1 cursor

for select * from student

where s***='女'

for read only

goopen course_cur1

fetch next from course_cur1

while @@fetch_status=0

begin

fetch next from course_cur1

endclose course_cur1

deallocate course_cur1

--查詢劉晨

use 學生課程資料庫

godeclare course_cur1 cursor

for select * from student

where s***='女' and sname='劉晨'

for read only

goopen course_cur1

fetch next from course_cur1

while @@fetch_status=0

begin

fetch next from course_cur1

endclose course_cur1

deallocate course_cur1

SQL Server(十) 事務和鎖

一 事務的特性 1 原子性 事務必須是原子性的工作單元,要麼全部執行,要麼全部不執行。2 一致性 事務完成時,必須使所有資料保持一致性。3 隔離性 由併發事務所做的修改必須與其他併發事務所做的修改隔離。由於事務在開始時就會識別資料所處的狀態,以便發生錯誤時可以回滾操作,所以另乙個併發事務要麼修改它之...

mysql事務與鎖機制 mysql事務與鎖機制

在併發下事務會容易出現的一些問題 資料更新丟失 兩個事務同時操作一條資料,乙個事務因為異常導致資料更新丟失 髒讀 乙個失誤開始讀取了某行資料,另外乙個事務已經更新了此資料但沒有能夠及時提交。這是相當危險的,因為很可能所有的操作都被回滾。不可重複讀 乙個事務對同一行資料重複讀取兩次,但是卻得到了不同的...

sqlserver併發處理,鎖和事務

本文系 謝謝 另外這個也不錯 鎖的概述 一.為什麼要引入鎖 多個使用者同時對資料庫的併發操作時會帶來以下資料不一致的問題 丟失更新 a,b兩個使用者讀同一資料並進行修改,其中乙個使用者的修改結果破壞了另乙個修改的結果,比如訂票系統 髒讀 a使用者修改了資料,隨後b使用者又讀出該資料,但a使用者因為某...