成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Oracle的約束介紹與約束維護

瀏覽:160日期:2023-03-12 15:25:07
目錄
  • 一、什么是約束?
  • 二、約束分類
    • 1、not null(非空)
    • 2、default(默認)
    • 3、unique(唯一)
    • 4、primary key(主鍵)
    • 5、foreign key(外鍵):
    • 6、check(檢查)
  • 二、列級定義與表級定義
    • 1、列級定義
    • 2、表級定義
  • 三、約束維護
    • 1、增加約束
    • 2、刪除約束:
    • 3、顯示約束信息
    • 4、改變約束狀態
    • 5、重命名約束
    • 6、變更約束執行時間(是否延緩執行,只對可延緩約束有效)

數據的完整性用于確保數據庫數據遵從一定的商業的邏輯規則。在oracle中,數據完整性可以使用約束、觸發器、應用程序(過程、函數)三種方法來實現,在這三種方法中,因為約束易于維護,并且具有最好的性能,所以作為維護數據完整性的首選。

一、什么是約束?

約束用于確保數據庫數據滿足特定的商業規則。

二、約束分類

1、not null(非空)

如果在列上定義了not null,那么當插入數據時,必須為列提供數據。

create table user1(id number,name varchar2(30) not null);
insert into user1 values(001,"");//會報錯
--ORA-01400: 無法將 NULL 插入 ("SCOTT"."USER1"."NAME")

2、default(默認)

插入null值時,提供默認值。

create table yg (編號 number ,姓名 varchar2(10), 基本工資 number(8,2) default 1000)
-- 默認值的插入方法
insert into yg values(1,"A",default);
insert into yg (編號,姓名)values(1,"A");

3、unique(唯一)

當定義了唯一約束后,該列值是不能重復的,但是可以為null。

create table user2(id number unique,name varchar2(30));
insert into user2 values(1,111);//id輸入重復的值是會報錯
--ORA-00001: 違反唯一約束條件 (SCOTT.SYS_C0011172)

注意:oracle中unique可以為null,而且允許多行為null

4、primary key(主鍵)

用于唯一的標識表行的數據,當定義主鍵約束后,該列不但不能重復,而且不能為null。需要說明的是:一張表最多只能有一個主鍵,但是可以有多個unique約束。

create table user3(id number primary key,name varchar2(30));
insert into user3 values(1,111);
insert into user3 values(1,111);//報錯,唯一性
--ORA-00001: 違反唯一約束條件 (SCOTT.SYS_C0011173)
insert into user3 values(null,111);//報錯,不能為null
--ORA-01400: 無法將 NULL 插入 ("SCOTT"."USER3"."ID")

特別說明primary key與unique的區別:

  • 一張表可以有多個unique(唯一)約束;
  • 一張表只能有一個主鍵;
  • 設置為主鍵的列不能有null值;
  • primary key的所在列,會自動創建索引。但unique不會自動創建索引。

5、foreign key(外鍵):

用于定義主表和從表之間的關系,外鍵約束要定義在從表上,主表則必須具有主鍵約束或是unique約束,當定義外鍵約束后,要求外鍵列數據必須在主表的主鍵列存在或是為null。

create table class(id number primary key,name varchar2(32));
create table stus(id number primary key,name varchar2(36) not null,classid number references class(id));

特別說明:froeign key外鍵的細節

  • 外鍵指向主鍵列;
  • 外鍵可以指向unique列;
  • 建表時先建主表,再建從表;刪除表先刪從表,再刪主表。
  • 外鍵列屬性值要與主鍵或unique列屬性值一致
  • 外鍵列的值,必需在主鍵列中存在。但外鍵列的值允許為null

6、check(檢查)

用于強制行數據必須滿足某個條件,假定在sal列上定義了check約束,并要求sal列值在1000-2000之間,如果不再這個條件范圍內就會提示出錯。

create table user4(id number primary key,sal number check(sal>=1000 and sal<=2000),sex char(2) check(sex in("男","女")));
insert into user4 values(1,1000,"男");//sal列的值不滿足1000至2000,報錯。
--ORA-02290: 違反檢查約束條件 (SCOTT.SYS_C0011178)

小貼士 : not null,default 只能在列內定義,其余四中約束都可以在表內定義。列內定義:就是指在創建表的時候創建列在‘,’之前所寫的。

二、列級定義與表級定義

1、列級定義

列級定義是在定義列的同時定義約束。not null和default約束只能在列級上定義。如在department表定義主鍵約束:

create table department4(dept_id number(2) constraint pk_department primary key,// constraint指明約束,pk_employee表示自己定義的約束名
name varchar2(12),
loc varchar2(12)
);

