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