數據庫SQL特點數據查詢,數據操縱,數據定義,數據控制,建立索引, 事務acid,數據庫隔離級別


數據查詢(DQL):select

數據定義(DDL):create,drop,alter

數據操縱(DML):insert,update,delete

數據控制(DCL):grant,revoke

1)建立索引(索引是B+樹實現的)(提高查詢效率,加快表與表之間的連接,建立需要存儲空間)

普通索引

create index stusex on student(ssex);
create index stusexandname on student(ssex,sname);//多列的

唯一索引

create unique index stusno on student(sno);

刪除索引

drop index stusno on student;

顯示索引

show index from student;

2)創建表,修改表

create table xxx
(xno int(5) primary key,
xname char(20) not null unique,
xscore int(5) default 6);
alter table xxx
add xsex char(66);

 事務acid

  • 原子性(Atomicity):事務中包含的操作集合,要么全部操作執行完成,要么全部都不執行。即當事務執行過程中,發生了某些異常情況,如系統崩潰、執行出錯,則需要對已執行的操作進行回滾,清除所有執行痕跡。
  • 一致性(Consistency):事務執行前和事務執行后,數據庫的完整性約束不被破壞。即事務的執行是從一個有效狀態轉移到另一個有效狀態。
  • 隔離性(Isolation):多個事務並發執行時,彼此之間不應該存在相互影響。隔離程度不是絕對的,每個數據庫都提供有自己的隔離級別,每個數據庫的默認隔離級別也不盡相同。
  • 持久性(Durability):事務正常執行完畢后,對數據庫的修改是永久性的。即事務的修改操作已經記錄到了存儲介質中。
  • 隔離級別:未提交讀、提交讀、可重復讀、可串行化

  • 未提交讀(Read Uncommitted):一個事務過程中可以讀取到其他事務對數據的未提交修改。即事務的修改階段未加排他鎖,對其他事務可見。例如事務 T1可能讀取到只是事務 T2 中某一步的修改狀態,即存在臟讀的現象。

臟讀指的是,事務讀取到的數據可能是不正確、不合理或者處於非法狀態的數據,例如在事務T1讀取后,事務T2可能又對數據做了修改,或者事務T2中某些操作違反了一致性約束,作了回滾操作,該情況下事務T1讀取到的數據稱之為臟數據,該行為稱之為臟讀。

  • 提交讀(Read Committed):一個事務過程中只能讀取到其他事務對數據的提交后修改。即事務的修改階段加了排它鎖,直到事務結束才釋放,執行讀命令那一刻加了共享鎖,讀完即釋放,以此維持事務修改階段對其他事務的不可見。例如事務T1讀取到的只能是事務T2提交完成后的狀態。該隔離級別避免了臟讀現象,但正是由於事務T1可能讀取到的是事務T2修改完成后的數據,以致出現了不可重復讀現象。

不可重復讀指的是,對於同一個事務的前后兩次讀取操作,讀取到的內容不同。例如在事務T1讀取操作后,事務T2可能對數據做了修改,事務T2修改完成提交后,事務T1又做了讀取操作,因為內容已被修改,導致讀取到的內容與上一次不同,即存在不可重復讀現象。

  • 可重復讀(Repeatable Reads):一個事務過程中不允許其他事務對數據進行修改。即事務的讀取過程加了共享鎖,事務的修改過程加了排它鎖,並一直維持鎖定狀態直到事務結束。因為事務的讀取或修改都需要維持整個階段的鎖定狀態,所以避免了臟讀和不可重復讀現象。但是因為只對現有的記錄上進行了鎖定,並未維持間隙鎖/范圍鎖,導致某些數據記錄的插入未受阻攔,即存在幻讀現象。

幻讀指的是,事務中前后相同的查詢語句,返回的結果集不同。例如在事務T1查詢表記錄后,事務T2向表中增加了一條記錄,當事務T1再次執行相同的查詢時,返回的結果集可能不同,即存在幻讀現象。

  • 可串行化(Serializable):一個事務過程中不允許其他事務對指定范圍數據進行修改。即事務過程中若指定了操作集合的范圍,則在可重復讀的鎖基礎上增加了對操作集合的范圍鎖,通過增加范圍鎖避免了幻讀現象。

參考:https://www.jianshu.com/p/f3605aacf7cf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM