#常見約束
/*含義:一種限制,用於限制表中的資料,為了保證表中資料的可靠性和準確性
分類:六大約束
not null:非空,用於保證欄位的值不能為空
比如姓名,學號等
default:預設,用於保證該字段有預設值
比如性別
primary key:主鍵,用於保證該字段的值具有唯一性,並且非空
比如學號,員工編號等
unique:唯一:,用於保證該字段的值具有唯一性,可以為空
比如座位號
check:檢查約束【mysql不支援】
比如年齡、性別
foreign key:外來鍵:用於限制兩個表的關係,用於保證該字段的值必須來自於主表的關聯列的值
在從表新增外來鍵約束,用於引用主表中某列的值
比如學生表的專業編號,員工表的部門編號
新增約束的時機:
1.建立表時
2.修改表時
約束的分類:
列級約束:
六大約束語法上都支援,但外來鍵約束沒有效果
表級約束:
除了非空、預設,其他都支援
主鍵和唯一的大對比:
保證唯一性 是否允許為空 乙個表中可以有多少個 是否允許組合
主鍵 √ × 至多有乙個 允許,但不銳減
唯一 √ √ 可以有多個 允許,但不推薦
外來鍵: 1.要求在從表設定外來鍵關係
2.從表的外來鍵值得型別和主表的關聯列的型別要求一致或者相容,名稱無要求
3.主表的關聯列必須是乙個key(一般是主鍵或者唯一)
4.插入資料時,應該先插入主表,在插入從表
刪除資料時,先刪除從表,再刪除主表
*/create
database stedents;
#一、建立表時新增約束
#1、新增列級約束
/*語法:
直接在欄位名後面追加 約束型別即可
只支援:預設、非空、主鍵、唯一
*/create
table stuinfo (
id int
primary
key,
#主鍵 stuname varchar(20
)not
null
,#非空
gender char(1
)check
(gender=
'男'or gender =
'女')
,#檢查
seat int
unique
,#唯一
age int
default18,
#預設約束
majorid int
references major(id)
#外來鍵)
;create
table major (
id int
primary
key,
majorname varchar(20
));desc stuinfo;
#檢視stuinfo的約束
show
index
from stuinfo;
#2、新增表級約束
/*語法:
【constraint 約束名】 約束型別(欄位名)
*/drop
table
ifexists stuinfo;
create
table stuinfo(
id int
, stuname varchar(20
),gender char(1
),seat int
, age int
, majorid int
,primary
key(id)
,#主鍵
unique
(seat)
,#唯一值
check
(gender =
'男'or gender =
'女')
,#檢查
foreign
key(majorid)
references major(id)
#外來鍵)
;show
index
from stuinfo;
#通用的寫法
create
table stuinfo(
id int
primary
key,
stuname varchar(20
)not
null
, *** char(1
),age int
default18,
seat int
unique
, majorid int
,constraint fl_stuinfo_major foreign
key(majorid)
references major(id)
#外來鍵)
;#二、修改表時新增約束
/*1、新增列級約束
alter table 表名 modfiy column 欄位名 字段型別 新約束;
2、新增表級約束
alter table 表名 add 【constraint 約束名】 約束型別(欄位名) 【外來鍵引用】;
*/drop
table
ifexists stuinfo;
create
table stuinfo(
id int
, stuname varchar(20
),gender char(1
),seat int
, age int
, majorid int);
desc stuinfo;
#1、新增非空約束
alter
table stuinfo modify
column stuname varchar(20
)not
null
;#2、新增預設約束
alter
table stuinfo modify
column age int
default18;
#3、新增主鍵
#①列級約束
alter
table stuinfo modify
column id int
primary
key;
#②表級約束
alter
table stuinfo add
primary
key(id)
;#四、新增主鍵
#①列級約束
alter
table stuinfo modify
column
setint
unique
;#②表級約束
alter
table stuinfo add
unique
(seat)
;#五、新增外來鍵
alter
table stuinfo add
foreign
key(majorid)
references major(id)
;#三、修改表時刪除約束
desc stuinfo;
#1、刪除非空約束
alter
table stuinfo modify
column stuname varchar(20
)null
;#2、刪除預設約束
alter
table stuinfo modify
column age int
;#3、刪除主鍵
alter
table stuinfo drop
primary
key;
#4、刪除唯一鍵
alter
table stuinfo drop
index seat;
#5、刪除外來鍵
alter
table stuinfo drop
foreign
key fk_stuinfo_major;
show
index
from stuinfo;
資料庫常見的約束
約束分為字段級別約束和表級別約束 字段級約束 只為單個字段新增約束 表級約束 為乙個或多個字段新增約束 primary key 不重複且不為null not null,unique 不重複但是可以有多個null auto incremenrt,foreign key name reference t...
MySQL資料庫 資料約束
對使用者操作表的資料進行約束 作用 當使用者對使用預設值的字段不插入值的時候,就使用預設值。注意 1 對預設值字段插入 null 是可以的 2 對預設值字段可以插入非 null create table student id int,name varchar 20 address varchar 2...
資料庫學習 14 常見約束
一種限制,用於限制表中的資料,為了保證表中的資料的準確和可靠性。六大約束 1.建立表時 2.修改表時 1.列級約束 約束只能應用於一列上,六大約束語法上都支援,但外來鍵約束沒有效果 2.表級約束 可以應用於一列上,也可以應用在乙個表中的多個列上,除了非空 預設,其他的都支援 create table...