MySQL數(shù)據(jù)庫(kù)索引與數(shù)據(jù)完整性

2018-12-01 08:10 更新

一、索引的作用

  1. 快速讀取數(shù)據(jù);
  2. 保證數(shù)據(jù)記錄的唯一性;
  3. 實(shí)現(xiàn)表與表之間的參照完整性;
  4. 在使用group by order by子句進(jìn)行數(shù)據(jù)檢索時(shí),利用索引可以減少排序和分組的時(shí)間; 注意:
  5. 一個(gè)表最多可以有16個(gè)索引;
  6. 可以由單個(gè)字段創(chuàng)建索引,也可以在多個(gè)字段的組合上創(chuàng)建索引,最多不超過(guò)15個(gè)字段。 二、索引的分類(lèi): 按B-樹(shù)形式存儲(chǔ)的主要索引的分類(lèi): 1、普通索引(index)沒(méi)有唯一性要求; 2、唯一索引(unique)必須具有唯一性; 3、主鍵(primary key)是一種唯一性索引,可以通過(guò)修改表的方式加入主鍵,但每個(gè)只能有一個(gè)主鍵。 三、索引的利弊: 1、索引可加快查詢(xún)的速度(利) 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ǔ)句刪除;
  7. 使用drop index 索引名 on 表名; 例:刪除xsl表中的xh_xsl索引 drop index xh_xsl on xsl;
  8. 使用alter table 表名 drop index 索引名; 例:刪除xsl表中的xm_xsl索引 alter table xsl drop index xm_xsl;
  9. 使用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)參照完整性。
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)