約束:
定義規則,確保資料完整性、規範性
1、非空約束
注意:非空約束盡可以列級新增,不可表級新增
在建立表時新增非空約束
create table
table_name
(column1 datatype
not null,
... ...);
在修改表時新增非空約束
alter table
table_name
modify
column1 datatype
not null;
注意:在新增非空約束前要保證該欄位當前無空值
去除非空約束
alter table
table_name
modify
column1 datatype
null;
2、主鍵約束
注意:每張表只能存在乙個主鍵約束,但可以由多個字段構成
在建立表時新增主鍵約束(列級)
create table
table_name
(column1 datatype
primary key,
... ...
);在建立表時新增主鍵約束(表級)
create table
table_name
(column1 datatype
,... ...
constraint
constraint_name
primary key(
column1,column2,...));
在修改表時新增主鍵約束
alter table
table_name
add constraint
constraint_name
primary key(
column1,column2,...
);注意:在新增主鍵約束前需保證被設為主鍵的字段不為空且值唯一
檢視約束
desc user_constrains
select
constraint_name
from user_constraints
where table_name='
***x
';更改約束名稱
alter table
table_name
rename constraint
name_old
to name_new
;禁用/啟用主鍵約束
alter table
table_name
disable/enable constraint
constraint_name
;檢視約束狀態
select
constraint_name
,status
from user_constraints
where table_name='
***x
';刪除主鍵約束
alter table
table_name
drop constraint
constraint_name;或
alter table
table_name
drop primary key [cascade(如存在外來鍵約束,則可將其他表中依賴於該約束的外來鍵約束一併去除)]
3、外來鍵約束
說明:外來鍵約束時唯一涉及到兩個表的約束
建立表時新增外來鍵約束(列級)
create table
table_name
(從表)
(column1 datatype
references
table2_name
(主表) (
column1_name
),... ...
)注意:
(1)新增外來鍵時,主表的字段必須是主鍵;
(2)主從表的相應字段資料型別要一致(欄位名可不同);
(3)向設定了外來鍵約束的表中插入值時,必須來自於主表中相應欄位的值,或者null。
建立表時新增外來鍵約束(表級)
create table
table_name
(column1 datatype
,column2 datatype
,... ...
constraint
constraint_name
foreign key(
column_name
) perefences
table_name
(主表) (
column_name
)[on delete cascade](級聯刪除:主表中一條資料被刪除,從表中引用該資料的行也會被刪除)
)修改表時新增外來鍵約束
alter table
table_name
constraint
constraint_name
foreign key (
column1_name
) perefences
table_name
(主表)
(column2_name
)[on delete cascade]
禁用/啟用外來鍵約束
alter table
table_name
disable/enable constraint
constraint_name
;刪除外來鍵約束
alter table
table_name
drop constraint
constraint_name
;4、唯一約束
說明:保證表中值的唯一性
與主鍵約束的區別:主鍵約束每張表中只能有乙個,唯一約束可以有多個,且允許有乙個空值
在建立表時新增唯一約束(列級)
create table
table_name
(column1_name
datatype
unique,
... ...
)在建立表時新增唯一約束(表級)
create table
table_name
(column1_name datatype
,... ...
constraint
constraint_name
unique(
column1_name))
在修改表時新增外來鍵約束
alter table
table_name
add constraint
constraint_name
unique(
column1_name
);禁用/啟用唯一約束
alter table
table_name
disable/enable constraint
constraint_name
;刪除唯一約束
alter table
table_name
drop constraint
constraint_name
;5、檢查約束
說明:使表中的資料更具有實際意義
在建立表時新增檢查約束(列級)
create table
table_name
(column1_name
datatype
check(
expressions
);... ...
)在建立表時新增檢查約束(表級)
create table
table_name
(column1_name
datatype
,... ...
add constraint
constraint_name
check(
expressions))
在修改表時新增檢查約束
alter table
table_name
add constraint
constraint_name
check(
expressions
);禁用/啟用檢查約束
alter table
table_name
disable/enable constraint
constraint_name
;刪除檢查約束
alter table
table_name
drop constraint
constraint_name
;
Oracle學習筆記(三)
oracle 許可權傳遞 sky使用者登入 grant all on mytab to sinitek 授權mytab所有許可權給sinitek sinitek使用者登入 grant all on sky.mytab to freedom 授權sky的表mytab給freedom使用者 報錯,ora...
Oracle 學習筆記(三)
cid number 4 primary key,班級編號 cname varchar2 100 unique not null,班級名稱 cyear number 4 入學年份 clen number 1 學制 建立學生表 create table stuinfo stuno number 4 p...
Oracle學習筆記 三
五 操作表 1 表分為行和列 約定 每行資料唯一性,每列資料同類性,每列列名唯一性。2 資料型別 字元型 固定長度的字元型別 字元型別 char n max n 2000 nchar max n 1000 可變長度的資料型別 節省空間隨著資料的大小生成相應的資料 varchar2 max n 400...