最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的區(qū)別

 更新時(shí)間:2017年07月25日 08:42:32   作者:Ein Verne  
本文給大家分享的是mysql索引中的KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的區(qū)別,即主鍵索引,唯一索引和普通索引的區(qū)別,希望大家能夠喜歡

對(duì)于題目中提出的問(wèn)題,可以拆分來(lái)一步步解決。在 MySQL 中 KEY 和 INDEX 是同義。那這個(gè)問(wèn)題就可以簡(jiǎn)化為 PRIMARY KEY,UNIQUE KEY 和 INDEX 的區(qū)別。而這三者也正好是索引的劃分,主鍵索引,唯一索引和普通索引(INDEX)。

使用 INDEX 來(lái)加速?gòu)臄?shù)據(jù)庫(kù)中讀取數(shù)據(jù)。INDEX 通常加在那些 JOIN, WHERE,和 ORDER BY 子句的列上。

創(chuàng)建索引時(shí),需要確保該索引是應(yīng)用在 SQL 查詢(xún)語(yǔ)句的條件(一般作為 WHERE 子句的條件)。 實(shí)際上,索引也是一張表,該表保存了主鍵與索引字段,并指向?qū)嶓w表的記錄。

索引也有它的缺點(diǎn):雖然索引提高了查詢(xún)速度,卻會(huì)降低更新表的速度,如對(duì)表進(jìn)行INSERT、UPDATE和DELETE。因?yàn)楦卤頃r(shí),MySQL不僅要保存數(shù)據(jù),還要保存一下索引文件。

MySQL 中 KEY 與 INDEX 區(qū)別

KEY 通常是 INDEX 同義詞。如果關(guān)鍵字屬性 PRIMARY KEY 在列定義中已給定,則 PRIMARY KEY 也可以只指定為KEY。這么做的目的是與其它數(shù)據(jù)庫(kù)系統(tǒng)兼容。 PRIMARY KEY 是一個(gè)唯一 KEY,此時(shí),所有的關(guān)鍵字列必須定義為NOT NULL。如果這些列沒(méi)有被明確地定義為NOT NULL,MySQL應(yīng)隱含地定義這些列。

KEY 即鍵值,是關(guān)系模型理論中的一部份,比如有主鍵(PRIMARY KEY),外鍵(Foreign KEY)等,用于數(shù)據(jù)完整性檢否與唯一性約束等。而 INDEX 則處于實(shí)現(xiàn)層面,比如可以對(duì)表個(gè)的任意列建立索引,那么當(dāng)建立索引的列處于SQL語(yǔ)句中的Where條件中時(shí),就可以得到快速的數(shù)據(jù)定位,從而快速檢索。至于UNIQUE INDEX,則只是屬于INDEX中的一種而已,建立了UNIQUE INDEX表示此列數(shù)據(jù)不可重復(fù),猜想MySQL對(duì)UNIQUE INDEX類(lèi)型的索引可以做進(jìn)一步特殊優(yōu)化吧。

于是,在設(shè)計(jì)表的時(shí)候,KEY只是要處于模型層面的,而當(dāng)需要進(jìn)行查詢(xún)優(yōu)化,則對(duì)相關(guān)列建立索引即可。

KEY

KEY 是數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),包含兩層含義,一是約束,偏重于約束和規(guī)范數(shù)據(jù)庫(kù)的結(jié)構(gòu)完整性,二是索引,輔助查詢(xún)。
•primary key 有兩個(gè)作用,一是約束作用(constraint),用來(lái)規(guī)范一個(gè)存儲(chǔ)主鍵和唯一性,但同時(shí)也在此key上建立了一個(gè)index;
•unique key 也有兩個(gè)作用,一是約束作用(constraint),規(guī)范數(shù)據(jù)的唯一性,但同時(shí)也在這個(gè)key上建立了一個(gè)index;
•foreign key也有兩個(gè)作用,一是約束作用(constraint),規(guī)范數(shù)據(jù)的引用完整性,但同時(shí)也在這個(gè)key上建立了一個(gè)index;

