在使用group by order by子句進行數(shù)據(jù)檢索時,利用索引可以減少排序和分組的時間;
注意:
一個表最多可以有16個索引;
可以由單個字段創(chuàng)建索引,也可以在多個字段的組合上創(chuàng)建索引,最多不超過15個字段。
二、索引的分類:
按B-樹形式存儲的主要索引的分類:
1、普通索引(index)沒有唯一性要求;
2、唯一索引(unique)必須具有唯一性;
3、主鍵(primary key)是一種唯一性索引,可以通過修改表的方式加入主鍵,但每個只能有一個主鍵。
三、索引的利弊:
1、索引可加快查詢的速度(利)
2、索引會增大表文件的容量(弊)
3、在更新含有索引列的數(shù)據(jù)時,由于索引也要更新,所以會降低添加、刪除、修改和其他寫入操作的效率(弊)
四、創(chuàng)建索引
1、在創(chuàng)建表時指定索引:
例:在當(dāng)前數(shù)據(jù)庫創(chuàng)建一個xs表,包含學(xué)號、姓名、身份證三個字段,要求:
學(xué)號為主索引、姓名為普通索引、sfz為唯一索引:
Create table if not exists xs(
學(xué)號 char(6) not null primary key,
姓名 char(4),身份證 char(18),
Index xm_xs(姓名),
Unique index sfz_xs(身份證));
2、為已建好的表添加索引:
2.1使用create index語句創(chuàng)建索引
使用create index語句可以在一個已創(chuàng)建好的表上創(chuàng)建索引,一個表可以創(chuàng)建多個索引。
2.2創(chuàng)建命令:
Create [unique] index index_name
On tb_name(col_name);
Create index 索引名 on 表名(字段名)
注意:此命令語句不能創(chuàng)建主索引,創(chuàng)建索引時必須為它取名。
例:為xsl表的姓名字段創(chuàng)建一個名為xm_xsl的索引索引,并查看
Create index xm_xsl on xsl(姓名);
Desc xsl;
可以使用整個字段作為索引,也可以使用字段的一部分作為一個索引;
例2:使用xs表的學(xué)號前3位數(shù)字,創(chuàng)建一個索引xh_xsl,并查看
Create index xh_xsl on xsl (學(xué)號(3));
Show index from xsl;
五、使用alter table語句添加索引
由兩個以上的字段組合而成的索引叫復(fù)合索引。
Alter table tb_name add index
In_name(index_xol_name,………)
例:在xs表中,為學(xué)號添加一個主索引,為出生日期和姓名添加一個復(fù)合索引mark,并查看
Create table xs6 as select * from xsl;
Alter table xs6
Add primary key(學(xué)號),
Add index mark(出生日期,姓名);
例2:在kb中為課程名添加一個候選索引kcm_kb,并查看
Alter table kb add unique index kcm_kb(課程名);
或create unique index kcm_kb on kb(課程名);
例3:在cjb中為成績字段創(chuàng)建一個普通索引cj_cj,并查看
Alter table cjb add index cj_cjb(成績 desc);
查看索引的方法:
1、 desc 表名;
2、 show index from 表名;
3、 show create table 表名;
刪除索引:
當(dāng)一個索引不需要是可以用drop index語句或alter table語句刪除;
使用drop index 索引名 on 表名;
例:刪除xsl表中的xh_xsl索引
drop index xh_xsl on xsl;
使用alter table 表名 drop index 索引名;
例:刪除xsl表中的xm_xsl索引
alter table xsl drop index xm_xsl;
使用alter table 語句刪除索引語法:
Alter table tb_name(表名)
Drop primaty key //刪除主鍵
Drop index index_name(索引名) //刪除索引
Drop foreign key fk_name(索引名) //刪除外鍵
例:刪除xs表中的主鍵和mark索引
Alter table xs
Drop primary key,
Drop index mark;
注意:不能使用drop來創(chuàng)建主鍵,也不能使用drop命令刪除主鍵
數(shù)據(jù)完整性約束
在了解數(shù)據(jù)完整性約束先了解什么是子表什么是父表:
子表與父表:
例:1:n(一對多關(guān)系)
1:1方為父表
n:n方為字表
查看外鍵:show crate table 表名
數(shù)據(jù)完整性約束參照完整性約束
外鍵(foreign key)約束標(biāo)識表之間的關(guān)系,用于強制參照完整性。
可在創(chuàng)建表時定義外鍵,也可在修改表時添加外鍵。
當(dāng)兩個表存在一對多關(guān)系時,一方是父表,多方是子表,如果父子表中相同的這段,在父表中主鍵,則在子表中創(chuàng)建外鍵,以保證子表外鍵字段的值必須來自父表,同時可設(shè)置兩個表中數(shù)據(jù)的一致性,實現(xiàn)參照完整性。
更多建議: