數據完整性(Data Integrity)是指數據的精確性(Accuracy)和可靠性(Reliability)。它是應防止數據庫中存在不符合語義規定的數據和防止因錯誤信息的輸入輸出形成無效操做或錯誤信息而提出的。數據的完整性要從如下四個方面考慮:sql
根據約束的特色,分爲幾種:數據庫
主鍵:Primary key,簡稱PK,數據庫主鍵做用保證明體的完整性,能夠是一個列或多列的組合。spa
當建立主鍵約束時,MySQL默認在對應的列上創建主鍵索引。刪除主鍵時,也會直接刪除主鍵索引。設計
//直接添加主鍵 CREATE TABLE t_stu( sid INT PRIMARY KEY, sname VARCHAR(100), gender CHAR ); //單獨聲明主鍵 CREATE TABLE t_course( cid INT , cname VARCHAR(100), decription VARCHAR(200), PRIMARY KEY(cid) ); //建表後添加主鍵 ALTER TABLE t_stu ADD PRIMARY KEY(sid); //刪除主鍵 alter table表名稱 drop primary key;
--在某一列後面直接添加惟一性約束 CREATE TABLE t_course( cid INT PRIMARY KEY, cname VARCHAR(100) UNIQUE, description VARCHAR(200) ); --單獨指定表的惟一性約束 CREATE TABLE t_stu( sid INT PRIMARY KEY, sname VARCHAR(100), card_id CHAR(18), CONSTRAINT uk_card_id UNIQUE KEY(card_id) ); --在建表後修改表結構: alter table 【數據庫名.】表名稱 add unique key(字段名); alter table 【數據庫名.】表名稱 add unique key(字段列表); #複合惟一 --刪除惟一鍵 alter table 【數據庫名.】表名稱 drop index 索引名; alter table emp drop index cardid;
若是不知道索引名,能夠經過以下的語句查詢:
show index from 表名稱;code
惟一鍵和主鍵的區別:
(1)主鍵不能爲空,惟一鍵能夠爲空
(2)主鍵約束,一個表只能有一個,而惟一鍵能夠有不少個索引
外鍵約束不是必須的,並且如今不少大的公司,數據量比較大時,不建議在數據庫層面設計外鍵,
由於他以爲這樣效率低,把這個數據的約束挪到代碼層面去判斷。ip
特色:
(1)約束的是兩張表的關係
須要兩張表,或者一張表虛擬成兩張表
(2)兩張表分爲主表(父表)和從表(子表)
外鍵的創建/指定是在子表上創建。
(3)被參考的表稱爲主表,主表的被參考列必須是主鍵或惟一鍵
(4)一個表能夠有多個外鍵ci
--先建主表,再建從表 create table emp( 字段1 數據類型 primary key, 字段2 數據類型 【unique key】【not null】【default 默認值】, foreign key(從表的外鍵列) references 主表名(主表被參考的列名) ); --建表後指定外鍵 alter table 從表名稱 add foreign key(從表的字段) references 主表名(主表被參考的列名);
default:默認值,在插入數據時某列若是沒指定其餘的值,那麼會將默認值添加到新記錄。rem
--建表 create table 【數據庫名.】表名稱( 字段1 數據類型 primary key, 字段2 數據類型 【unique key】【not null】【default 默認值】, 字段2 數據類型 【unique key】【not null】【default 默認值】, ... ); --實例 create table emp( eid int primary key, #員工編號 ename varchar(20) not null, #姓名 cardid varchar(18) unique key not null , #身份證號 tel varchar(11) unique key not null, gender char not null default '男' ); --修改 alter table 表名 modify 列名 數據類型 【unique key】 【not null】 ; alter table emp modify cardid varchar(18) unique key not null; alter table emp modify tel varchar(11) not null; alter table emp modify gender char not null default '男'; --去掉非空和默認值約束 alter table emp modify gender char ;
關鍵字:auto_incrementit
特色:
create table emp( eid int primary key auto_increment, ename varchar(20) not null );