Oracle(13)Maintaining Data Integrity

2023-11-08 00:15

本文主要是介绍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)
);

这篇关于Oracle(13)Maintaining Data Integrity的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/366913

相关文章

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

Oracle主键和外键详解及实用技巧

在 Oracle 数据库中,主键(Primary Key)和外键(Foreign Key)用于维护数据库表之间的数据完整性。 1. 主键(Primary Key) 主键是一列或多列,能够唯一标识表中的每一行。表中只能有一个主键,并且主键列不能为空(即 NOT NULL)。 特性: 唯一性:主键中的每一个值都是唯一的,不能重复。非空性:主键列不能包含 NULL 值。索引:Oracle 自动为