亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySql中的存儲(chǔ)引擎和索引

 更新時(shí)間:2022年08月03日 08:25:31   作者:面屏思過(guò)???????  
這篇文章主要介紹了MySql中的存儲(chǔ)引擎和索引,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

一、MySql的邏輯結(jié)構(gòu)

MySQL體系結(jié)構(gòu)分為四層:分別是連接層、服務(wù)層、存儲(chǔ)引擎層、系統(tǒng)文件層。

  • 連接層又稱為客戶端連接器(Client Connectors):提供與MySQL服務(wù)器建立的支持。連接池:管理、緩沖用戶的連接,線程處理等需要緩存的需求。
  • 服務(wù)層是MySQL Server的核心:主要包含系統(tǒng)管理和控制工具、SQL接口、解析器、查詢優(yōu)化器、緩存。
  • 存儲(chǔ)引擎層:負(fù)責(zé)MySQL中數(shù)據(jù)的存儲(chǔ)與提取,與底層系統(tǒng)文件進(jìn)行交互。MySQL存儲(chǔ)引擎是插件式的,不同的存儲(chǔ)引擎具備不同的功能,可以根據(jù)自己的需要進(jìn)行選擇,最常見的是MyISAM和InnoDB。插件式存儲(chǔ)引擎:管理和操作數(shù)據(jù)的一種機(jī)制,包括(存儲(chǔ)數(shù)據(jù)、如何更新、查詢數(shù)據(jù)等)
  • 系統(tǒng)文件層:將數(shù)據(jù)庫(kù)的數(shù)據(jù)和日志存儲(chǔ)在文件系統(tǒng)之上,并完成與存儲(chǔ)引擎的交互,是文件的物理存儲(chǔ)層。主要包含日志文件(redolog,undo.log),數(shù)據(jù)文件,索引文件,二進(jìn)制日志,錯(cuò)誤日志,配置文件,pid 文件,socket 文件等。

二、什么是存儲(chǔ)引擎

MySql數(shù)據(jù)庫(kù)使用不同的機(jī)制存取表文件,有不同的存儲(chǔ)方式,索引技巧,鎖定水平且廣泛的功能和能力。將這些不同的技術(shù)及配套的功能稱為存儲(chǔ)引擎。

MySQL支持的存儲(chǔ)引擎

MySQL5.7支持的引擎包括:InnoDB、MyISAM、MEMORY、Archive、Federate、CSV、BLACKHOLE等,其中較為常用的有三種:InnoDB、MyISAM、MEMORY。

三、操作

查詢數(shù)據(jù)庫(kù)支持的存儲(chǔ)引擎:

SHOW ENGINES;

查詢某個(gè)數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表的存儲(chǔ)引擎:

// 標(biāo)準(zhǔn)語(yǔ)法: SHOW TABLE STATUS FROM 數(shù)據(jù)庫(kù)名稱;

// 查詢db4數(shù)據(jù)庫(kù)所有表的存儲(chǔ)引擎
SHOW TABLE STATUS FROM db4;

查詢某個(gè)數(shù)據(jù)庫(kù)中某個(gè)表的存儲(chǔ)引擎:

//標(biāo)準(zhǔn)語(yǔ)法: SHOW TABLE STATUS FROM 數(shù)據(jù)庫(kù)名稱 WHERE NAME = '數(shù)據(jù)表名稱';

// 查看db4數(shù)據(jù)庫(kù)中user表的存儲(chǔ)引擎
SHOW TABLE STATUS FROM db2 WHERE NAME='user';

創(chuàng)建數(shù)據(jù)表指定存儲(chǔ)引擎:

// 標(biāo)準(zhǔn)語(yǔ)法:CREATE TABLE 表名( 列名,數(shù)據(jù)類型, ... )ENGINE = 引擎名稱;

CREATE TABLE engine_test(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(10)
)ENGINE=MYISAM;

修改數(shù)據(jù)表的存儲(chǔ)引擎:

// 標(biāo)準(zhǔn)語(yǔ)法: ALTER TABLE 表名 ENGINE = 引擎名稱;

// 修改engine_test表的存儲(chǔ)引擎為InnoDB
ALTER TABLE engine_test ENGINE=INNODB;

四、數(shù)據(jù)庫(kù)的索引

MySQL數(shù)據(jù)庫(kù)中的索引:是幫助MySQL高效獲取數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu)!所以,索引的本質(zhì)就是數(shù)據(jù)結(jié)構(gòu)。

在表數(shù)據(jù)之外,數(shù)據(jù)庫(kù)系統(tǒng)還維護(hù)著滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種方式指向數(shù)據(jù), 這樣就可以在這些數(shù)據(jù)結(jié)構(gòu)上實(shí)現(xiàn)高級(jí)查找算法,這種數(shù)據(jù)結(jié)構(gòu)就是索引。

索引的分類

  • 普通索引: 最基本的索引,它沒有任何限制。
  • 唯一索引:索引列的值必須是唯一,允許有控制,如果是組合索引,則列值組合必須唯一。
  • 主鍵索引:一種特殊的唯一索引,不允許有空值。一般在建表是同時(shí)創(chuàng)建主鍵索引。
  • 組合索引:將單列索引進(jìn)行組合
  • 外鍵索引: 只有InnoDB引擎支持外鍵索引,用來(lái)保證數(shù)據(jù)的一致性、完整性和實(shí)現(xiàn)聯(lián)級(jí)操作。
  • 全文索引:快速匹配全部文檔的方式。InnoDB引擎5.6版本后才支持全文索引。MEMORY引擎不支持。

五、索引操作

創(chuàng)建索引:

CREATE [UNIQUE|FULLTEXT] INDEX 索引名稱
	[USING 索引類型]  -- 默認(rèn)是BTREE
	ON 表名(列名...);
       
// 為student表中的name列創(chuàng)建一個(gè)普通索引
CREATE INDEX idx_name ON student(NAME);

//為student表中的age列創(chuàng)建一個(gè)唯一索引
CREATE UNIQUE INDEX idx_age ON student(age);

查詢索引:

// 標(biāo)準(zhǔn)語(yǔ)法: SHOW INDEX FROM 表名;

// 查詢student表中的索引  (主鍵列自帶主鍵索引)
SHOW INDEX FROM student;

添加索引:

ALTER添加索引
-- 普通索引
ALTER TABLE 表名 ADD INDEX 索引名稱(列名);

-- 組合索引
ALTER TABLE 表名 ADD INDEX 索引名稱(列名1,列名2,...);

-- 主鍵索引
ALTER TABLE 表名 ADD PRIMARY KEY(主鍵列名); 

-- 外鍵索引(添加外鍵約束,就是外鍵索引)
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (本表外鍵列名) REFERENCES 主表名(主鍵列名);

-- 唯一索引
ALTER TABLE 表名 ADD UNIQUE 索引名稱(列名);

-- 全文索引
ALTER TABLE 表名 ADD FULLTEXT 索引名稱(列名);

刪除索引:

// 標(biāo)準(zhǔn)語(yǔ)法:DROP INDEX 索引名稱 ON 表名;

// 刪除idx_score索引
DROP INDEX idx_score ON student;

到此這篇關(guān)于MySql中的存儲(chǔ)引擎和索引的文章就介紹到這了,更多相關(guān)MySql存儲(chǔ)引擎內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql中TIMESTAMPDIFF函數(shù)的語(yǔ)法與練習(xí)案例

    Mysql中TIMESTAMPDIFF函數(shù)的語(yǔ)法與練習(xí)案例

    在應(yīng)用時(shí)經(jīng)常要使用這兩個(gè)函數(shù)TIMESTAMPDIFF和TIMESTAMPADD,下面這篇文章主要給大家介紹了關(guān)于Mysql中TIMESTAMPDIFF函數(shù)的語(yǔ)法與練習(xí)案例的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • MySQL5.6免安裝版環(huán)境配置圖文教程

    MySQL5.6免安裝版環(huán)境配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了MySQL免安裝版環(huán)境配置圖文教程,很實(shí)用,感興趣的小伙伴們可以參考一下
    2016-05-05
  • mysql 8.0.17 安裝與使用教程圖解

    mysql 8.0.17 安裝與使用教程圖解

    這篇文章主要介紹了mysql 8.0.17 安裝與使用教程圖解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • MySQL中的undo日志

    MySQL中的undo日志

    這篇文章主要介紹了MySQL中的undo日志的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-11-11
  • mysql備份腳本 mysqldump使用方法詳解

    mysql備份腳本 mysqldump使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了mysql備份腳本(mysqldump),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • mysql中如何判斷是否支持分區(qū)

    mysql中如何判斷是否支持分區(qū)

    這篇文章主要介紹了mysql中如何判斷是否支持分區(qū)的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • MySQL服務(wù)無(wú)法啟動(dòng)的解決辦法(親測(cè)有效)

    MySQL服務(wù)無(wú)法啟動(dòng)的解決辦法(親測(cè)有效)

    用管理員身份打開cmd試圖啟動(dòng)MySQL時(shí)出現(xiàn)服務(wù)無(wú)法啟動(dòng)并提示服務(wù)沒有報(bào)錯(cuò)任何錯(cuò)誤,所以本文小編給大家介紹了一個(gè)親測(cè)有效的解決辦法,需要的朋友可以參考下
    2023-12-12
  • 基于更新SQL語(yǔ)句理解MySQL鎖定詳解

    基于更新SQL語(yǔ)句理解MySQL鎖定詳解

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)SQL更新鎖定的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • mySQL count多個(gè)表的數(shù)據(jù)實(shí)例詳解

    mySQL count多個(gè)表的數(shù)據(jù)實(shí)例詳解

    這篇文章通過(guò)實(shí)例給大家介紹了mySQL中count多個(gè)表的數(shù)據(jù),也就是多個(gè)表如何聯(lián)合查詢,文中通過(guò)項(xiàng)目中遇到的一個(gè)問題進(jìn)行分析和實(shí)現(xiàn),給出了詳細(xì)的示例代碼,相信對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面來(lái)一起看看吧。
    2016-11-11
  • 簡(jiǎn)單了解MYSQL數(shù)據(jù)庫(kù)優(yōu)化階段

    簡(jiǎn)單了解MYSQL數(shù)據(jù)庫(kù)優(yōu)化階段

    這篇文章主要介紹了簡(jiǎn)單了解MYSQL數(shù)據(jù)庫(kù)優(yōu)化階段,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論