可見(jiàn),key是同時(shí)具有constraint和index的意義.

INDEX

INDEX 也是數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),但他只有輔助查詢(xún)作用,它會(huì)在創(chuàng)建時(shí)占用另外的空間。索引分為前綴索引、全文索引等。索引只是索引,不會(huì)去約束索引字段的行為。

PRIMARY KEY 和 UNIQUE KEY 的區(qū)別

PRIMARY KEYs(主鍵) 和 UNIQUE KEYs(唯一鍵約束) 是類(lèi)似的, PRIMARY KEY通常是一列,也有可能多列,通常由他來(lái)決定一行數(shù)據(jù)(row)。 一張表只能有一個(gè) PRIMARY KEY,但可以有很多 UNIQUE KEY。 當(dāng)給一列設(shè)置為 UNIQUE KEY 之后,不能有兩行在該列上有相同的數(shù)據(jù)。 PRIMARY KEY 不允許有 NULL值,但是 UNIQUE KEY 可以。

修改表 `ALTER TABLE table_name ADD PRIMARY KEY(column_name, …)

總結(jié),相同點(diǎn):
•PRIMARY KEY 和 UNIQUE KEY 都是用來(lái)保證列上數(shù)據(jù)的為原型
•都可以在一列或者多列上加

差異點(diǎn):
•同一張表 PRIMARY KEY 只能有一個(gè), UNIQUE KEY可以有多個(gè)

PRIMARY KEY 不能有空值, UNIQUE KEY 可以有。如果 PRIMARY KEY 的1個(gè)或多個(gè)列為NULL,在增加PRIMARY KEY時(shí),列自動(dòng)更改為 NOT NULL 。而UNIQUE KEY 對(duì)列沒(méi)有要求是通過(guò)參考索引實(shí)施的,如果插入的值均為NULL,則根據(jù)索引的原理,全NULL值不被記錄在索引上,所以插入全NULL值時(shí),可以有重復(fù)的,而其他的則不能插入重復(fù)值。

alter table t add constraint uk_t_1 UNIQUE (a,b); insert into t (a ,b ) values (null,1); # 不能重復(fù) insert into t (a ,b ) values (null,null);#可以重復(fù)

在MySQL中,對(duì)于一個(gè)PRIMARY KEY的列,MySQL已經(jīng)自動(dòng)對(duì)其建立了UNIQUE INDEX,無(wú)需重復(fù)再在上面建立索引了。

網(wǎng)上關(guān)于 PRIMARY KEY 和 UNIQUE INDEX 的一段解釋?zhuān)?br />

Note that “PRIMARY” is called PRIMARY KEY not INDEX.
KEY is something on the logical level, describes your table and database design (i.e. enforces referential integrity …)
INDEX is something on the physical level, helps improve access time for table operations.
Behind every PK there is (usually) UNIQUE INDEX created (automatically).

操作索引

建立索引會(huì)占用磁盤(pán)空間的索引文件。
CREATE INDEX IndexName ON mytable(username(length));

如果是 CHAR,VARCHAR 類(lèi)型,length 可以小于字段實(shí)際長(zhǎng)度;如果是 BLOB 和 TEXT類(lèi)型,必須指定 length。

在創(chuàng)建表時(shí)創(chuàng)建索引:

CREATE TABLE mytable( 
 ID INT NOT NULL,  
 username VARCHAR(15) NOT NULL,
 INDEX [INDEXName] (username(length)) 
);

刪除索引


DROP INDEX [INDEXName] ON mytable;

相關(guān)文章

  • mysql游標(biāo)的原理與用法實(shí)例分析

    mysql游標(biāo)的原理與用法實(shí)例分析

    這篇文章主要介紹了mysql游標(biāo)的原理與用法,結(jié)合實(shí)例形式分析了mysql游標(biāo)的概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • MySQL數(shù)據(jù)庫(kù)之表的約束圖文詳解

    MySQL數(shù)據(jù)庫(kù)之表的約束圖文詳解

    在數(shù)據(jù)庫(kù)設(shè)計(jì)中,表約束是保證數(shù)據(jù)完整性、一致性的重要手段,數(shù)據(jù)類(lèi)型本身就是一種基本約束,限制了數(shù)據(jù)的范圍和格式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • Linux下安裝配置MySQL

    Linux下安裝配置MySQL

    mysql最流行的關(guān)系型數(shù)據(jù)庫(kù)之一,目前隸屬于oracle公司,因體積小、速度快、總體擁有成本低,開(kāi)放源代碼這一特點(diǎn),所以是我們?nèi)粘i_(kāi)發(fā)的首選。下面我們來(lái)看看如何在Linux下安裝配置MySQL
    2017-05-05
  • MySQL 8.0.13 下載安裝教程圖文詳解

    MySQL 8.0.13 下載安裝教程圖文詳解

    這篇文章主要介紹了MySQL 8.0.13 下載安裝教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 解讀索引列中有null值會(huì)不會(huì)使索引失效

    解讀索引列中有null值會(huì)不會(huì)使索引失效

    這篇文章主要介紹了解讀索引列中有null值會(huì)不會(huì)使索引失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MySQL里Create Index 能否創(chuàng)建主鍵 Primary Key

    MySQL里Create Index 能否創(chuàng)建主鍵 Primary Key

    MySQL里Create Index 能否創(chuàng)建主鍵 Primary Key
    2009-07-07
  • MySQL數(shù)字的取整、四舍五入、保留n位小數(shù)方式

    MySQL數(shù)字的取整、四舍五入、保留n位小數(shù)方式

    這篇文章主要介紹了MySQL數(shù)字的取整、四舍五入、保留n位小數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MySQL分區(qū)字段列有必要再單獨(dú)建索引嗎?

    MySQL分區(qū)字段列有必要再單獨(dú)建索引嗎?

    這篇文章主要給大家介紹了關(guān)于MySQL分區(qū)字段列是否有必要再單獨(dú)建索引的相關(guān)資料,文中通過(guò)示例進(jìn)行了驗(yàn)證,對(duì)大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 最全的mysql查詢(xún)語(yǔ)句整理

    最全的mysql查詢(xún)語(yǔ)句整理

    這篇文章主要介紹了最全的mysql查詢(xún)語(yǔ)句整理,需要的朋友可以參考下
    2016-06-06
  • MySQL8.0登錄時(shí)出現(xiàn)Access?denied?for?user?‘root‘@‘localhost‘?(using?password:?YES)?拒絕訪(fǎng)問(wèn)的完美解決

    MySQL8.0登錄時(shí)出現(xiàn)Access?denied?for?user?‘root‘@‘localhost‘?

    這篇文章主要給大家介紹了解決MySQL8.0登錄時(shí)出現(xiàn)Access?denied?for?user?‘root‘@‘localhost‘?(using?password:?YES)?拒絕訪(fǎng)問(wèn)的問(wèn)題,文中有詳細(xì)的解決方法,需要的朋友可以參考下
    2023-09-09

最新評(píng)論

上思县| 逊克县| 襄樊市| 托里县| 宜春市| 满洲里市| 札达县| 石林| 吐鲁番市| 清水县| 商都县| 呼伦贝尔市| 托里县| 长武县| 天水市| 贺兰县| 玛纳斯县| 玛曲县| 勐海县| 毕节市| 合阳县| 婺源县| 江西省| 卢氏县| 遂昌县| 平谷区| 元阳县| 五莲县| 五峰| 洛阳市| 盖州市| 施甸县| 安陆市| 隆德县| 嫩江县| 南溪县| 德化县| 白朗县| 抚松县| 漯河市| 常德市|