Oracle(13)Maintaining Data Integrity

目录

一、基础知识

1、Data Integrity 数据库的完整性

2、Types of Constraints 约束类型

3、Constraint States 约束状态

4、Guidelines for Constraints 约束准则

二、基础操作

1、Enabling Constraints 启用约束

2、命令方式创建约束

 3、修改表创建的约束

4、删除约束

5、列级定义

6、表级定义


Maintaining Data Integrity 维护数据完整性

目标:

  • 实现数据完整性约束
  • 维护完整性约束
  • 获取约束信息

一、基础知识

1、Data Integrity 数据库的完整性

2、Types of Constraints 约束类型

  • NOT NULL:非空约束(表级和列级)
  • UNIQUE:唯一约束(一列或者多列的组合是唯一的)
  • PRIMARY KEY:主键约束(同时包含非空约束和唯一约束)
  • FOREIGN KEY:外键约束
  • CHECK:限制约束(比如约束id必须大于0,性别只能为男女之类的)

3、Constraint States 约束状态

以下是最佳切换步骤(unique约束会让这四种状态切换存在问题,切换前要先变成nounique状态):

  • DISABLE NOVALIDATE:稍后执行约束,不检查之前存在的数据
  • DISABLE VALIDATE:稍后执行约束,检查之前存在的数据,此时就等于只读模式
  • ENABLE NOVALIDATE:立刻执行约束,不检查之前存在的数据
  • ENABLE VALIDATE:立刻执行约束,并且检查之前存在的数据

完整性约束的有效使用:一个程序
按照以下顺序使用完整性约束状态可以确保获得最佳收益:

  • 1.禁用状态。
  • 2.执行操作(加载、导出、导入)。
  • 3.启用novalidate状态。
  • 4.启用状态。

按此顺序使用约束的一些好处是:

  • 没有锁。
  • 所有约束都可以同时进入启用状态。
  • 约束启用是并行完成的。
  • 允许在表上进行并发活动

4、Guidelines for Constraints 约束准则

  • 主键约束和唯一约束
    • 将索引放在单独的表空间中
    • 如果批量加载频繁,请使用非唯一索引。
  • 自引用外键
    • 在初始加载后定义或启用外键。
    • 延迟约束检查。

二、基础操作

1、Enabling Constraints 启用约束

  • 表上没有锁
  • 主键和唯一键需要使用非唯一索引
ALTER TABLE hr.departments
ENABLE NOVALIDATE CONSTRAINT dept_pk;

2、命令方式创建约束

这里以check约束为例

CREATE TABLE <表名>
( <列名> <数据类型> [DEFAULT <默认值>] [NOT NULL | NULL][CONSTRAINT <约束名>] 约束方式 /*定义为列的约束*/[,…n][CONSTRAINT <约束名>] 约束方式 /*定义为表的约束*/
)

例如:创建一个表demo,并且为该表的属性score创建一个check约束条件。

create table demo(sid VARCHAR(20) NOT NULL ,sname VARCHAR(20) NOT NULL,profession VARCHAR(20) NOT NULL,score NUMBER(4) check(score>60 and score<80) NOT NULL
);

 3、修改表创建的约束

ALTER TABLE <表名>ADD CONSTRAINT <约束名> <约束种类>

4、删除约束

ALTER TABLE <表名>DROP CONSTRAINT <约束名称>

5、列级定义

  • 列级定义是在定义列的同时定义约束。
  • 特别注意:not null只能在列级定义,不可在表级定义中出现。

示例:

create table temp1
( id number primary key,
name varchar2(32) not null
);

6、表级定义

  • 表级定义是在定义了所有列后,再定义约束。
  • 基本语法:
  • create table 表名(字段名 字段类型,...,constraint 约束名称 约束条件(字段),约束条件(字段2),..);

示例:

create table temp2
( id number,
name varchar(32),
constraint pr_id primary key(id), unique(name)
);

语法:

constraint 约束名称 primary key(字段..)

constraint 约束名称 foreign key(字段) references 主表(字段)