2、表級定義

基本語法:

create table 表名(字段名 字段類型,...,constraint 約束名稱 約束條件(字段),約束條件(字段2),..);

表級定義是指在定義所有列后,再定義約束,這里需要注意。一般情況下,我們使用列級定義即可。但是如果遇到定義復合主鍵(兩列一起被定義為主鍵)時,需要用到表級定義。 以在建立employee2表時定義主鍵約束和外鍵約束為例

create table employee2(emp_id number(4),name varchar2(15),dept_id number(2),
constraint pk_employee primary key (emp_id),// constraint指明約束,pk_employee表示自己定義的約束名
constraint fk_department foreign key (dept_id) references department4(dept_id)
);

三、約束維護

1、增加約束

如果在建表時,忘記建立必要的約束,則可以在建表后使用alter table命令為表增加約束,但是要注意:增加not null約束時,需要使用modify選項,而增加其他四種約束使用add選項。

alter table goods modify goodsName not null

alter table customer add constraint cardunique unique(cardID);   ///add constraint表示增加約束,后面跟約束的名字

alter table customer add constraint addresscheck check (address in (‘海淀","朝陽","東城","西城","通州","崇文"));

2、刪除約束:

當不再需要某個約束時,可以刪除。

alter table 表名 drop constraint 約束名稱;

特別說明一下:在刪除主鍵約束的時候,可能有錯誤,比如:

alter table 表名 drop constraint primary key;

這是因為如果在兩張表存在主從關系,那么在刪除主表的主鍵約束時,必須帶上cascade選項。如像:

alter table 表名 drop constraint primary key cascade;

3、顯示約束信息

1)顯示約束信息

通過查詢數據字典視圖user_constraints,可以顯示當前用戶所有的約束信息。

Select constraint_name,constraint_type,status,validated from user_constraints where table_name ="表名";

2)顯示約束列

通過查詢數據字典視圖user_cons_columns,可以顯示約束所對應的表列信息

Select column_name,position from user_cons_columns where constraint_name="約束名";

4、改變約束狀態

ALTER TABLE xxx.yyy ENABLE|DISABLE VALIDATE|NOVALIDATE CONSTRAINT ccc;

5、重命名約束

ALTER TABLE xxx.yyy RENAME CONSTRAINT ccc TO ccc_new;

6、變更約束執行時間(是否延緩執行,只對可延緩約束有效)

SET CONSTRAINTS xxx IMMEDIATE;      --立即
--或
SET CONSTRAINTS xxx DEFERRED;--延緩

到此這篇關于Oracle約束的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持。

