在mysql中
將一組有序的增刪改操作看做乙個獨立的執行單元,當這一組所有的操作都成功,事務執行成功,如果其中有乙個操作失敗,事務執行回滾。mysql 事務主要用於處理操作量大,複雜度高的資料。
注意:一般來說,事務是必須滿足4個條件(acid):原子性(atomicity)、一致性(consistency)、隔離性(isolation)、永續性(durability)。
事務的回滾:即恢復到事務開始之前的狀態。
如果不考慮事務的隔離性的話,可能會發生的狀態:
在事務之中有四種隔離級別:
讀未提交(read uncommitted):最低的隔離級別,可能會發生任何情況
讀已提交(read committed):可以避免髒讀
可重複讀(repeatable read):可以避免髒讀和幻讀
序列化(serializable):最高隔離級別,可以避免任何情況發生
事務的隔離級別越高其效率也就越低。
事務的控制語句:
在mysql中事務處理主要有兩種方法:
1、用 begin, rollback, commit來實現
2、直接用 set 來改變 mysql 的自動提交模式:
注:在 mysql 命令列的預設設定下,事務都是自動提交的,即執行 sql 語句後就會馬上執行 commit 操作。因此要顯式地開啟乙個事務務須使用命令 begin 或 start transaction,或者執行命令 set autocommit=0,用來禁止使用當前會話的自動提交。
在關係型資料庫中存在三大正規化和乙個反正規化:
第一正規化:字段具有原子性。
第二正規化:基於第一正規化,表中的所有資料都要依賴於主鍵。
第三正規化:基於第二正規化,主要是描述多表之間的關係,一張表中不能儲存另一張表的非主鍵的值,以避免冗餘。
反正規化:允許部分字段冗餘 ,降低資料庫查詢的複雜度,提公升查詢效率。
MYSQL三大正規化
第一正規化 確保每列的原子性.如果每列 或者每個屬性 都是不可再分的最小資料單元 也稱為最小的原子單元 則滿足第一正規化.例如 顧客表 姓名 編號 位址 其中 位址 列還可以細分為國家 省 市 區等。第二正規化 在第一正規化的基礎上更進一層,目標是確保表中的每列都和主鍵相關.如果乙個關係滿足第一正規...
MySQL三大正規化
資料庫 的三個正規化 指的是什麼呢?即 屬性唯一,記錄唯一,表唯一。下面我們用一張關係圖來三者之間的關係。第一正規化 1nf 資料庫表中的字段的 屬性都是單一的,不可再分。這個單一屬性由哪些型別組成呢?主要是基本型別構成,包括整型 實數 字元型 邏輯型 日期型等。第二正規化 2nf 資料庫表 中不存...
mysql三大正規化
1.第一正規化 確保資料表中每列 字段 的原子性。如果資料表中每個欄位都是不可再分的最小資料單元,則滿足第一正規化。例如 user使用者表,包含欄位id,username,password 2.第二正規化 在第一正規化的基礎上更進一步,目標是確保表中的每列都和主鍵相關。如果乙個關係滿足第一正規化,並...