含義:一種限制,用於限制表中的資料,為了保證表中資料的準確和可靠性。
分類:
六大約束:
not null 非空 :用於保障該字段的值不能為空, 比如姓名、學號等
default 預設: 用於保證該字段有預設值,比如性別、
primary key 主鍵: 用於保證該字段的值有唯一性,並且非空。是能夠唯一的標識一組資料的資料元素;比如說:學號,姓名,年齡,性別,課程號課程中學號是唯一的
unique 唯一約束: 用於保障該字段的值有唯一性,可以為空, 比如座位號
check 檢查約束:mysql中不支援,但不報錯
foreign key 外來鍵:用於限制兩個標的關係 用於保證該字段的值必須來自於主表關聯的值。 一組資料的主鍵是另一組資料的的元素;主鍵約束了外來鍵所在表中不能存在主鍵類之外的值;外來鍵用於與另一張表的關聯。比如:學生表的專業編號、員工表的部門編號。
新增約束表的實際:1)建立表時;2)修改表時
約束新增分類:
create
table 表名(
欄位名1 字段型別 列級約束,
欄位名2 字段型別,
欄位名3 字段型別
表級約束
)
外來鍵取值規則:空值或參照的主鍵值。
(1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。
(2)更新時,不能改為主鍵表中沒有的值。
(3)刪除主鍵表記錄時,可以在建外鍵時選定外來鍵記錄一起級聯刪除還是拒絕刪除。
(4)更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。
sql的主鍵和外來鍵就是起約束作用。
#建立約束
create
database stu;
use stu;
create
table major(
id int
primary
key,
majorname varchar(20
));create
table stuinfo(
id int
primary
key,
#主鍵 stuname varchar(20
)not
null
,#非空
gender char(1
)check
(gender=
'男'or gender=
'女')
,#檢查,mysql不支援
seat int
unique
,#唯一
age int
default18,
#預設 major int
references major(id)
#外來鍵,mysql不支援);
#新增表級約束
drop
table
ifexists stuinfo;
create
table stuinfo(
id int
, stuname varchar(20
),gender char(1
), seat int
, age int
, majorid int
,constraint pk primary
key(id)
,constraint uq unique
(seat)
,constraint ck check
(gender=
'男'or gender=
'女')
,constraint fk_stuinfo_major foreign
key(majorid)
references major(id));
#檢視約束情況
desc stuinfo;
show
index
from stuinfo;
通用寫法:
create
table
ifnot
exists stuinfo(
id int
primary
key,
#主鍵 stuname varchar(20
)not
null
,#非空
gender char(1
),#檢查,mysql不支援
seat int
unique
,#唯一
age int
default18,
#預設 majorid int
,constraint fk_stuinfo_major foreign
key(majorid)
references major(id)
fk_stuinfo_major 列名_當前表名_引用表名
保證唯一性
是否為空
乙個表有多少個
允許組合?
主鍵可以
x最多乙個
允許,但不推薦
唯一可以
可以可以有多個
允許,但不推薦
組合主鍵
drop
table
ifexists stuinfo;
create
table
ifnot
exists stuinfo (
id int
, stuname varchar(20
), gender char(1
), seat int
, age int
, majorid int
,primary
key(id,stuname)
,unique
(seat)
,check
(gender=
'男'or gender=
'女')
,foreign
key( majorid )
references major ( id )
);
結果顯示 id 和stuname 都是主鍵,兩個欄位一摸一樣時不能插入資料。保證兩個欄位的組合是唯一的。
主鍵約束 唯一約束 非空約束 預設約束
1 主鍵約束 每個表中最多有乙個主鍵約束,定義為主鍵的字段不能重複,不能為null值。欄位名 資料型別 primary key primary key 欄位1,欄位2.2 非空約束 字段值不為空 欄位名 資料型別 not null 3 唯一約束 字段值不重複出現 欄位名 資料型別 unique 4 ...
MySQL學習 主鍵約束 非空約束 唯一約束
約束的概念 對錶中的資料進行限定,保證資料的正確性 有效性和完整性 1 主鍵約束 primary key 1.1注意 1 含義 非空且唯一 2 一張表只能有乙個字段為主鍵 3 主鍵就是表中記錄的唯一標識 1.2 在建立表時新增主鍵約束 create table stu id int primary ...
唯一約束,主鍵約束,唯一索引
1.unique約束和primary key約束用來保證同一表中指定的列上沒有重複值,這兩個約束都產生唯一索引確保資料一致性,預設情況下,unique約束產生唯一的非聚集索引,primary key約束產生唯一的聚集索引。primary key約束比unique約束嚴格 primary key列不允...