標簽: Oracle
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
91精品欧美久久久久久动漫| 无码av免费一区二区三区试看| 亚洲欧美另类久久久精品| 午夜电影网亚洲视频| 91久久精品午夜一区二区| 中文字幕日韩av资源站| 国产精品www.| 国产亚洲精品aa午夜观看| 国产v日产∨综合v精品视频| 欧美高清视频不卡网| 久久精品国产精品亚洲综合| 欧美在线你懂的| 久久99久久99精品免视看婷婷| 精品视频全国免费看| 久久97超碰国产精品超碰| 欧美片网站yy| 国产白丝网站精品污在线入口 | proumb性欧美在线观看| 91精品国产高清一区二区三区蜜臀| 欧美在线免费播放| 亚洲专区一二三| 亚洲一区自拍| 天堂一区二区在线免费观看| 色哟哟精品一区| 久久国内精品视频| 91精品免费观看| 成人黄色大片在线观看| 国产欧美一区二区三区网站| 欧美区国产区| 亚洲欧美成人一区二区三区| 国产伦精品一区二区三区视频黑人| 亚洲一区视频在线观看视频| 一本大道久久a久久综合婷婷| 久久国产精品一区二区| 日韩精品影音先锋| 欧美日韩一卡| 亚洲综合男人的天堂| 色噜噜狠狠色综合欧洲selulu| 国产一区二区主播在线| 久久综合九色综合久久久精品综合 | 久久综合亚州| 黑人精品欧美一区二区蜜桃| 91麻豆精品国产91久久久资源速度 | hitomi一区二区三区精品| 久久久精品天堂| 亚洲高清精品中出| 亚洲综合一区在线| 欧美午夜电影一区| 成人午夜在线视频| 国产精品第五页| 久久久久久九九九九| 国产一区二区美女诱惑| 国产香蕉久久精品综合网| 国产欧美日韩综合一区在线观看| 蜜乳av一区二区三区| 精品国产露脸精彩对白| 亚洲天堂久久| 日本不卡视频一二三区| 精品日韩在线观看| 亚洲精品1区2区| 九九久久精品视频| 亚洲国产精品成人综合| 久久久999| 成人免费看黄yyy456| 亚洲男人电影天堂| 欧美放荡的少妇| 国内精品久久国产| 热久久久久久久| 久久久一区二区| 久久狠狠婷婷| 99在线精品观看| 夜夜嗨av一区二区三区四季av| 欧美日韩小视频| 欧美精品成人| 麻豆成人91精品二区三区| 久久先锋影音av鲁色资源| 亚洲欧美日韩国产综合在线| 欧美日本在线一区| 亚洲婷婷在线| 国产一区视频导航| 亚洲同性同志一二三专区| 欧美美女一区二区三区| 狠狠爱www人成狠狠爱综合网| 美女久久久精品| 欧美国产一区二区| 欧美日韩视频专区在线播放| 欧美视频亚洲视频| 久久99精品国产.久久久久| 国产精品国产三级国产| 欧美嫩在线观看| 日韩五码在线| 成人午夜电影久久影院| 偷偷要91色婷婷| 国产精品日韩精品欧美在线| 欧美性xxxxx极品少妇| 国产精品二区在线观看| 国产又黄又大久久| 一区二区三区在线观看网站| 精品区一区二区| 久久一综合视频| 欧美日韩在线大尺度| 久久激情五月激情| 亚洲欧洲中文日韩久久av乱码| 欧美成人午夜电影| 久久青青草综合| 国产精品mm| 国产福利一区在线观看| 亚洲成人动漫一区| 亚洲国产电影在线观看| 欧美丰满少妇xxxxx高潮对白| 国产精品一级| 91免费版在线看| 极品少妇一区二区| 亚洲丰满少妇videoshd| 国产婷婷色一区二区三区四区| 欧美日韩国产片| 亚洲国产精选| 欧美高清dvd| 国产偷国产偷亚洲高清97cao| 欧美一区二区三区免费视频| 久国产精品韩国三级视频| 日本精品视频一区二区三区| 午夜久久久久久| 色先锋久久av资源部| 亚洲国产精品传媒在线观看| 91一区二区三区在线播放| 亚洲精品免费看| 久久久www成人免费无遮挡大片| 欧美日韩三级在线| 久久成人精品| 亚洲精品1234| 91麻豆蜜桃一区二区三区| 国产精品综合二区| 麻豆精品视频在线观看免费| 亚洲在线观看免费视频| 中文字幕亚洲精品在线观看| 久久久久九九视频| 欧美成人性战久久| 91精品国产高清一区二区三区蜜臀 | 亚洲成a人片在线不卡一二三区 | 亚洲日本护士毛茸茸| 久久九九全国免费| 欧美一区二区视频在线观看2020 | 日韩电影在线一区| 亚洲一区二区欧美| 亚洲少妇屁股交4| 日本一区二区三区四区| 亚洲精品一区二区三区四区高清 | 91小宝寻花一区二区三区| 国内精品免费在线观看| 日韩中文欧美在线| 亚洲国产精品天堂| 亚洲一线二线三线视频| 亚洲久草在线视频| 亚洲欧美怡红院| 国产精品家庭影院| 中文字幕精品三区| 久久久久久一级片| 久久久一区二区| 久久久久久久综合色一本| 精品日韩在线观看| 精品国产一区二区三区久久久蜜月| 欧美一级免费观看| 欧美一区二区三区不卡| 91精品国产福利| 欧美一区二区三区视频| 日韩一区二区三区在线| 欧美电视剧免费全集观看| 欧美大片在线观看一区二区| 精品欧美久久久| 精品成人一区二区三区| 26uuu欧美| 国产午夜精品一区二区| 国产精品无码永久免费888| 国产精品欧美极品| 国产精品久线观看视频| 亚洲视频一区在线观看| 亚洲激情中文1区| 亚洲午夜羞羞片| 日韩中文字幕麻豆| 免费成人在线网站| 韩国精品主播一区二区在线观看 | 亚洲欧洲一区二区天堂久久| 在线播放豆国产99亚洲| 一本一本久久| 色哟哟一区二区在线观看| 欧美日韩精品一区视频| 日韩精品中文字幕一区二区三区| 精品国产电影一区二区| 国产欧美一区二区三区网站| 亚洲天堂2014| 午夜在线成人av| 亚洲精品女人| 国产欧美一区二区三区网站| 欧美激情无毛| 成人免费毛片app| 国内不卡的二区三区中文字幕| 亚洲第一福利一区| 一区二区高清免费观看影视大全| 国产精品久久久久国产精品日日|