1、事務
mysql事務是用于處理操作量大、復雜性高的資料
1. 事務特性
原子性:保證每個事務所有操作要么全部完成或全部不完成,不可能停滯在中間環節;如事務在執行程序中出現錯誤,則會回滾到事務開始之前狀態,
一致性:事務開始結束后保證資料庫的完整性沒有被破壞,資料都是按照資料庫要求的規范寫入,
隔離性:資料庫允許多個事務同時對資料進行讀寫改操作,隔離性則可以防止多個事務由于交叉執行時導致資料不一致;事務中隔離分為4個級別,【出現:√ 不會出現:×】
| 臟讀 | 不可重復讀 | 幻讀 | |
| 讀未提交 | ?? | ?? | ?? |
| 讀已提交 | ?? | ?? | ?? |
| 可重復讀 | ?? | ?? | ?? |
| 串行化 | ?? | ?? | ?? |
持久性:事務提交后對資料庫中的修改則是永久性的,
2. 事務并發時出現的問題
臟讀:一個事務在處理程序中讀取了另一個未提交的事務資料,當未提交的資料提交后,最終導致資料不一致,
不可重復讀:一個事務在多次進行查詢回傳資料時,另一個事務將資料修改后提交,導致前事務資料產生不同的結果,
幻讀:A事務將資料修改完畢時,同一時間B事務新增一條資料,A事務提交后查詢發現還有一條資料沒有進行修改,好似產生幻覺一樣則為幻讀,
2、索引
索引能加快資料庫的查詢速度并高效獲取指定的資料,
-
- 優勢
- 提高資料檢索效率,降低資料庫IO成本
- 通過索引列可以對資料進行排序,降低CPU消耗
- 確保資料唯一性
- 加速表與表之間連接,實作表與表之間參照完整性
- 劣勢
- 占據磁盤空間
- 降低更新表的效率
- 優勢
1. 索引使用
創建索引
普通索引:
create index 索引名稱 on 表名(列名)
其他索引(舉例唯一索引unique):
公式:
create unique index 索引名稱 on 表名(列名)
實體:
create table Demo(id int,
name varchar(20),
sex int,
unique index Demo_id(id ASC));
洗掉索引
洗掉:
公式:
drop index 索引名 on 表名;
實體:
drop index Dmoe_id on Demo;
2. 索引型別
-
- 主鍵索引(primary key):對主鍵進行索引,主鍵不允許空值,
- 普通索引(index/key):默認型別,無限制,允許定義索引時有重復值和空值,
- 唯一索引(unique key):專注于對唯一型別資料進行索引,允許空值,
- 全文索引(full key):用于數值比較、范圍過濾、關鍵字匹配的范圍性快速查詢,
- 聯合索引:多列值組成索引,用于多列組合查詢,
3. 索引注意原則
-
- 索引不是越多越好,資料量小的表不建議添加索引
- 不建議在經常增刪改操作的表中添加索引
- 索引一般添加在需要索引的列上
3、SQL
SQL是一種結構化查詢語言,用于對資料進行插入、查詢、更新、洗掉操作來管理資料庫系統,
1. SQL優點
-
- 簡單易學,操作性強
- 大多數資料庫都支持SQL
- SQL操作資料庫時大部分的作業由DBMS來完成
2. SQL分類
-
- DDL[資料定義語言]:用于操作資料庫、表、列,常用陳述句create、alter、drop;
- DML[資料操作語言]:用于操作資料庫中資料,常用陳述句insert、update、delect;
- DCL[資料控制語言]:用于操作訪問權限和安全級別,常用陳述句grant、deny;
- DQL[資料查詢語言]:用于查詢資料,常用陳述句select;
3. SQL語法及關鍵字
-
- insert into:資料插入操作,語法為insert into 表名(列1,列2)value(值1,值2),插入時列名和值需要一一對應,
- select from:資料查詢操作,語法為select * from 表名;*則代表全部列名,可通過輸入列名來查詢特定資料,
- update set:更新操作,語法為update 表名 set 條件A where 條件B,條件A為修改條件,條件B為修改操作,
- delete from:洗掉操作,語法為delect from 表名 where 條件A,條件A為洗掉條件,
- where:用于sql中條件判斷、條件過濾等操作,
- having:類似于where,一般使用于group by之后,與where區別在于where過濾行,having過濾組,
- like:用于模糊查詢,主要只針對于“字符型”欄位,常用"_"和"%"這兩種通配符,前者充當占位符,后者代表匹配任意字符,
- order by:用于資料排序,常用ASC升序排列和DESC降序排列,
- group by:用于對欄位進行分組,
- not:用于判斷運算式真偽,類似于java語言中boolean,
- and:用于在where子句后面將多個條件結合起來,
- between:用于取兩個值之間的資料范圍,
- lnner join:內連接,多表連接時只會顯示滿足條件的資料結果,
- left join:左連接,多表連接時只會以左表為基準顯示左表全部資料,右表只會顯示對應資料,若無對應資料顯示null,
- right join:右連接,與左連接相反;多表連接時只會以右表為基準顯示左表全部資料,左表只會顯示對應資料,若無對應資料顯示null,
- in:用于嵌套陳述句查詢,常用語子查詢中,
4、資料庫設計
1. 資料庫三大范式
-
- 每個欄位具有原子性不可再分,
- 建立在第一范式的基礎上,確保資料庫表列中只保存一種資料,不可以把多種資料保存在一個資料庫表列中,
- 建立在地二范式的基礎上,資料不能存在傳遞關系,資料庫中每個欄位和主鍵都是直接關系,
2. 資料庫規范設計
-
- 系統需求分析
- 概念結構設計
- 邏輯結構設計
- 物理結構設計
- 資料庫實施
- 資料庫運維
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/423484.html
標籤:其他
