国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的區別

2024-07-24 12:51:25
字體:
來源:轉載
供稿:網友

對于題目中提出的問題,可以拆分來一步步解決。在 MySQL 中 KEY 和 INDEX 是同義。那這個問題就可以簡化為 PRIMARY KEY,UNIQUE KEY 和 INDEX 的區別。而這三者也正好是索引的劃分,主鍵索引,唯一索引和普通索引(INDEX)。

使用 INDEX 來加速從數據庫中讀取數據。INDEX 通常加在那些 JOIN, WHERE,和 ORDER BY 子句的列上。

創建索引時,需要確保該索引是應用在 SQL 查詢語句的條件(一般作為 WHERE 子句的條件)。 實際上,索引也是一張表,該表保存了主鍵與索引字段,并指向實體表的記錄。

索引也有它的缺點:雖然索引提高了查詢速度,卻會降低更新表的速度,如對表進行INSERT、UPDATE和DELETE。因為更新表時,MySQL不僅要保存數據,還要保存一下索引文件。

MySQL 中 KEY 與 INDEX 區別

KEY 通常是 INDEX 同義詞。如果關鍵字屬性 PRIMARY KEY 在列定義中已給定,則 PRIMARY KEY 也可以只指定為KEY。這么做的目的是與其它數據庫系統兼容。 PRIMARY KEY 是一個唯一 KEY,此時,所有的關鍵字列必須定義為NOT NULL。如果這些列沒有被明確地定義為NOT NULL,MySQL應隱含地定義這些列。

KEY 即鍵值,是關系模型理論中的一部份,比如有主鍵(PRIMARY KEY),外鍵(Foreign KEY)等,用于數據完整性檢否與唯一性約束等。而 INDEX 則處于實現層面,比如可以對表個的任意列建立索引,那么當建立索引的列處于SQL語句中的Where條件中時,就可以得到快速的數據定位,從而快速檢索。至于UNIQUE INDEX,則只是屬于INDEX中的一種而已,建立了UNIQUE INDEX表示此列數據不可重復,猜想MySQL對UNIQUE INDEX類型的索引可以做進一步特殊優化吧。

于是,在設計表的時候,KEY只是要處于模型層面的,而當需要進行查詢優化,則對相關列建立索引即可。

KEY

KEY 是數據庫的物理結構,包含兩層含義,一是約束,偏重于約束和規范數據庫的結構完整性,二是索引,輔助查詢。
•primary key 有兩個作用,一是約束作用(constraint),用來規范一個存儲主鍵和唯一性,但同時也在此key上建立了一個index;
•unique key 也有兩個作用,一是約束作用(constraint),規范數據的唯一性,但同時也在這個key上建立了一個index;
•foreign key也有兩個作用,一是約束作用(constraint),規范數據的引用完整性,但同時也在這個key上建立了一個index;

可見,key是同時具有constraint和index的意義.

INDEX

INDEX 也是數據庫的物理結構,但他只有輔助查詢作用,它會在創建時占用另外的空間。索引分為前綴索引、全文索引等。索引只是索引,不會去約束索引字段的行為。

PRIMARY KEY 和 UNIQUE KEY 的區別

PRIMARY KEYs(主鍵) 和 UNIQUE KEYs(唯一鍵約束) 是類似的, PRIMARY KEY通常是一列,也有可能多列,通常由他來決定一行數據(row)。 一張表只能有一個 PRIMARY KEY,但可以有很多 UNIQUE KEY。 當給一列設置為 UNIQUE KEY 之后,不能有兩行在該列上有相同的數據。 PRIMARY KEY 不允許有 NULL值,但是 UNIQUE KEY 可以。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广平县| 开江县| 安义县| 莎车县| 麻城市| 晋宁县| 兴化市| 武清区| 荣昌县| 东阳市| 裕民县| 大同市| 静乐县| 铜陵市| 新沂市| 镶黄旗| 淮南市| 石渠县| 东乡县| 文山县| 秦安县| 兴宁市| 怀仁县| 铜鼓县| 平和县| 瑞昌市| 车致| 天柱县| 平果县| 临西县| 新沂市| 六安市| 沅江市| 禹州市| 孝感市| 开原市| 买车| 砀山县| 车险| 泰顺县| 卓尼县|