constraint 约束名称 unique(字段)

constraint 约束名称 check(字段条件)

一般情况下,使用列级定义即可。但是如果遇到定义复合主键(两列一起被定义为主键)时,需要用到表级定义。

举例,将id与name定义为复合主键:

create table temp3
(id number,
name varchar2(64),
nums number,
constraint pk_id_name primary key(id,name)
);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript_Element对象_方法

1、Element.focus() Element.focus方法用于将当前页面的焦点&#xff0c;转移到指定元素上 2、Element.blur() Element.blur方法用于将焦点从当前元素移除 3、Element.remove() Element.remove方法用于将当前元素节点从它的父节点移除 4、Element.getBoundingClientRect() …

常用的电子邮件服务提供商有哪些?

当我们讨论常用的电子邮件服务时&#xff0c;可以根据国内和国外进行分类观察。以下是一些常见的国内和国外电子邮件服务。 什么是国外邮箱和国内邮箱&#xff1f; 国外邮箱是指在国外注册和使用的电子邮箱&#xff0c;而国内邮箱则是在国内注册和使用的电子邮箱。 国外邮箱是指…

链表(1)

目录 单链表 主函数test.c test1 test2 test3 test4 头文件&函数声明SList.h 函数实现SList.c 打印SLPrint 创建节点CreateNode 尾插SLPushBack 头插SLPushFront 头删SLPopBck 尾删SLPopFront 易错点 本篇开始链表学习。今天主要是单链表&OJ题目。 单链…

2.3 CSS 属性样式

1.字体属性 font-size&#xff1a;字体大小 Chrome浏览器支持的最小文字为12px&#xff0c;默认的文字大小为16px&#xff0c;并且0px会自动消失。不同浏览器默认的字体大小可能不一致&#xff0c;所以最好给一个明确的值&#xff0c;不要用默认大小。通常以给body设置font-si…

接口请求断言

接口请求断言是指在发起请求之后&#xff0c;对返回的响应内容去做判断&#xff0c;用来查看是否响应内容是否与规定的返回值相符。 在发起请求后&#xff0c;我们使用一个变量 r 存储响应的内容&#xff0c;也就是 Response 对象。 Response 对象有很多功能强大的方法可以调…

城市内涝怎么预警?万宾科技内涝积水监测仪

在城市运行过程中&#xff0c;城市内涝问题频繁出现&#xff0c;影响城市管理水平的提升&#xff0c;也会进一步减缓城市基础设施建设。尤其近几年来&#xff0c;城市内涝灾害频繁出现&#xff0c;在沿海地区内涝所带来的安全隐患成为城市应急管理部门的心头大患。城市内涝的背…

NIO和BIO

一&#xff1a;异步和同步的区别 同步&#xff1a;调用者要一直等待调用结果的通知后才能进行后续的执行 异步&#xff1a;指被调用方先返回应答让调用者先回去&#xff0c;然后再计算调用结果&#xff0c;计算完最终结果后再通知并返回给调用方 理解&#xff1a;同步、异步的…

Java8 时间字符串校验是否为对应的日期格式

