<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQL中KEY、PRIMARYKEY、UNIQUEKEY、INDEX的區別

        來源:懂視網 責編:小采 時間:2020-11-09 20:32:13
        文檔

        MySQL中KEY、PRIMARYKEY、UNIQUEKEY、INDEX的區別

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

        對于題目中提出的問題,可以拆分來一步步解決。在 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 可以。

        修改表 `ALTER TABLE table_name ADD PRIMARY KEY(column_name, …)

        總結,相同點:
        •PRIMARY KEY 和 UNIQUE KEY 都是用來保證列上數據的為原型
        •都可以在一列或者多列上加

        差異點:
        •同一張表 PRIMARY KEY 只能有一個, UNIQUE KEY可以有多個

        PRIMARY KEY 不能有空值, UNIQUE KEY 可以有。如果 PRIMARY KEY 的1個或多個列為NULL,在增加PRIMARY KEY時,列自動更改為 NOT NULL 。而UNIQUE KEY 對列沒有要求是通過參考索引實施的,如果插入的值均為NULL,則根據索引的原理,全NULL值不被記錄在索引上,所以插入全NULL值時,可以有重復的,而其他的則不能插入重復值。

        alter table t add constraint uk_t_1 UNIQUE (a,b); insert into t (a ,b ) values (null,1); # 不能重復 insert into t (a ,b ) values (null,null);#可以重復

        在MySQL中,對于一個PRIMARY KEY的列,MySQL已經自動對其建立了UNIQUE INDEX,無需重復再在上面建立索引了。

        網上關于 PRIMARY KEY 和 UNIQUE INDEX 的一段解釋:

        Note that “PRIMARY” is called PRIMARY KEY not INDEX.
        KEY is something on the logical level, describes your table and database design (i.e. enforces referential integrity …)
        INDEX is something on the physical level, helps improve access time for table operations.
        Behind every PK there is (usually) UNIQUE INDEX created (automatically).

        操作索引

        建立索引會占用磁盤空間的索引文件。
        CREATE INDEX IndexName ON mytable(username(length));

        如果是 CHAR,VARCHAR 類型,length 可以小于字段實際長度;如果是 BLOB 和 TEXT類型,必須指定 length。

        在創建表時創建索引:

        CREATE TABLE mytable( 
         ID INT NOT NULL, 
         username VARCHAR(15) NOT NULL,
         INDEX [INDEXName] (username(length)) 
        );
        

        刪除索引


        DROP INDEX [INDEXName] ON mytable;

        您可能感興趣的文章:

      1. mysql 添加索引 mysql 如何創建索引
      2. MySQL索引類型總結和使用技巧以及注意事項
      3. MySQL 創建索引(Create Index)的方法和語法結構及例子
      4. MySQL查看、創建和刪除索引的方法
      5. MySQL 主鍵與索引的聯系與區別分析
      6. 基于mysql全文索引的深入理解
      7. Mysql索引會失效的幾種情況分析
      8. MySQL 索引分析和優化
      9. Mysql中的Btree與Hash索引比較
      10. MYSQL索引無效和索引有效的詳細介紹
      11. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQL中KEY、PRIMARYKEY、UNIQUEKEY、INDEX的區別

        MySQL中KEY、PRIMARYKEY、UNIQUEKEY、INDEX的區別:對于題目中提出的問題,可以拆分來一步步解決。在 MySQL 中 KEY 和 INDEX 是同義。那這個問題就可以簡化為 PRIMARY KEY,UNIQUE KEY 和 INDEX 的區別。而這三者也正好是索引的劃分,主鍵索引,唯一索引和普通索引(INDEX)。 使用 INDEX 來加速
        推薦度:
        標簽: key index primary
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top 主站蜘蛛池模板: 亚洲AV成人片无码网站| 黄桃AV无码免费一区二区三区 | 国产精品无码素人福利免费| 亚洲精品高清在线| 亚洲va中文字幕无码久久 | 亚洲熟妇AV一区二区三区宅男| 尤物视频在线免费观看| 四虎免费影院ww4164h| 精品亚洲成α人无码成α在线观看| 亚洲综合成人网在线观看| 免费无码午夜福利片69| 手机在线看永久av片免费| 亚洲AV日韩精品久久久久| 免费精品视频在线| 亚洲性日韩精品一区二区三区| 亚洲精品一二三区| 无码A级毛片免费视频内谢| 亚洲精品无码AV中文字幕电影网站| 又粗又长又爽又长黄免费视频| 亚洲国产精品无码久久青草| 亚洲AV香蕉一区区二区三区| 亚洲Aⅴ无码一区二区二三区软件| 伊人久久五月丁香综合中文亚洲| 日本午夜免费福利视频| 在线亚洲高清揄拍自拍一品区| 女人18毛片a级毛片免费视频| 亚洲国产精品一区二区久| 99久久99热精品免费观看国产| 国产亚洲精aa成人网站| 日韩视频免费在线观看| 亚洲午夜久久久影院| 日韩免费码中文在线观看| 国产aⅴ无码专区亚洲av| 中文在线免费视频| 亚洲国产成人精品久久| 免费A级毛片无码久久版| 亚洲1区2区3区精华液| 亚洲va久久久噜噜噜久久| 成人人免费夜夜视频观看| 国产在线播放线91免费| 亚洲婷婷第一狠人综合精品|