mysql中的鍵和索引

1、主鍵 索引 關係

1.主鍵:主鍵的惟一做用就是惟一標識表中的某一行數據。分爲單一主鍵和聯合主鍵:
單一主鍵:只用一列就能惟一標識一行。
聯合主鍵:當使用一列已經不能惟一標示一行的時候,就要採用多列惟一標識一行,就是聯合主鍵。聯合主健多個字段不能同時相同ide

2.索引:索引的做用就是提升數據的檢索速度,分爲單一索引和聯合索引:
單一索引:只是用某一列數據做爲索引,默認是index索引,這一列能夠包含重複數據;若是某一列不存在重複數據最好設置成unique形式的索引,比index的索引速度更快,在text數據上要使用fulltext索引。
聯合索引:爲了更進一步提升檢索速度,每次檢索都須要用多列同時進行時,就能夠把這多列設爲聯合索引,提升索引速度,根據多列是否惟一,也分爲index索引和unique索引。
聯合索引的使用必須注意:不能垮字段使用,好比a b c聯合索引 只有a|ab|abc 才能用上聯合索引字段。code

3.主鍵必定是索引,可是索引不必定是主鍵。一個表只能有一個主鍵或聯合主鍵,可是能夠有多個索引。
主鍵字段必須不能爲空,可是索引字段能夠爲空。索引

2、外鍵和主健的關係

1.外鍵就是讓表中字段的值在參照表中的字段中選擇的一種約束標示
2.建立外鍵的條件
被參照字段必須是主鍵
參照字段和被參照字段必須是相同的數據類型
表的儲存引擎必須是innodbrem

3、語法格式

1.建立主鍵的命令格式it

1.1.在建立表時建立主健
create table 表名(字段列表,primary key(須要設置成主健的字段名) auto_increment);  #auto_increment 是須要將主健字段設置成自動增加的關鍵字,若是主健不是整數類型或者不須要自動增加的時候不須要該關鍵字;當須要設置聯合主鍵時,多個須要設置成主健的字段名之間用逗號隔開,並且不能使用自動增加`
或者

create table 表名(主健字段 字段類型 primary key auto_increment,字段列表);#此方法在建立聯合主健時不可用
1.2.在已經建立好的表上建立主健(若是該表中已經存在數據,且數據違反了主鍵約束,則沒法建立主健,須要解決數據衝突後再建立)
alter table 表名 add primary key(須要設置成主健的字段名) auto_increment;

2.建立外鍵的命令格式innodb

2.1.在建立表時建立外鍵(知足建立外鍵的條件下)
create table 表名(字段列表,foreign key(須要建立外鍵約束的字段) references 被參照表的表名(被參照表的被參照字段) on update cascade on delete cascade)engine=innodb;
若是外鍵須要具備惟一標示的時候還能夠在外鍵上加上主健約束
2.2.在已經存在的表中建立外鍵
alter table 表名 add foreign key(字段名) references 參考表名(參考字段名) on update casecade on delete cascade) engine=innodb;

3.建立索引的命令格式table

3.1.建立表的時候建立索引(索引能夠有多個,在如下示例中添加的是兩個)
create table 表名(字段列表,index(已經存在字段名),index(已經存在的字段名));#若是是聯合索引的多個已經存在字段名用,隔開,記住不能跨字段設置聯合索引
默認的索引名和字段名相同
3.2.把已經存在的表中的字段設置爲索引字段
create index 索引名稱  on 表名(字段名)
索引名能夠本身命名  通常使用字段名做爲索引名

4.建立惟一索引的命令格式和普通索引的格式類似只須要保證字段記錄的惟一性就可使用unique關鍵字class

相關文章
相關標籤/搜索