MySQL (2)約束 資料的完整性

2021-07-24 07:09:35 字數 3527 閱讀 6936

作用:保證使用者輸入的資料儲存到資料庫中是正確的,規範的重點內容

確保資料的完整性 = 在建立表時給表中新增約束

完整性的分類

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等,主要有唯 一 自增 主鍵 外來鍵約束 唯一約束 唯一約束可以有多個但索引列的值必須唯一,索引列的值允許有空值。如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該使用關...