电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle的約束介紹與約束維護

瀏覽:113日期: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、改變約束狀態(tài)
    • 5、重命名約束
    • 6、變更約束執(zhí)行時間(是否延緩執(zhí)行,只對可延緩約束有效)

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

一、什么是約束?

約束用于確保數(shù)據(jù)庫數(shù)據(jù)滿足特定的商業(yè)規(guī)則。

二、約束分類

1、not null(非空)

如果在列上定義了not null,那么當(dāng)插入數(shù)據(jù)時,必須為列提供數(shù)據(jù)。

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(唯一)

當(dāng)定義了唯一約束后,該列值是不能重復(fù)的,但是可以為null。

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

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

4、primary key(主鍵)

用于唯一的標(biāo)識表行的數(shù)據(jù),當(dāng)定義主鍵約束后,該列不但不能重復(fù),而且不能為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的區(qū)別:

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

5、foreign key(外鍵):

用于定義主表和從表之間的關(guān)系,外鍵約束要定義在從表上,主表則必須具有主鍵約束或是unique約束,當(dāng)定義外鍵約束后,要求外鍵列數(shù)據(jù)必須在主表的主鍵列存在或是為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外鍵的細節(jié)

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

6、check(檢查)

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

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 只能在列內(nèi)定義,其余四中約束都可以在表內(nèi)定義。列內(nèi)定義:就是指在創(chuàng)建表的時候創(chuàng)建列在‘,’之前所寫的。

二、列級定義與表級定義

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),..);

表級定義是指在定義所有列后,再定義約束,這里需要注意。一般情況下,我們使用列級定義即可。但是如果遇到定義復(fù)合主鍵(兩列一起被定義為主鍵)時,需要用到表級定義。 以在建立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、刪除約束:

當(dāng)不再需要某個約束時,可以刪除。

alter table 表名 drop constraint 約束名稱;

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

alter table 表名 drop constraint primary key;

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

alter table 表名 drop constraint primary key cascade;

3、顯示約束信息

1)顯示約束信息

通過查詢數(shù)據(jù)字典視圖user_constraints,可以顯示當(dāng)前用戶所有的約束信息。

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

2)顯示約束列

通過查詢數(shù)據(jù)字典視圖user_cons_columns,可以顯示約束所對應(yīng)的表列信息

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

4、改變約束狀態(tài)

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

5、重命名約束

ALTER TABLE xxx.yyy RENAME CONSTRAINT ccc TO ccc_new;

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

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

到此這篇關(guān)于Oracle約束的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持。

標(biāo)簽: Oracle
相關(guān)文章:
主站蜘蛛池模板: 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 铁素体测量仪/检测仪/铁素体含量测试仪-苏州圣光仪器有限公司 | 船老大板材_浙江船老大全屋定制_船老大官网 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 齿轮减速电机一体机_蜗轮蜗杆减速马达-德国BOSERL齿轮减速机带电机生产厂家 | 卸料器-卸灰阀-卸料阀-瑞安市天蓝环保设备有限公司 | 食安观察网| 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 学考网学历中心| 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 | 学考网学历中心| 广东西屋电气有限公司-广东西屋电气有限公司| 桑茶-七彩贝壳桑叶茶 长寿茶 | 防水试验机_防水测试设备_防水试验装置_淋雨试验箱-广州岳信试验设备有限公司 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 干培两用箱-细菌恒温培养箱-菲斯福仪器 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 合同书格式和范文_合同书样本模板_电子版合同,找范文吧 | 远程会诊系统-手术示教系统【林之硕】医院远程医疗平台 | 北京成考网-北京成人高考网 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | Jaeaiot捷易科技-英伟达AI显卡模组/GPU整机服务器供应商 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 制氮设备-变压吸附制氮设备-制氧设备-杭州聚贤气体设备制造有限公司 | 反渗透水处理设备|工业零排放|水厂设备|软化水设备|海南净水设备--海南水处理设备厂家 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 土壤水分自动监测站-SM150便携式土壤水分仪-铭奥仪器 | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 |