作用:保證使用者輸入的資料儲存到資料庫中是正確的,規範的重點內容。
確保資料的完整性 = 在建立表時給表中新增約束
完整性的分類
1.實體完整性 2. 域完整性 3.應用完整性
具體有
1.主鍵約束
2.唯一約束
3.自動增長列
4.非空約束
5.預設值約束
6.外來鍵約束
實體:即表中的一行(一條記錄)代表乙個實體(entity)
實體完整性的作用:標識每一行資料不重複。
約束型別: 主鍵約束(primary key) 唯一約束(unique) 自動增長列(auto_increment)
1.1主鍵約束(primary key)
注:每個表中要有乙個主鍵。 特點:資料唯一不能重複,且不能為null
主鍵唯一確定表中的一行資料,或者可以唯一確定乙個實體。
乙個表只有乙個主鍵。 主鍵可以由乙個字段,也可以由多個字段組成,分別稱為單字段主鍵或多字段主鍵。
比如學生id,是乙個獨有不重複的屬性,就可以設為主鍵
例: 第一種新增方式:
create
table student(
id int
primary
key,
name varchar(50)
);
第二種新增方式:此種方式優勢在於,可以建立聯合主鍵
create
table student(
id int,
name varchar(50),
primary
key(id)
);
設定班級id和學生id為聯合主鍵,只有當兩個id同時相等時,才算主鍵重複。
classid 和 stuid都為 2 1的那個報錯,其餘的都不報錯。
第三種新增方式:
create
table student(
id int,
name varchar(50)
);alter
table student add
primary
key (id);
1.2唯一約束(unique): 特點:資料不能重複。比如姓名不能重複, 就加上unique
create
table student(
id int
primary
key,
name varchar(50) unique
);
1.3自動增長列(auto_increment) 特點:自動增加sqlserver資料庫 (identity) oracle資料庫( sequence)
給主鍵新增自動增長的數值,列只能是整數型別
域完整性的作用:限制此單元格的資料正確,不對照此列的其它單元格比較
域代表當前單元格
域完整性約束:資料型別 非空約束(not null) 預設值約束(default) check約束(mysql不支援)check(***=』男』 or ***=』女』)
2.1 非空約束:not null
比如:名字不能輸入為空
create
table student(
id int pirmary key,
name varchar(50) not
null,
*** varchar(10)
);insert
into student values(1,』tom』,null);
2.2 預設值約束 default設定預設值
create
table student(
id int pirmary key,
name varchar(50) not
null,
*** varchar(10) default 『男』
);insert
into student1 values(1,'tom','女');
insert
into student1 values(2,'jerry',default);
3.1 外來鍵約束:foreign key外來鍵:是用於建立和加強兩個表資料之間鏈結的一列或者多列。通過將儲存表中主鍵值的一列或者多列的值新增到另乙個表中,可建立兩個表之間的鏈結。(有主鍵才能有外來鍵)
比如,a表中的乙個字段,是b表的主鍵,那他就可以是a表的外來鍵。
將學生表和成績表通過sid關聯起來,學生表為主表,成績表為子表。子表引用主表資料。例:
create
table student(
stuid int pirmary key,
name varchar(50) not
null,
*** varchar(10) default 『男』
);create
table score(
id int,
score int,
sid int , -- 外來鍵列的資料型別一定要與主鍵的型別一致
constraint fk_score_sid foreign
key (sid) references student(stuid)
);
第二種新增外來鍵方式。
alter
table score1 add
constraint fk_stu_score foreign
key(sid) references student(stuid);
MySQL資料完整性約束
資料完整性是指資料的正確性和相容性,是為了防止資料庫中存在不符合語義的資料,即防止資料庫中存在不正確的資料。在mysql中提供了多種完整性約束。1 主鍵約束 主鍵可以是表中的某一列,也可以是表中的多個列所構成的乙個組合 其中,由多個列組合而成的主鍵也稱為復合主鍵。在mysql中,主鍵列必須遵守以下規...
MySQL完整性約束
create database adrui show databases use adrui not null 非空約束,插入資料該欄位不能為空 primary key 主鍵約束 主鍵約束相當於非空約束 唯一約束,auto increment是mysql擴充套件的字段值自加的約束,約束字段資料型別必...
Mysql 完整性約束
定義 完整性約束是對字段進行限制,從而符合該欄位達到我們期望的效果比如字段含有預設值,不能是null等,主要有唯 一 自增 主鍵 外來鍵約束 唯一約束 唯一約束可以有多個但索引列的值必須唯一,索引列的值允許有空值。如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該使用關...