2.修改表時新增約束:alter table ...
3.刪除約束:alter table
注意完整性約束:用於限制欄位的值必須滿足一定的條件,從而保證資料表中的資料的一致性和完整性!!!
1.常見的約束:
2.約束的特性:
例:
create
table major(
id int
primary
keyauto_increment
, majorname varchar(20
));
列級約束語法:字段宣告 + 約束名
create
table
ifnot
exists constrainttab(
id int
primary
key,
#主鍵 name varchar(20
)not
null
unique
,#非空+唯一
gender char
default
'男',
#預設 age int
check
(age between
18and
120)
,#檢查
seat int
unique
,#唯一
majorid int
,constraint fk foreign
key(majorid)
references major(id)
#外來鍵:fk約束名
);
表級約束語法:約束型別(欄位名)
[
constraint 約束名] 約束型別(欄位名)
[references 主表(欄位名)
]
案例:
create
table
ifnot
exists constrainttab(
id int
, name varchar(20
)not
null
,# 非空
gender char
default
'男',
# 預設
age int
, seat int
, majorid int
,constraint fk foreign
key(majorid)
references major(id)
,#外來鍵
primary
key(id)
,#主鍵
constraint uq unique
(seat)
,#唯一
constraint ck check
(age between
10and
100)
#檢查)
;
建立案例表:
drop
table
ifexists constrainttab;
create
table
ifnot
exists constrainttab(
id int
, name varchar(20
),gender char
, seat int
, age int
, majorid int
);
1.新增主鍵:primary key
alter
table constrainttab modify
column id int
primary
key;
alter
table constrainttab add
primary
key(id)
;# 對比新增列:
alter
table stu add
column classname varchar
(100
);
2.新增唯一鍵: unique
alter
table constrainttab modify
column seat int
unique
;
alter
table constrainttab add
unique
(name)
;
3.新增檢查約束:check
alter
table constrainttab
modify
column age int
check
(age>=
10and age<
100)
;
alter
table constrainttab
addcheck
(age>=
10and age<
100)
;
4.新增外來鍵:foreign key
只能當做表級約束,所以使用新增字段定義的方式:add
alter
table constrainttab add
constraint fk_major_stuinfo
foreign
key(majorid)
references major(id)
;
5.新增預設:default
只能當做列級約束,所以使用修改列的定義方式:modify
alter
table constrainttab modify
column gender char
default
'男';
6.新增非空:not null
只能當做列級約束,所以使用修改列的定義方式:modify
alter
table constrainttab modify
column name varchar(20
)not
null
;
1.刪除主鍵:只有乙個
alter
table constrainttab drop
primary
key;
2.刪除唯一:可以有多個,所以需指定欄位名
alter
table constrainttab drop
index seat;
3.刪除外來鍵:可以有多個,所以需指定外來鍵約束名
alter
table constrainttab drop
foreign
key constrainttab_ibfk_1;
4.刪除非空:通過修改列屬性
alter
table constrainttab modify
column name varchar(20
)null
;
5.刪除預設:通過修改列屬性
alter
table constrainttab modify
column gender char(1
);
建立表時,在constraint約束區域,宣告指定字段為主鍵:
檢視表的索引:
show
index
from constrainttab;
SQL完整性約束
完整性約束保證授權使用者對資料庫所做的修改不會破壞資料的一致性。not null宣告禁止在該屬性上插入空值。任何可能導致向乙個宣告為not null的屬性插入空值的資料都會產生錯誤診斷資訊。unique aj 1 aj 2 aj m unique宣告指出aj 1 aj 2 aj m 形成了乙個候選碼...
SQL完整性約束
1.資料定義語句 ddl create alter drop truncate 表結構 2.資料操縱語句 dml insert delete update select 3.資料控制語句 dcl 授權 grant 收回許可權 revoke 4.失誤控制語句 tcl 開啟事務 begin transa...
完整性約束
create table student tb id int notnull 非空約束 資料不允許為空 name varchar 255 null 顯式指定允許為空 新增非空約束 alter table 表名 modify column 屬性名 屬性型別 not null alter table s...