Oracle数据库 数据完整性和DML语句
数据完整性和DML语句
数据完整性
数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
数据完整性指存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。
数据库采用多种方法来保证数据完整性,包括约束、规则和触发器。
什么是约束
约束是在表上强制执行的数据校验规则.
约束主要用于保证数据库的完整性。
当表中数据有相互依赖性时,可以保护相关的数据不被删除.
大部分数据库支持下面五类完整性约束:
NOT NULL非空
UNIQUE Key唯一键
PRIMARY KEY主键
FOREIGN KEY外键
CHECK检查
DEFAULT默认值
约束概述
约束作为数据库对象,存放在系统表中,也有自己的名字
创建约束的时机
在建表的同时创建
建表后创建(修改表)
按照创建方式可分为列级和表级约束
列集约束与表集约束
列级约束直接跟在列后定义,不再需要指定列名,与列定义之间用空格分开。
表级约束通常放在所有的列定义之后定义,要显式指定对哪些列建立列级约束。与列定义之间采用英语逗号,隔开。
如果是对多列建联合约束,只能使用表级约束语法。
非空约束(Not null)
列级约束,只能使用列级约束语法定义。
确保字段值不允许为空
只能在字段级定义
实例
CREATE TABLE tb_student(
id number PRIMARY KEY,
NAME VARCHAR2(18) NOT NULL
)
唯一约束
唯一性约束条件确保所在的字段或者字段组合不出现重复值
同一张表内可建多个唯一约束
唯一性约束条件的字段允许出现多个NULL
唯一约束可由多列组合而成
建唯一约束时Oracle会为之建立对应的索引。
CREATE TABLE tb_student(
id number PRIMARY KEY,
NAME VARCHAR2(18) UNIQUE NOT NULL
)
主键约束
主键是表中唯一确定一行数据的字段。
一个表中只允许一个主键
主键从功能上看相当于非空且唯一
主键约束不允许为NULL
主键字段可以是单字段或者是多字段的组合
当建立主键约束时,Oracle为主键创建对应的索引
CREATE TABLE tb_student(
id number PRIMARY KEY,
NAME VARCHAR2(18)
)
定义复合主键
当定义约束的时候, 不仅可以基于单列定义约束,也可以基于多列定义复合约束.
注意, 复合约束只能在表级中定义.
create table emp01(
lastname varchar2(25),
firstname varchar2(25),
code varchar2(25),
constraint emp01_pf
primary key(lastname,firstname)
);
一般情况下,一个表都应该有一个主键,建立主键的原则“最少性,稳定性”。
外键约束
外键是构建于一个表的两个字段或者两个表的两个字段之间的关系
外键确保了相关的两个字段的两个关系:
子(从)表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空)。
当主表的记录被子表参照时,主表记录不允许被删除。
外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录。
格式FOREIGN KEY (外键列名)REFERENCES 主表(参照列)
ON DELETE CASCADE:当父表中的行被删除的时候,同时删除在子表中依靠的行
ON DELETE SET NULL:将依靠的外键值转换为空值


Oracle数据库 数据完整性和DML语句的更多相关文章
- oracle数据库中的基本语句
下面的都是最基本的oracle数据库的数据查询语句,这是我在网上整理的一份文档,方便以后自己的查看,当然,能把这些记下来就是最好的. 说明:查询表中的数据 1. select * from emp; ...
- oracle数据库删除数据Delete语句和Truncate语句的对比
oracle数据库删除数据Delete语句和Truncate语句的对比 当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分 ...
- oracle数据库查询日期sql语句(范例)、向已经建好的表格中添加一列属性并向该列添加数值、删除某一列的数据(一整列)
先列上我的数据库表格: c_date(Date格式) date_type(String格式) 2011-01-01 0 2012-03-07 ...
- Oracle数据库常用的Sql语句整理
Oracle数据库常用的Sql语句整理 查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : ...
- oracle数据库操纵语言DML
oracle数据库操纵语言:DML 添加数据: ()直接添加数据: insert into table_name(column_name1,column_name2,...) values(data1 ...
- C#:Oracle数据库带参PLSQL语句的正确性验证
在有Oracle数据库C#项目中,有一个这样的需求:在界面上配置了带参数的PLSQL语句,但是要通过程序验证其正确性,那么该如何实现?这就是本文要探讨的内容. 一:通过OracleCommand对象的 ...
- oracle数据库查看用户相关语句
1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户 ...
- 关于Oracle处理DDL和DML语句的事务管理
SQL主要程序设计语言 数据定义语言DDL(Data Definition Language) 如 create.alter.drop, 数据操作语言DML(Data Munipulation Lan ...
- oracle数据库如何保存SQL语句?
比如:通过系统web页面自动生成了sql语句,insert into temp(select '1,2,3',to_date(sysdate,'yyyy--mm-dd hh24:mi:ss') fro ...
随机推荐
- vue2.0 饿了么项目学习总结
最近在GitHub上发现一个基于vue2.0的饿了么项目.本着互联网的分享精神,现在将我自己所理解的,所总结的经验分享给大家.本篇文字我将从学习的角度向大家分享. 在学习本项目之前我已经将vue2.0 ...
- 实现JFileChooser的多种文件类型限制(设置过滤器)
使用时直接调用方法. // 多类型时使用 public void FileFilter(JFileChooser F) { String[][] fileNames = { { ".java ...
- Git代码merge
Git代码合并遇到如下问题: <<<<<<< HEAD client.post(url, secretKey, function (data, res ...
- java.util.regex.Pattern正则表达式写验证器示例
import java.util.regex.Pattern; /** * 校验器:利用正则表达式校验邮箱.手机号等 * */ public class Validator { /** * 正则表达式 ...
- Django分页解析
分页 django中实现管理数据分页的类位于 django.core.paginator.py中 Paginator类 对列表数据进行分页处理 对象 Paginator(Post.objects.al ...
- 00字体图标iconfont的制作与使用--阿里矢量图库
一.iconfont的使用范围 在工作当中,经常会用到嵌在元素里的小图标 在这种情况下,如果使用<img>标签或者用作背景图片,也能实现这种效果.但是如果这么做的话,就必须把图片一个个切下 ...
- 洛谷P3177 [HAOI2015]树上染色(树上背包)
题意 题目链接 Sol 比较套路吧,设\(f[i][j]\)表示以\(i\)为根的子树中选了\(j\)个黑点对答案的贡献 然后考虑每条边的贡献,边的两边的答案都是可以算出来的 转移的时候背包一下. # ...
- 关于 “VMware Workstation 不可恢复错误- (vcpu-0)”
重装系统后第一次在 VMware Workstation 上创建虚拟机,结果出现了 VMware Workstation 不可恢复错误: (vcpu-0) 错误. 于是我们遵循它给出的提示,查看一下日 ...
- 杂谈spring、springMVC
一.背景 目前项目组都在用SSM(spring+springMVC+mybatis)开发项目 大家基本都停留在框架的基本使用阶段,对框架的职责并不清晰,导致配置文件出现了不少问题 在这简单讲解一下sp ...
- rel 属性<small>H5保留属性</small>
源文件