MySQL中key問題詳解

2021-06-28 02:51:14 字數 1245 閱讀 1849

如果只是key的話,就是普通索引。

1 key 是資料庫的物理結構,它包含兩層意義和作用,一是約束(偏重於約束和規範資料庫的結構完整性),二是索引(輔助查詢用的)。包括primary key, unique key, foreign key 等。

primary key 有兩個作用,一是約束作用(constraint),用來規範乙個儲存主鍵和唯一性,但同時也在此key上建立了乙個index;

unique key 也有兩個作用,一是約束作用(constraint),規範資料的唯一性,但同時也在這個key上建立了乙個index;

foreign key也有兩個作用,一是約束作用(constraint),規範資料的引用完整性,但同時也在這個key上建立了乙個index;

可見,mysql的key是同時具有constraint和index的意義,這點和其他資料庫表現的可能有區別。(至少在oracle上建立外來鍵,不會自動建立index),因此建立key也有如下幾種方式:

(1)在字段級以key方式建立, 如 create table t (id int not null primary key);

(2)在表級以constraint方式建立,如create table t(id int, constraint pk_t_id primary key (id));

(3)在表級以key方式建立,如create table t(id int, primary key (id));

其它key建立類似,但不管那種方式,既建立了constraint,又建立了index,只不過index使用的就是這個constraint或key。

2 index是資料庫的物理結構,它只是輔助查詢的,它建立時會在另外的表空間(mysql中的innodb表空間)以乙個類似目錄的結構儲存。索引要分類的話,分為字首索引、全文本索引等;

因此,索引只是索引,它不會去約束索引的字段的行為(那是key要做的事情)。

如,create table t(id int, index inx_tx_id (id));

3 總結,最後的釋疑:

(1)我們說索引分類,分為主鍵索引、唯一索引、普通索引(只有這一種才是純粹的index)等,也是基於是不是把index看作了key。

比如 create table t(id int, unique index inx_tx_id (id)); --index當作了key使用

(2)最重要的也就是,不管如何描述,理解index是純粹的index,還是被當作key,當作key時則會有兩種意義或起兩種作用。

關於mysql中的key

一.關於mysql中key的說明 1.key是空的該列的值可以重複.表示該列沒有索引,或者是乙個非唯一的復zhi合索引的非dao前導列.2.key是pri該列是主鍵的組成部分.3.key是uni該列是乙個唯一值索引的第一列 前導列 並別不能含有空值 null 4.key是mul該列的值可以重複.該列...

mysql中key的用法 資料庫中KEY的用法

下面這段 的最後,有一句 key topicid topic id 代表什麼意思?它和primarykey foreignkey uniquekey有什麼區別?createtable posts id int 11 notnullauto increment,下面這段 的最後,有一句 key top...

key演算法問題

2012 01 02 00 23 03 首先我們需要兩個演算法 演算法1 輸入 2012 01 02 00 23 03 輸出 201201020023 演算法2 輸入 2012 1 2 輸出 當天全部2012010200xx key的集合 演算法1的實現 scala streaming rdd me...