Oracle 約束小結

2021-07-23 17:36:28 字數 2437 閱讀 8846

--unique可作用於列級和表級;

--primary key 可作用於列級和表級,相當於同時宣告了not null 和unique;

--foreign key 可作用於列級和表級,一般作用於表級

--check() 可作用於列級和表級

--建立表的時候建立約束,兩種不同的形式(自定義名和系統預設)

/*create table emp2(

idnumber(10) constraint emp2_id_nn not null,

name varchar2(20) not null,

salary number(10,2)

)*/--同時為一列建立非空約束和唯一約束

/*create table emp4(

--列級約束

idnumber(10) constraint emp4_id_nn not null ,

name varchar2(20) constraint emp4_name_nn not null,

email varchar2(20),

salary number(10,2),

--表級約束

constraint emp4_id_uk unique(id),

constraint emp4_email_uk unique(email)

)*/--constraint primary key

/*create table emp4(

--定義在列級

idnumber(10) constraint emp4_id_pk primary key,

name varchar2(20) not null,

salary number(10,2),

email varchar2(20),

constraint emp4_email_uk unique(email)

--定義在表級

--constraint emp4_id_pk primary key(id)

)*/--定義外來鍵約束

/*create table emp5(

idnumber(10) constraint emp5_id_pk primary key,

name varchar2(20) not null,

salary number(10,2),

email varchar2(20),

department_id number(20),

constraint emp5_email_uk unique(email),

--定義在表級

constraint emp5_dept_id_fk foreign key(department_id) references departments(department_id) on

delete set null

)/*departments 為父表,emp5為子表*/

/*on

delete cascade 級聯刪除,當父表中的列被刪除時,子表中相對應的列也被刪除*/

/*on

delete set null 級聯置空 ,。。。子表中相應的列置空*/

-- check約束

create table emp7(

idnumber(10) constraint emp7_id_pk primary key,

name varchar2(20) constraint emp7_name_nn not null,

salary number(10,2) constraint emp7_salary_ck check(salary>1500),

email varchar2(20),

constraint emp7_email_uk unique(email),

--定義在表級,不用再在後面額外追加列名,已經寫在了check(裡面)

--constraint emp7_salary_ck check(salary>1500)

)--新增修改刪除約束

alter table emp5

--add

add constraint emp5_name_uk unique

--modify

modify (salary number(10,2) not null)

--drop

drop constraint sys_c005484

--disable

disable constraint emp5_name_uk

--enable

enable constraint emp5_name_uk

--查詢約束

select constraint_name,constraint_type,search_condition,column_name

from user_constraints where table_name = 'employees'

差分約束小結

感覺這玩意挺簡單的。出不了太難的題啊。這種奇怪的圖是可以跑最長路的,因為負環遲早要退出。一般來說要先判圖中是否存在正 負環,可以用spfa記錄每個點鬆弛次數判斷。每個點在一開始都扔進佇列,或者新建超源與點連邊均可。第二種更加有邏輯,且能處理點有初始值的情況,方式為將超源到點的邊權賦為點權,點到超源的...

Oracle建立約束 刪除約束

1.定義not null 約束not null 約束只能在列級定義,不能在表級定義 例 create table emp01 eno int not null,name varchar2 10 constraint nn name2 not null,salary number 6,2 2.定義un...

oracle 約束之主鍵約束

1 主鍵約束作用 確保表中每一行資料是唯一的,要求非空且唯一 2 一張表中只能設定乙個主鍵約束 主鍵約束可以由多個字段構成 聯合主鍵或復合主鍵 1 在建立表時設定主鍵約束 建立聯合主鍵 通過user constraints資料字典查詢表中主鍵的名稱 2 修改表時新增主鍵約束 alter table ...