溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql中的鍵和索引關(guān)系

發(fā)布時(shí)間:2020-05-11 14:41:39 來源:億速云 閱讀:235 作者:三月 欄目:MySQL數(shù)據(jù)庫

下面一起來了解下mysql中的鍵和索引關(guān)系,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望mysql中的鍵和索引關(guān)系這篇短內(nèi)容是你想要的。

一、主鍵 索引 關(guān)系

1.主鍵:主鍵的唯一作用就是唯一標(biāo)識(shí)表中的某一行數(shù)據(jù)。分為單一主鍵和聯(lián)合主鍵:
單一主鍵:只用一列就能唯一標(biāo)識(shí)一行。
聯(lián)合主鍵:當(dāng)使用一列已經(jīng)不能唯一標(biāo)示一行的時(shí)候,就要采用多列唯一標(biāo)識(shí)一行,就是聯(lián)合主鍵。聯(lián)合主健多個(gè)字段不能同時(shí)相同

2.索引:索引的作用就是提高數(shù)據(jù)的檢索速度,分為單一索引和聯(lián)合索引:
單一索引:只是用某一列數(shù)據(jù)作為索引,默認(rèn)是index索引,這一列可以包含重復(fù)數(shù)據(jù);如果某一列不存在重復(fù)數(shù)據(jù)最好設(shè)置成unique形式的索引,比index的索引速度更快,在text數(shù)據(jù)上要使用fulltext索引。
聯(lián)合索引:為了更進(jìn)一步提高檢索速度,每次檢索都需要用多列同時(shí)進(jìn)行時(shí),就可以把這多列設(shè)為聯(lián)合索引,提高索引速度,根據(jù)多列是否唯一,也分為index索引和unique索引。
聯(lián)合索引的使用必須注意:不能垮字段使用,比如a b c聯(lián)合索引 只有a|ab|abc 才能用上聯(lián)合索引字段。

3.主鍵一定是索引,但是索引不一定是主鍵。一個(gè)表只能有一個(gè)主鍵或聯(lián)合主鍵,但是可以有多個(gè)索引。
主鍵字段必須不能為空,但是索引字段可以為空。

二、外鍵和主健的關(guān)系

1.外鍵就是讓表中字段的值在參照表中的字段中選擇的一種約束標(biāo)示
2.創(chuàng)建外鍵的條件
被參照字段必須是主鍵
參照字段和被參照字段必須是相同的數(shù)據(jù)類型
表的儲(chǔ)存引擎必須是innodb

三、語法格式

1.創(chuàng)建主鍵的命令格式

1.1.在創(chuàng)建表時(shí)創(chuàng)建主健
create table 表名(字段列表,primary key(需要設(shè)置成主健的字段名) auto_increment);  #auto_increment 是需要將主健字段設(shè)置成自動(dòng)增長(zhǎng)的關(guān)鍵字,如果主健不是整數(shù)類型或者不需要自動(dòng)增長(zhǎng)的時(shí)候不需要該關(guān)鍵字;當(dāng)需要設(shè)置聯(lián)合主鍵時(shí),多個(gè)需要設(shè)置成主健的字段名之間用逗號(hào)隔開,而且不能使用自動(dòng)增長(zhǎng)`
或者

create table 表名(主健字段 字段類型 primary key auto_increment,字段列表);#此方法在創(chuàng)建聯(lián)合主健時(shí)不可用
1.2.在已經(jīng)創(chuàng)建好的表上創(chuàng)建主?。ㄈ绻摫碇幸呀?jīng)存在數(shù)據(jù),且數(shù)據(jù)違反了主鍵約束,則無法創(chuàng)建主健,需要解決數(shù)據(jù)沖突后再創(chuàng)建)
alter table 表名 add primary key(需要設(shè)置成主健的字段名) auto_increment;

2.創(chuàng)建外鍵的命令格式

2.1.在創(chuàng)建表時(shí)創(chuàng)建外鍵(滿足創(chuàng)建外鍵的條件下)
create table 表名(字段列表,foreign key(需要?jiǎng)?chuàng)建外鍵約束的字段) references 被參照表的表名(被參照表的被參照字段) on update cascade on delete cascade)engine=innodb;
如果外鍵需要具有唯一標(biāo)示的時(shí)候還可以在外鍵上加上主健約束
2.2.在已經(jīng)存在的表中創(chuàng)建外鍵
alter table 表名 add foreign key(字段名) references 參考表名(參考字段名) on update casecade on delete cascade) engine=innodb;

3.創(chuàng)建索引的命令格式

3.1.創(chuàng)建表的時(shí)候創(chuàng)建索引(索引可以有多個(gè),在以下示例中添加的是兩個(gè))
create table 表名(字段列表,index(已經(jīng)存在字段名),index(已經(jīng)存在的字段名));#如果是聯(lián)合索引的多個(gè)已經(jīng)存在字段名用,隔開,記住不能跨字段設(shè)置聯(lián)合索引
默認(rèn)的索引名和字段名相同
3.2.把已經(jīng)存在的表中的字段設(shè)置為索引字段
create index 索引名稱  on 表名(字段名)
索引名可以自己命名  一般使用字段名作為索引名

4.創(chuàng)建唯一索引的命令格式和普通索引的格式相似只需要保證字段記錄的唯一性就可以使用unique關(guān)鍵字

看完mysql中的鍵和索引關(guān)系這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI