mysql中的鍵和索引

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

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

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

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

三、語法格式 
1.創建主鍵的命令格式

1.1.在創建表時創建主健 
create table 表名(字段列表,primary key(需要設置成主健的字段名) auto_increment); #auto_increment 是需要將主健字段設置成自動增長的關鍵字,如果主健不是整數類型或者不需要自動增長的時候不需要該關鍵字;當需要設置聯合主鍵時,多個需要設置成主健的字段名之間用逗號隔開,而且不能使用自動增長` 
或者      鄭州婦科醫院×××:http://yyk.familydoctor.com.cn/sysdfkyy/

create table 表名(主健字段 字段類型 primary key auto_increment,字段列表);#此方法在創建聯合主健時不可用 
1.2.在已經創建好的表上創建主健(如果該表中已經存在數據,且數據違反了主鍵約束,則無法創建主健,需要解決數據衝突後再創建) 
alter table 表名 add primary key(需要設置成主健的字段名) auto_increment; 
2.創建外鍵的命令格式

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.創建索引的命令格式

3.1.創建表的時候創建索引(索引可以有多個,在以下示例中添加的是兩個) 
create table 表名(字段列表,index(已經存在字段名),index(已經存在的字段名));#如果是聯合索引的多個已經存在字段名用,隔開,記住不能跨字段設置聯合索引 
默認的索引名和字段名相同 
3.2.把已經存在的表中的字段設置爲索引字段 
create index 索引名稱 on 表名(字段名) 
索引名可以自己命名 一般使用字段名作爲索引名 
4.創建唯一索引的命令格式和普通索引的格式相似只需要保證字段記錄的唯一性就可以使用unique關鍵字


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章