索引和約束的區(qū)別(mysql)

摘自:https://www.cnblogs.com/YLQBL/p/8473248.html

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

這里主要講解mysql的約束:

1、非空約束:not null;

指示某列不能存儲 NULL 值

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

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

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

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

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

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

5、自增約束:auto_increment

6、默認(rèn)約束:default

給定默認(rèn)的值

7、檢查性約束:check

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

示例:

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

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

//pk_id 主鍵約束名稱;

//fk_dept_id 外鍵約束名稱

二:索引

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

索引的種類:

1、主鍵索引(primary key);

2、唯一索引(unique);

3、常規(guī)索引(index);

4、全文索引(full text);

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容