MySQL中的 UNIQUE約束和UNIQUE索引

weixin_33890499發表於2017-12-08

最近專案中又用到了索引, 以前用過, 也沒記, 所以糾結的我啊, 記錄一下, 希望能幫助到你

一、索引

  1. 索引一般分為三類:
    • FULLTEXT: 全文索引
    • PRIMARY: 主鍵索引
    • UNIQUE: 唯一索引

二、約束

  1. 約束一般分為三類:
    • PRIMARY KEY: 主鍵約束
    • UNIQUE: 唯一約束
    • FOREIGN: 外來鍵約束
    • NOT NULL: 非空約束

三、UNIQUE約束和UNIQUE索引比較

  1. 共同點
    • 都能保證記錄資料的唯一性, 因為UNIQUE約束是基於UNIQUE索引;
  2. 不同點
    • 如果某列有多個NULL值, 可以新增UNIQUE約束, 但是不能新增UNIQUE索引;
    • 建立和刪除的關鍵字不同;

筆記

索引的建立

  1. 建立表的時候建立索引
    CREATE TABLE <table-name>
    (<column-name> <column-type>[, 
    <column-name> <column-type>[,
    ...]]
    [<index-type>] INDEX <index-name>(<column-name>[,<column-name>...])
    )
    
  2. 給已經存在的表新增索引
    • 方式一:
      CREATE [<index-type>] INDEX <index-name> ON <table-name>
      (<column-name-list>)
      
    • 方式二:
      ALERT TABLE <table-name> ADD [<index-type>] INDEX <index-name> 
      (<column-name-list>)
      

索引的刪除

  1. 刪除就一種方式
    DROP INDEX <index-name> ON <table-name>
    

相關文章