码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 启用约束

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

    2、命令方式创建约束

    这里以check约束为例

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

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

    1. create table demo(
    2. sid VARCHAR(20) NOT NULL ,
    3. sname VARCHAR(20) NOT NULL,
    4. profession VARCHAR(20) NOT NULL,
    5. score NUMBER(4) check(score>60 and score<80) NOT NULL
    6. );

     3、修改表创建的约束

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

    4、删除约束

    1. ALTER TABLE <表名>
    2. DROP CONSTRAINT <约束名称>

    5、列级定义

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

    示例:

    1. create table temp1
    2. ( id number primary key,
    3. name varchar2(32) not null
    4. );

    6、表级定义

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

    示例:

    1. create table temp2
    2. ( id number,
    3. name varchar(32),
    4. constraint pr_id primary key(id), unique(name)
    5. );

    语法:

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

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

    constraint 约束名称 unique(字段)

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

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

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

    1. create table temp3
    2. (id number,
    3. name varchar2(64),
    4. nums number,
    5. constraint pk_id_name primary key(id,name)
    6. );
  • 相关阅读:
    用Java语言创建的Spring Boot项目中,如何传递List集合呢?
    【C++报错】error C2143:语法错误:缺少“ : ”(在“<” 的前面)[ 相互引用问题 ]
    14:00面试,14:06就出来了,问的问题有点变态。。。
    (附源码)计算机毕业设计JavaJava毕设项目补课管理系统
    遇到项目难点
    【python海洋专题二十二】在海图上text
    第十一章 数据库技术 11.1- 术语 11.2-关系数据库的相关术语
    面试碰壁15次,作为一个26岁的测试工程师,感到未来迷茫...
    增强LinkedList实现瑞士轮赛制编排
    群狼调研(长沙口味测试)如何开展产品口味测试
  • 原文地址:https://blog.csdn.net/yushaoyyds/article/details/134190259
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号