mysql約束與索引的區別


一:約束

作用:是為了保證數據的完整性而實現的一套機制,它具體的根據各個不同的數據庫的實現而有不同的工具(約束);

這里主要講解mysql的約束:

1、非空約束:not null;

 指示某列不能存儲 NULL

2、唯一約束:unique();uk 

unique約束的字段,要求必須是唯一的,但null除外;

3、主鍵約束:primary key();pk

主鍵約束=not  null + unique,確保某列(或兩個列多個列的結合)有唯一標識,有助於更容易更快速地找到表中的一個特定的記錄。

4、外鍵約束:foreign  key () references (參考),fk 

保證一個表中的數據匹配另一個表中的值的參照完整性。語法:constraint  fk_dept_id   foreign key  (dept_id)  references  dept(dept_id);

5、自增約束:auto_increment

6、默認約束:default 

給定默認的值

7、檢查性約束:check 

保證列中的值符合指定的條件。

示例:

create table member(
   id      int(10),
   phone   int(15)  unsigned   zerofill,
   name    varchar(30)   not   null,
   constraint   uk_name   unique(name),
   constraint   pk_id     primary key (id),
   constraint   fk_dept_id   foreign key (dept_id,字段2)
   references  dept(主表1)(dept_id)
);

注:

//constraint  uk_name   可以省略不寫。uk_name  唯一約束名稱;

//pk_id     主鍵約束名稱;

//fk_dept_id   外鍵約束名稱

二:索引

作用:快速定位特定數據,提高查詢效率,確保數據的唯一性快速定位特定數據;可以加速表和表之間的連接,實現表與表之間的參照完整性,使用分組和排序語句進行數據檢索時,可以顯著減少分組和排序的時間全文檢索字段進行搜索優化;

索引的種類:

1、主鍵索引(primary   key);

2、唯一索引(unique);

3、常規索引(index);

4、全文索引(full  text);

 

總結:約束是為了保證表數據的完整性,索引是為了提高查詢效率,兩者作用不一樣!其次種類也不一樣。

1.         - 指示某列不能存儲 NULL 值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM