亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問下最后一句的KEY `type` (`type`)是什么意思

請問下最后一句的KEY `type` (`type`)是什么意思

呼喚遠方 2018-07-23 10:19:15
下面是建表的語句:CREATE TABLE `phpcolor_ad` (`id` mediumint(8) NOT NULL AUTO_INCREMENT,`name` varchar(30) NOT NULL,`site` mediumint(1) NOT NULL,`type` mediumint(1) NOT NULL,`theme` varchar(100) DEFAULT NULL,`picture` varchar(255) DEFAULT NULL,`link` varchar(255) DEFAULT NULL,`code` text,PRIMARY KEY (`id`),KEY `type` (`type`));
查看完整描述

1 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

 如果只是key的話,就是普通索引。
mysql的key和index多少有點令人迷惑,單獨的key和其它關鍵詞結合的key(primary key)實際表示的意義是不同,這實際上考察對數據庫體系結構的了解的。
1 key 是數據庫的物理結構,它包含兩層意義和作用,一是約束(偏重于約束和規范數據庫的結構完整性),二是索引(輔助查詢用的)。包括primary key, unique key, foreign key 等。
primary key 有兩個作用,一是約束作用(constraint),用來規范一個存儲主鍵和唯一性,但同時也在此key上建立了一個index;
unique key 也有兩個作用,一是約束作用(constraint),規范數據的唯一性,但同時也在這個key上建立了一個index;
foreign key也有兩個作用,一是約束作用(constraint),規范數據的引用完整性,但同時也在這個key上建立了一個index;
可見,mysql的key是同時具有constraint和index的意義,這點和其他數據庫表現的可能有區別。(至少在oracle上建立外鍵,不會自動建立index),因此創建key也有如下幾種方式:
(1)在字段級以key方式建立, 如 create table t (id int not null primary key);
(2)在表級以constraint方式建立,如create table t(id int, CONSTRAINT pk_t_id PRIMARY key (id));
(3)在表級以key方式建立,如create table t(id int, primary key (id));

其它key創建類似,但不管那種方式,既建立了constraint,又建立了index,只不過index使用的就是這個constraint或key。

2 index是數據庫的物理結構,它只是輔助查詢的,它創建時會在另外的表空間(mysql中的innodb表空間)以一個類似目錄的結構存儲。索引要分類的話,分為前綴索引、全文本索引等;
因此,索引只是索引,它不會去約束索引的字段的行為(那是key要做的事情)。
如,create table t(id int, index inx_tx_id (id));

3 總結,最后的釋疑:
(1)我們說索引分類,分為主鍵索引、唯一索引、普通索引(只有這一種才是純粹的index)等,也是基于是不是把index看作了key。

查看完整回答
反對 回復 2018-07-28
  • 1 回答
  • 0 關注
  • 1868 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號