Oracle 學習筆記(三)

2021-08-11 18:50:49 字數 4364 閱讀 9915

約束:

定義規則,確保資料完整性、規範性

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...