mysql 鍵 索引 五 MySQL索引和鍵

2021-10-18 21:09:59 字數 3099 閱讀 6400

mysql索引和鍵

(不同的索引有不同功能 ,不同的約束方式,不同的使用規則)

優點:對一張表來說,索引就像一本書的目錄,能夠加快查詢速度

缺點:占用物理儲存空間 (索引資訊儲存在表對應的檔案裡)

會降低插入、更新表記錄的速度(insert   delete   update)

1.索引的型別

普通索引:index

唯一索引:unique

全文索引:fulltext

2.各個索引的說明

(1).index 普通索引

乙個表中可以有多個index欄位

把經常做查詢條件的字段設定為index欄位

index欄位的key標誌是mul

對應的字段值允許有重複

樣例1:

建表時設定索引字段。(預設索引字與欄位名相同)

create   table   tea(

name  char(10) not null,

age  int(3) not null,

index(name)

樣例2:

把已有表裡的字段設定為index欄位。

create   index  索引名  on  表名(欄位名);

create  index   name  on  stu_info(name);

create  index   name  on  stu_info(name,***);

刪除指定表的索引字段

drop  index  索引名  on  表名;

drop  index  name  on  stu_info;

注:index使用btree  演算法   (二叉樹演算法)

檢視表的索引資訊:show  index  from stu_info;

(2)unique 唯一索引

字段值不允許有重複,unique欄位的值允許為null,【當將其修改為不允許為null,則此字段限制與主鍵相同】

乙個表中可以有多個unique欄位

unique欄位的key標誌是uni

樣例:create  table  tea23(

id int(3),

name char(3),

unique(id)

create unique index  stu_id   on   stu_info(stu_id);

3.鍵主    鍵:primary  key

外    鍵:foreign   key

(1). primary   key

乙個表中只能有乙個primary欄位

字段值不允許有重複,不允許為null

主鍵欄位的key標誌是pri

如果有多個欄位都作為primary key,稱為復合主鍵,必須在建表時一起建立

通常與 auto_increment 連用 (欄位的值自動增長 +)

把能唯一定位一條記錄的字段設定為主鍵欄位

樣例:create table baitao(lf int(3),primary key(lf));

alter table  stu_info add  primary key(id)

alter   table  表名   drop    primary  key;

(2).foreign    key   * 外      鍵

字段型別要一致

表的儲存引擎必須是innodb

被參考字段必須是索引型別中的一種。

foreign  key(欄位名)   references  表b(欄位名)  on  update cascade

on  delete  cascade

樣例:create   table  yg_info(yg_id  int(3) primary key  auto_increment,name  varchar(15) not null,index(name))engine=innodb;

create  table  gz_tab2(

id  int(3) primary  key   auto_increment,

name   varchar(15) not null,

gz_id   int(3)   not  null,

gz  float(7,2),

foreign  key(gz_id)    references  yg_info(yg_id)

on update cascade   on  delete  cascade

)engine=innodb;

insert into  yg_info(name)values("jim");

insert into  yg_info(name)values("tom");

insert  into  gz_tab(name,gz_id,gz)values("jim",1,20000);

insert  into  gz_tab(name,gz_id,gz)values("tom",2,20000);

update   yg_info  set  yg_id=20  where name="tom";

delete from yg_info where yg_id=20;

(3).primary key 復合主鍵

(主鍵欄位的值 不可以同時相同 )

ip             ser_name     port     status

1.1.1.1        vsftpd        21        deny

1.1.1.1        sshd          22        allow

2.2.2.2        sshd          22        allow

1.1.1.10        sshd         22        deny

create  table   sertab(

ip    varchar(15),

ser_name  varchar(15),

port   int(3),

status  enum("deny","allow")  default "deny",

primary key(ip,port)

五、mysql索引和鍵

標籤:mysql索引和鍵

mysql 雜湊索引 MySQL索引之雜湊索引

雜湊索引 hash index 建立在雜湊表的基礎上,它只對使用了索引中的每一列的精確查詢有用。對於每一行,儲存引擎計算出了被索引的雜湊碼 hash code 它是乙個較小的值,並且有可能和其他行的雜湊碼不同。它把雜湊碼儲存在索引中,並且儲存了乙個指向雜湊表中的每一行的指標。在mysql中,只有me...

mysql主鍵索引 MySQL索引之主鍵索引

在mysql裡,主鍵索引和輔助索引分別是什麼意思,有什麼區別?上次的分享我們介紹了聚集索引和非聚集索引的區別,本次我們繼續介紹主鍵索引和輔助索引的區別。1 主鍵索引 主鍵索引,簡稱主鍵,原文是primary key,由乙個或多個列組成,用於唯一性標識資料表中的某一條記錄。乙個表可以沒有主鍵,但最多只...

mysql聚集索引 MySQL索引之聚集索引介紹

在mysql裡,聚集索引和非聚集索引分別是什麼意思,有什麼區別?在mysql中,innodb引擎表是 聚集 索引組織表 clustered index organize table 而myisam引擎表則是堆組織表 heap organize table 也有人把聚集索引稱為聚簇索引。當然了,聚集索...