Oracle数据完整性约束:主键、外键、各种约束的创建删除语句
ORACLE对数据库完整性的约束: 三种方法维护数据完整性:ORACLE完整性约束,数据库触发器,应用程序代码。应尽量使用ORACLE完整性
Oracle对数据库完整性的约束:
三种方法维护数据完整性:ORACLE完整性约束,数据库触发器,应用程序代码。
应尽量使用ORACLE完整性约束,可靠性和效率高,容易修改,使用灵活,记录在数据字典。
ORACLE五种约束:非空 not null,定义 的列不能为空。只能在列级定义
唯一,unique,表中每一行所定义 的列或列值不能相同
主键primary key 不能包括空值,主键唯一标识表中每一行,一列或几列组合为主键
外键foreign key 指明一列或几列的组合为外键以维护从表chilD table和主表 parent table 之间的引用完整性referential integrity
条件约束check,表中每一行要满足约束条件。约束加上表上,创建表时可以定义
1.查询约束查询表中是否有约束并显示约束名:显示表列所对应的约束的信息
BYS@bys1>select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.table_name = upper('&AA');
Enter value for aa: emp
old 1: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.table_name = upper('&AA')
new 1: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.table_name = upper('emp')
CONSTRAINT_NAME COLUMN_NAME
------------------------------ ---------------
PK_EMPNO EMPNO
查表中是否有主键约束
BYS@bys1>select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name =upper('&table_name');
Enter value for table_name: emp
old 1: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name =upper('&table_name')
new 1: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name =upper('emp')
CONSTRAINT_NAME COLUMN_NAME
------------------------------ ---------------
PK_EMPNO EMPNO
查当前用户下的所有约束的信息
BYS@bys1>col owner for a10
BYS@bys1>col table_name for a10
BYS@bys1>select * from user_cons_columns;
OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION
---------- ------------------------------ ---------- --------------- ----------
BYS PK_OBJ_ID TEST2 OBJECT_ID 1
BYS SYS_C0011203 TEST1 OBJECT_ID 1
BYS PK_EMPNO EMP EMPNO 1
查询当前用户的相关约束的状态信息,,可以查dba_constraints或USER_constraints
BYS@bys1>select constraint_name,table_name,constraint_type,status,deferrable,deferred,validated from dba_constraints where owner='BYS';CONSTRAINT_NAME TABLE_NAME C STATUS DEFERRABLE DEFERRED VALIDATED
------------------------------ ---------- - -------- -------------- --------- -------------
SYS_C0011203 TEST1 P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_EMPNO EMP P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_OBJ_ID TEST2 P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
SCOTT@bys1>select constraint_name,table_name,constraint_type,status,deferrable,deferred,validated from user_constraints;
CONSTRAINT_NAME TABLE_NAME C STATUS DEFERRABLE DEFERRED VALIDATED
------------------------------ ---------- - -------- -------------- --------- -------------
FK_DEPTNO EMP R ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_DEPT DEPT P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_EMP EMP P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
SYS_C0011265 TEST P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
PK_A TEST1 P ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED
增删主键及外键
alter table dept add constraint pk_dept primary key(deptno);
alter table dept2 add primary key(dname); 不指定约束名,则由系统自动命令约束名。
alter table emp add constraint fk_deptno foreign key(deptno) references dept(deptno) on delete cascade;
alter table emp add constraint fk_deptno foreign key(deptno) references dept(deptno);
注:on delete cascade和on delete set null的作用是用来处理级联删除问题的,
如果你需要删除的数据被其他数据所参照(主、外键),那么你应该决定到底希望oracle怎么处理那些参照这些即将要删除数据的数据的.
你可以有三种方式:
禁止删除,这也是oracle默认的。
将那些参照本值的数据的对应列赋空,使用on delete set null关键字。即删除本表的列中的值,对本列有外键引用的表的相应的列有相应值行会被修改为NULL。
将那些参照本值的数据一并删除,使用on delete cascade关键字,即删除本表的列中的值,对本列有外键引用的表的相应的列有相应值行会被删除
增加CHECK 约束:
alter table dept add constraint valid_deptno check (deptno); DEPTNO列的值需要少于5000
SQL>alter table customer add constraint abc check (address in (’海淀’,’朝阳’,’东城’,’西城’,’通州’,’崇文’,’昌平’)); 增加客户的住址只能是’海淀’,’朝阳’,’东城’,’西城’,’通州’,’崇文’,’昌平’;
增加惟一约束
alter table customer add constraint aaa unique(cardId);
增加非空约束--注意增加非空约束时用的是关键字modify,其它四种约束都是ADD
SQL>alter table dept modify dname not null;
删除对非空约束的删除:因为非空约束不能指定约束名,应该先通过查询表和列所对应的的约束信息,找出约束名,再删除。如下:
BYS@bys1>alter table dept drop constraint SYS_C0011725;
修改约束--大可以删除了重建
alter table dept2 modify constraint pk_d2 initially immediate;
删除指定名字的约束---可以是主键、外建或其它约束的名字
alter table emp drop constraint PK_EMPNO;
alter table scott.event drop constraint evtid_pk; 删除其它用户的约束--需要DBA权限
不用指定约束名,直接删除表中主键
altertable emp drop primary key cascade; 删除主键约束的时候,如果在些主键上的外键创建时未指定on delete cascade参数,直接删除主键报错,要加上cascade参数。
重命令约束
alter table scott.emp rename constraint pk_emp to emp_empno_pk;
更多详情见请继续阅读下一页的精彩内容:
相关阅读:
Oracle完整性约束
Oracle的约束和索引
从Oracle的约束到索引
Oracle常用数据类型和完整性约束
ORA-02291: 违反完整约束条件 …… - 未找到父项关键字

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

mysql邏輯主鍵是指在資料庫中用來識別一筆記錄的欄位或欄位組合,但它並不是唯一的。邏輯主鍵通常被用於資料查詢和資料操作。邏輯主鍵可以是任何具有標識性質的字段,例如在用戶表中,用戶名可以作為邏輯主鍵,因為它可以用於標識一條記錄,但是它並不是唯一的。

手機是現在中輕年人的必備之物,當然每個年齡層的人對手機需求是不一樣的。 RedmiK70Pro作為現在比較熱門的機型之一,內部擁有非常多樣的功能以及服務,可以滿足不同年齡層消費者們的需求。紅米RedmiK70Pro怎麼設定返回鍵和主鍵?也是需要了解清楚的,清楚之後才會決定要不要買這支手機,那就跟著小編一起來看看下面的內容吧!紅米RedmiK70Pro怎麼設定返回鍵和主鍵?若要存取手機的設定選單,您可以透過下拉通知欄或在主畫面上尋找設定圖示來開啟設定介面。在設定介面中,尋找並點擊“按鈕”或“導覽列”

如何讓MySQL外鍵和主鍵自動關聯?在MySQL資料庫中,外鍵和主鍵是非常重要的概念,它們能夠幫助我們在不同表之間建立關聯關係,確保資料的完整性和一致性。在實際的應用過程中,經常需要讓外鍵自動關聯到對應的主鍵上,以避免資料不一致的情況發生。以下將介紹如何透過具體的程式碼範例實現此功能。首先,我們需要建立兩個表,一個表作為主表,另一個表作為從表。在主表中創

榮耀X50Pro是最近剛正式發表的旗艦手機,這款手機採用了全新的外觀設計,顏值確實是非常不錯的,除了顏值之外這款手機的性能配置也很出色,那麼榮耀X50Pro怎麼設定返回鍵和主鍵?下面就讓我們來一起看看吧!榮耀X50Pro怎麼設定返回鍵和主鍵? 1.在主畫面上找到「設定」圖標,點選「系統和更新」功能選項;2、點選系統和更新功能項目中的「系統導航方式」;3、榮耀手機提供三種返回鍵設置,可根據自己的設定進行調整:榮耀X50Pro這款手機設定返回鍵和主鍵的方法還是很簡單的,大家可以按照上面的步驟來

隨著時代的快速發展,現在的手機技術也是在不斷進步的,以前手機會有各種按鍵,現在逐漸被淘汰了,不過還是有很多人習慣使用按鍵來控製手機,那麼榮耀90GT怎麼設置返回鍵和主鍵?下面就來一起看看吧!榮耀90GT怎麼設定返回鍵和主鍵?榮耀90GT是一款華為手機,設定返回鍵和主鍵的方法如下:步驟一:開啟設定:在手機桌面上找到「設定」圖標,點選進入設定介面。步驟二:尋找「系統與更新」選項:在設定介面中,向下滑動螢幕,找到並點選進入「系統與更新」選項。步驟三:進入導覽列設定:在系統與更新介面中,向下滑動螢幕,找

mysql主鍵可以用整數型別、自增長整數型別、UUID型別或字串型。類型詳細介紹:1、整數類型,最常見的主鍵類型之一,在MySQL中,可以使用不同的長度;2、自增長整數類型,可以自動分配唯一的整數值作為主鍵,這個類型非常適合用作主鍵,特別是在需要高並發插入資料的場景中;3、UUID類型,一種128位元的全域唯一標識符,可以確保資料的全域唯一性;4、字串類型,不建議使用等。

如何在MySQL中使用外鍵來維護資料的完整性?引言:在資料庫中,資料的完整性是非常重要的。透過使用外鍵,我們可以確保在資料庫中的關聯表之間保持資料的一致性和完整性。本文將向您介紹在MySQL中如何使用外鍵來維護資料的完整性。建立表格和關聯:首先,我們需要建立兩個表格,並將它們關聯起來。假設我們有兩個表格,一個是「orders」表格,另一個是「customer
