第六章(管理數據庫事務)

這兩天週末,各類事情都來,一個玩得很好的學長回來了。而後個人一個室友過生請吃飯,咱們都是自主燒烤,因此週末就顯得有點忙。最重要的是,我感冒發燒了,吃啥都沒胃口。數據庫

複習的有點怠慢。安全


 

先複習一下代碼,看看憑記憶記住的併發

select * from List
where NickName is null;

select * from List
where NickName is not null;

select * from List
where Age in (34,13);

select * from List
where Age>10 and Age<34;

select * from List
where Age between 20 and 40;

select Age , COUNT(*) from List
group by Age;    --分組 顯示年齡

--聚合函數 max min avg sum 不能出如今where當中 必須使用Having
select Age , COUNT(*) from List
group by Age
Having COUNT(*)>1;
-- Having是對分組後丶信息經行過濾 能用的列和select的列是同樣的  5數據分組

select top 3 * from List
order by Age DESC;

select top 3 ID  from List
order by Age DESC;

select top 3 * from List
where ID not in (select top 3 ID  from List
order by Age DESC)
order by Age;

select Age,ID,Name from List with(nolock); 
--with(nolock)其目的就是查詢是不鎖定表,
--從而達到提升查詢速度的目的。
--1:數據量特別大的表,犧牲數據安全性來提高性能是能夠考慮的;
--2:容許出現髒讀現象的業務邏輯,反之一些數據完整性要求比較嚴格的場景就不合適了,像金融方面等。
--3:數據不常常修改的表,這樣會省於鎖定表的時間來大大加快查詢速度。
--四、當使用NoLock時,它容許閱讀那些已經修改可是尚未交易完成的數據。
--所以若是有須要考慮transaction事務數據的實時完整性時,使用WITH (NOLOCK)就要好好考慮一下。

select Age,ID,Name,ROW_NUMBER()
 over(order by Age DESC)as 字段編號 
from List with(nolock);

事務(transaction)的概念是對數據庫執行的一個操做單位。事務4大屬性:
1   原子性(Atomicity):事務是一個完整的操做。
2   一致性(Consistency):當事務完成時,數據必須處於一致狀態。
3   隔離性(Isolation):對數據進行修改的全部併發事務是彼此隔離的。
4   持久性(Durability):事務完成後,它對於系統的影響是永久性的。函數

它包含了3個基本操做命令:(1):Commit 提交 (2):Rollback  (3)SavePoint性能

只是瞭解了Commit命令,因此就單說一下對它的認識。COMMIT命令用於把事務所作的修改保存到數據庫,它把上一個COMMIT或ROLLBACK命令以後的所有事務都保存到數據庫。用commit 這個命令,能夠很好的預防 您有時辛辛苦苦對數據進行的操做,最後卻未寫入SQL後臺,這樣工做效率就下降了。在SqlServer中須要使用這種格式spa

begin transaction;
insert into emp(empno,ename) values(2,'dan');
commit transaction;

Rollback是針對事務的,你若是沒有在執行語句以前開啓事務,那麼沒法rollback;code

1 --開啓事務
2 begin tran
3 --執行操做
4 update Accounts_UsersExp set TelPhone=123456 where userid=14
5 --執行錯誤事務回滾
6 rollback
7 --若是正確進行事務提交
8 commit

一套帶走的。blog

相關文章
相關標籤/搜索