时间字符串格式校验 严格模式下校验日期字符串 public static boolean isDateStrict(String dateStr, String pattern) {try {DateTimeFormatter formatter new DateTimeFormatterBuilder().appendPattern("yyyyMMdd").parseDefaulting(ChronoField.ERA, 1).toFor…

【JVM系列】- 挖掘·JVM堆内存结构

挖掘JVM堆内存结构 文章目录 挖掘JVM堆内存结构堆的核心概念堆的特点 堆的内存结构内存划分新生代/新生区&#xff08;Young Generation&#xff09;老年代&#xff08;Tenured Generation&#xff09;永久代&#xff08;或元数据区&#xff09;&#xff08;PermGen 或 MetaSpa…

2023.11.4 Idea 配置国内 Maven 源

目录 配置国内 Maven 源 重新下载 jar 包 配置国内 Maven 源 <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf> …

顺序表学习笔记(基础)

属于线性表旗下的一种&#xff0c;所以专门存储 one-to-one 关系的数据。 顺序表提供的具体实现方案是&#xff1a;将数据全部存储到一整块内存空间中&#xff0c;数据元素之间按照次序挨个存放。&#xff08;类似数组&#xff09; 顺序表中除了存储数据本身的值外&#xff0…

ChatGPT对未来发展的影响?一般什么时候用到GPT

ChatGPT以其强大的自然语言处理能力对未来的发展具有重要影响。以下是ChatGPT的潜在影响和一般使用情况&#xff1a; 改善自然语言理解和生成&#xff1a;ChatGPT和类似的模型可以改善机器对人类语言的理解和生成。这将有助于改进各种应用领域&#xff0c;包括智能助手、聊天机…

HMM与LTP词性标注之命名实体识别与HMM

文章目录 知识图谱介绍NLP应用场景知识图谱&#xff08;Neo4j演示&#xff09;命名实体识别模型架构讲解HMM与CRFHMM五大要素&#xff08;两大状态与三大概率&#xff09;HMM案例分享HMM实体识别应用场景代码实现 知识图谱介绍 NLP应用场景 图谱的本质&#xff0c;就是把自然…

Linux友人帐之网络编程基础www服务器

一、概述 1.1www基础 WWW&#xff08;World Wide Web&#xff0c;万维网&#xff09;是一种分布式、全球性的信息服务系统&#xff0c;是集成Internet、Web浏览器和Web服务器等技术而形成的一个庞大的、涉及全球的信息网络。 用户在浏览器中输入www.cqvie.edu.cn访问该网站主页…

day2 ARM基础

.text .globl _start _start:mov r0,#0 mov r1,#0 addfunc:add r0,r0,#1 r0自增1adds r1,r1,r0 R1实现1~100累加cmp r0,#100 判断r0是否到100bleq loop r0等于100 进入死循环 blne addfunc r0等于100跳转至循环累加 loop:b loopstop:b stop.end 【汇编…

同样是PM,产品经理和项目经理有啥不一样?

大家好&#xff0c;我是老原。身边有很多人都问&#xff1a; “干几年的技术可以做到项目经理&#xff1f;” “我要从项目经理转型到产品经理吗&#xff1f;” “产品经理和项目经理&#xff0c;哪个发展前&#xff08;钱&#xff09;景更好” …… 不难发现&#xff0c;…

Microsoft Dynamics 365 CE 扩展定制 - 7. 安全

在本章中,我们将介绍以下内容: 构建累积安全角色配置业务单元层次结构基于分层位置配置访问配置和分配字段级安全组建团队并共享设置访问团队对静止数据进行加密以满足FIPS 140-2标准管理Dynamics 365在线SQLTDE加密密钥简介 Dynamics 365是一个强大的平台,具有超过10年的良…

python数据结构和算法基础(第一节,数据结构和算法基础)

01.算法引入 02.时间复杂度和大o表示法 2.1时间复杂度与大o表示法 引入&#xff1a; 2.1时间复杂度与大o表示法 pycharm中&#xff0c;快速多行注释&#xff0c;ctrl/ 2.2最坏时间复杂度与计算规则 2.3常见时间复杂度与大小关系 03.python列表和字典 3.1代码执行时间测量木…

初步了解ORM框架之一Mybatis

ORM&#xff08;对象关系映射&#xff09;框架是现代软件开发中不可或缺的一部分。它们简化了将对象模型映射到关系数据库的过程&#xff0c;提供了更加便捷和高效的数据库操作方式&#xff0c;常见有&#xff1a;Hibernate、JPA&#xff08;Java Persistence API&#xff09;、…

Git 内容学习

一、Git 的理解 Git是一个分布式版本控制系统&#xff08;Distributed Version Control System&#xff0c;简称 DVCS&#xff09;&#xff0c;用于对项目源代码进行管理和跟踪变更。分为两种类型的仓库&#xff1a;本地仓库和远程仓库。 二、Git 的工作流程 详解如下&#x…