Mysql事務(wù)索引知識(shí)匯總
一、事務(wù)
mysql事務(wù)是用于處理操作量大、復(fù)雜性高的數(shù)據(jù)
1. 事務(wù)特性
- 原子性:保證每個(gè)事務(wù)所有操作要么全部完成或全部不完成,不可能停滯在中間環(huán)節(jié);如事務(wù)在執(zhí)行過(guò)程中出現(xiàn)錯(cuò)誤,則會(huì)回滾到一致性:事務(wù)開(kāi)始結(jié)束后保證數(shù)據(jù)庫(kù)的完整性沒(méi)有被破壞,數(shù)據(jù)都是按照數(shù)據(jù)庫(kù)要求的規(guī)范寫入。
- 隔離性:數(shù)據(jù)庫(kù)允許多個(gè)事務(wù)同時(shí)對(duì)數(shù)據(jù)進(jìn)行讀寫改操作,隔離性則可以防止多個(gè)事務(wù)由于交叉執(zhí)行時(shí)導(dǎo)致數(shù)據(jù)不一致;事務(wù)中隔離分為4個(gè)級(jí)別?!境霈F(xiàn):√ 不會(huì)出現(xiàn):×】
臟讀 | 不可重復(fù)讀 | 幻讀 | |
讀未提交 | ?? | ?? | ?? |
讀已提交 | ?? | ?? | ?? |
可重復(fù)讀 | ?? | ?? | ?? |
串行化 | ?? | ?? | ?? |
持久性:事務(wù)提交后對(duì)數(shù)據(jù)庫(kù)中的修改則是永久性的。
2. 事務(wù)并發(fā)時(shí)出現(xiàn)的問(wèn)題
- 臟讀:一個(gè)事務(wù)在處理過(guò)程中讀取了另一個(gè)未提交的事務(wù)數(shù)據(jù),當(dāng)未提交的數(shù)據(jù)提交后,最終導(dǎo)致數(shù)據(jù)不一致。
- 不可重復(fù)讀:一個(gè)事務(wù)在多次進(jìn)行查詢返回?cái)?shù)據(jù)時(shí),另一個(gè)事務(wù)將數(shù)據(jù)修改后提交,導(dǎo)致前事務(wù)數(shù)據(jù)產(chǎn)生不同的結(jié)果。
- 幻讀:A事務(wù)將數(shù)據(jù)修改完畢時(shí),同一時(shí)間B事務(wù)新增一條數(shù)據(jù),A事務(wù)提交后查詢發(fā)現(xiàn)還有一條數(shù)據(jù)沒(méi)有進(jìn)行修改,好似產(chǎn)生幻覺(jué)一樣則為幻讀。
二、索引
索引能加快數(shù)據(jù)庫(kù)的查詢速度并高效獲取指定的數(shù)據(jù)。
優(yōu)勢(shì):
- 提高數(shù)據(jù)檢索效率,降低數(shù)據(jù)庫(kù)IO成本
- 通過(guò)索引列可以對(duì)數(shù)據(jù)進(jìn)行排序,降低CPU消耗
- 確保數(shù)據(jù)唯一性
- 加速表與表之間連接,實(shí)現(xiàn)表與表之間參照完整性
劣勢(shì):
- 占據(jù)磁盤空間
- 降低更新表的效率
1. 索引使用
? ? ? ? 創(chuàng)建索引?? ?? ? ? ? ? ? ? ? 普通索引: ? ? ? ? ? ? ? ? ? create index 索引名稱 on 表名(列名) ? ? ? ? ? ? ? 其他索引(舉例唯一索引unique): ? ? ? ? ? ? ? ? ? ? 公式: ? ? ? ? ? ? ? ? ? ? ? create unique index 索引名稱 on 表名(列名) ? ? ? ? ? ? ? ? ? 實(shí)例: ? ? ? ? ? ? ? ? ? ? ? create table Demo(id int, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? name varchar(20), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sex int, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? unique index Demo_id(id ASC)); ? ? ? ? ? ? 刪除索引 ? ? ? ? ? ? ? ? 刪除: ? ? ? ? ? ? ? ? ? ? 公式: ? ? ? ? ? ? ? ? ? ? ? ? drop index 索引名 on 表名; ? ? ? ? ? ? ? ? ? ? 實(shí)例: ? ? ? ? ? ? ? ? ? ? ? ? drop index Dmoe_id on Demo;
2. 索引類型
- 主鍵索引(primary key):對(duì)主鍵進(jìn)行索引,主鍵不允許空值。
- 普通索引(index/key):默認(rèn)類型,無(wú)限制,允許定義索引時(shí)有重復(fù)值和空值。
- 唯一索引(unique key):專注于對(duì)唯一類型數(shù)據(jù)進(jìn)行索引,允許空值。
- 全文索引(full key):用于數(shù)值比較、范圍過(guò)濾、關(guān)鍵字匹配的范圍性快速查詢。
- 聯(lián)合索引:多列值組成索引,用于多列組合查詢。
3. 索引注意原則
- 索引不是越多越好,數(shù)據(jù)量小的表不建議添加索引
- 不建議在經(jīng)常增刪改操作的表中添加索引
- 索引一般添加在需要索引的列上
三、SQL
SQL是一種結(jié)構(gòu)化查詢語(yǔ)言,用于對(duì)數(shù)據(jù)進(jìn)行插入、查詢、更新、刪除操作來(lái)管理數(shù)據(jù)庫(kù)系統(tǒng)。
1. SQL優(yōu)點(diǎn)
- 簡(jiǎn)單易學(xué),操作性強(qiáng)
- 大多數(shù)數(shù)據(jù)庫(kù)都支持SQL
- SQL操作數(shù)據(jù)庫(kù)時(shí)大部分的工作由DBMS來(lái)完成
2. SQL分類
- DDL[數(shù)據(jù)定義語(yǔ)言]:用于操作數(shù)據(jù)庫(kù)、表、列,常用語(yǔ)句create、alter、drop;
- DML[數(shù)據(jù)操作語(yǔ)言]:用于操作數(shù)據(jù)庫(kù)中數(shù)據(jù),常用語(yǔ)句insert、update、delect;
- DCL[數(shù)據(jù)控制語(yǔ)言]:用于操作訪問(wèn)權(quán)限和安全級(jí)別,常用語(yǔ)句grant、deny;
- DQL[數(shù)據(jù)查詢語(yǔ)言]:用于查詢數(shù)據(jù),常用語(yǔ)句select;
3. SQL語(yǔ)法及關(guān)鍵字
insert into
:數(shù)據(jù)插入操作,語(yǔ)法為insert into 表名(列1,列2)value(值1,值2),插入時(shí)列名和值需要一一對(duì)應(yīng)。select from
:數(shù)據(jù)查詢操作,語(yǔ)法為select * from 表名;*則代表全部列名,可通過(guò)輸入列名來(lái)查詢特定數(shù)據(jù)。update set
:更新操作,語(yǔ)法為update 表名 set 條件A where 條件B,條件A為修改條件,條件B為修改操作。delete from
:刪除操作,語(yǔ)法為delect from 表名 where 條件A,條件A為刪除條件。where
:用于sql中條件判斷、條件過(guò)濾等操作。having
:類似于where,一般使用于group by之后,與where區(qū)別在于where過(guò)濾行,having過(guò)濾組。like
:用于模糊查詢,主要只針對(duì)于“字符型”字段,常用"_"和"%"這兩種通配符,前者充當(dāng)占位符,后者代表匹配任意字符。order by
:用于數(shù)據(jù)排序,常用ASC升序排列和DESC降序排列。group by
:用于對(duì)字段進(jìn)行分組。not
:用于判斷表達(dá)式真假,類似于java語(yǔ)言中boolean。and
:用于在where子句后面將多個(gè)條件結(jié)合起來(lái)。between
:用于取兩個(gè)值之間的數(shù)據(jù)范圍。lnner join
:內(nèi)連接,多表連接時(shí)只會(huì)顯示滿足條件的數(shù)據(jù)結(jié)果。left join
:左連接,多表連接時(shí)只會(huì)以左表為基準(zhǔn)顯示左表全部數(shù)據(jù),右表只會(huì)顯示對(duì)應(yīng)數(shù)據(jù),若無(wú)對(duì)應(yīng)數(shù)據(jù)顯示null。right join
:右連接,與左連接相反;多表連接時(shí)只會(huì)以右表為基準(zhǔn)顯示左表全部數(shù)據(jù),左表只會(huì)顯示對(duì)應(yīng)數(shù)據(jù),若無(wú)對(duì)應(yīng)數(shù)據(jù)顯示null。in
:用于嵌套語(yǔ)句查詢,常用語(yǔ)子查詢中。
四、數(shù)據(jù)庫(kù)設(shè)計(jì)
1. 數(shù)據(jù)庫(kù)三大范式
- 每個(gè)字段具有原子性不可再分。
- 建立在第一范式的基礎(chǔ)上,確保數(shù)據(jù)庫(kù)表列中只保存一種數(shù)據(jù),不可以把多種數(shù)據(jù)保存在一個(gè)數(shù)據(jù)庫(kù)表列中。
- 建立在地二范式的基礎(chǔ)上,數(shù)據(jù)不能存在傳遞關(guān)系,數(shù)據(jù)庫(kù)中每個(gè)字段和主鍵都是直接關(guān)系。
2. 數(shù)據(jù)庫(kù)規(guī)范設(shè)計(jì)
- 系統(tǒng)需求分析
- 概念結(jié)構(gòu)設(shè)計(jì)
- 邏輯結(jié)構(gòu)設(shè)計(jì)
- 物理結(jié)構(gòu)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)實(shí)施
- 數(shù)據(jù)庫(kù)運(yùn)維
到此這篇關(guān)于Mysql事務(wù)索引知識(shí)匯總的文章就介紹到這了,更多相關(guān)Mysql事務(wù)索引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CentOS7版本安裝Mysql8.0.20版本數(shù)據(jù)庫(kù)的詳細(xì)教程
這篇文章主要介紹了CentOS7版本安裝Mysql8.0.20版本數(shù)據(jù)庫(kù)的教程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05MySQL使用show?effective?grants查看權(quán)限官方解讀
這篇文章主要為大家介紹了MySQL使用show?effective?grants查看權(quán)限,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07MySQL數(shù)據(jù)庫(kù)必備之條件查詢語(yǔ)句
當(dāng)用戶查看表格的大量數(shù)據(jù)是,由于數(shù)據(jù)量過(guò)于巨大會(huì)導(dǎo)致很難獲取到需要的數(shù)據(jù),在這時(shí),就需要一個(gè)方法,一個(gè)可以通過(guò)用戶輸入獲取到用戶需要的數(shù)據(jù)并回填入表格,這就是條件查詢的作用2021-10-10SQL使用復(fù)合索引實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢的優(yōu)化
這篇文章主要介紹了SQL使用復(fù)合索引實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢的優(yōu)化,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05Mysql如何解決1251 client does not support問(wèn)題
這篇文章主要介紹了Mysql如何解決1251 client does not support問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09