05-MySQL的完整性約束
1.整體說明
(1)討論重點內容
not null 與default
unique:表中該值唯一,不能有重複值
primary
auto_increment
foreign key
(2)約束條件與資料型別的寬度一致,都是可選引數
(3)作用:用於保證資料的完整性和一致性。
(4)主要分為如下:
PRIMARY KEY (PK) #標識該欄位為該表的主鍵,可以唯一的標識記錄
FOREIGN KEY (FK) #標識該欄位為該表的外來鍵
NOT NULL #標識該欄位不能為空
UNIQUE KEY (UK) #標識該欄位的值是唯一的
AUTO_INCREMENT #標識該欄位的值自動增長(整數型別,而且為主鍵)
DEFAULT #為該欄位設定預設值
UNSIGNED #無符號
ZEROFILL #使用0填充
(5)其他說明如下:
#1. 是否允許為空,預設NULL,可設定NOT NULL,欄位不允許為空,必須賦值
#2. 欄位是否有預設值,預設的預設值是NULL,如果插入記錄時不給欄位賦值,此欄位使用預設值
sex enum('male','female') not null default 'male'
#必須為正值(無符號) 不允許為空 預設是20
age int unsigned NOT NULL default 20
# 3. 是否是key
主鍵 primary key
外來鍵 foreign key
索引 (index,unique...)
2.not null 與default
(1)預設值可以為空。
(2)設定not null時,插入值時不能為空。
(3)設定id欄位有預設值後,則無論id欄位是null還是not null,都可以插入空,插入空值時預設填入default指定的預設值。
3.unique:唯一
(1)包括單列唯一、多列唯一以及聯合唯一。
create table user4(
id int unique,
name char(20)
);
create table user4(
id int,
name char(20),
unique(id)
);
(2)單列唯一
create table user4(
id int unique,
name char(20)
);
(3)多列唯一
多列都不相同才可以插入,只要有一列相同都不能插入
create table user5(
id int unique,
name char(20),
ip char(30)unique
);
(4)聯合唯一
只要有一列不同 都可以插入。
create table user6(
id int,
name char(20),
ip char(30),
unique(id,ip)
);
4.primary key
在MySQL的一個表中只有唯一的一個主鍵,不能有多列主鍵,但可以有複合主鍵
一個表中可以:
單列做主鍵
多列做主鍵(複合主鍵)
5.auto_increment
(1)不指定ID,則自動增長
(2)指定ID則按照指定的ID增長
(3)對於自增的欄位,在用delete刪除後,再插入值,該欄位仍按照刪除前的位置繼續增長
6.foreign key
create table emp(
id int primary key,
name varchar(20) not null,
age int not null,
dep_id int,
constraint fk_dep foreign key(dep_id) references dep(id)
on delete cascade #同步刪除
on update cascade #同步更新
);