一:約束
作用:是為了保證數據的完整性而實現的一套機制,它具體的根據各個不同的數據庫的實現而有不同的工具(約束);
這里主要講解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 值。