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 也有人把聚集索引稱為聚簇索引。當然了,聚集索...