5、oracle下数据完整性约束

ORACLE下数据完整性约束

为了保证数据的完整性和结构的正确性,oracle也有很多约束条件。

1.数据完整性

为了保证数据的完整性,一般对数据列(字段)进行如下约束,主键约束(PRIMARY KEY)、唯一键约束(UNIQUE)、非空约束(NOT NULL)、默认值(DEFAULT)、检查约束(CHECK)、外键约束(FOREIGN KEY)。

1.1 实体完整性约束

要求每一个表中的主键字段都不能为空或者重复,一般实现的方法是添加唯一约束和主键约束。这里选择主键一般的原则是尽量选择单键、主键必须保证唯一性、非空性、一般选择没有意义,用户不关心的字段。

表创建后,添加约束的语句如下:

-- 使用constraint创建指定名称的约束
constraint pk_id primary key(id);

1.2域完整性约束

要求列的值域的完整性,如数据类型、格式和范围、是否允许为空等。一般实现的方法是限制数据类型,添加外键约束、默认值约束、非空约束。

-- 限制sex的取值
-- 创建表时添加约束
CREATE TABLE test(
   id int,
   sex char(1) constraint test_sex check (sex in ('0','1'))
);
--创建表后添加约束
alter table test add constraint test_sex check(sex in ('0','1'));

1.3引用完整性约束

当处理数据时,通过参照另一个相关联的表中的数据,来检查对表的数据的操作是否正确。一般实现方法是添加外键约束。

alter table test
add constraint FK_TEST_ID foregin key (TID) references 主表 (TID)

2.表之间的关系
oracle中表与表之间的关系有一对一、一对多、多对一。

3.数据表的设计范式

数据表的设计范式是没有数据库之分的,每个数据库都是一样的,最基本的三个范式是:确保每列保持原子性;确保表中的每条数据都和主键相关;确保每列都和主键列直接相关,而不是间接相关。

4.修改约束的SQL语法

-- 建表时添加约束
not null约束必须写在行上
DEFAULT 约束必须写在行上
constraint 约束名 primary key(列)
constraint 约束名 unique(列)
constraint 约束名 check(sex in('男','女'))
constraint 约束名 foreign key(列) reference 其他表(列)
-- 外部添加约束
ALTER TABLE 表 ADD CONSTRAINT 约束名 PRIMARY KEY (列)
ALTER TABLE 表 ALTER COLUMN 列 SET DEFAULT '默认值'
ALTER TABLE 表 ADD CONSTRAINT 约束名 CHECK (条件)
ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY (列) REFERENCES 其他表(列)
ALTER TABLE 表 ADD CONSTRAINT 约束名 UNIQUE (列...)
-- 删除约束
ALTER TABLE Persons DROP CONSTRAINT 约束名

-- 停用约束

ALTER TABLE 表名ADD CONSTRAINT 约束名 UNQUE(status) DISABLE
ALTER TBALE 表名DISABLE CONSTRAINT 约束名

--启用约束

ALTER TABLE 表名ENABLE CONSTRAINT 约束名;
ALTER TABLE 表名ENABLE NOVALIDATE CONSTRAINT 约束名;

-- 查看约束

select * from user_constraints where ...;

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

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

相关文章

把旧系统迁移到.Net Core 2.0 日记(1) - Startup.cs 解析

因为自己到开发电脑转到Mac Air,之前的Webform/MVC应用在Mac 跑不起来,而且.Net Core 2.0 已经比较稳定了。1. 为什么会有跨平台的.Net Core 近年来,我们已经进入云计算时代,在云平台的PaSS和SaSS上也是发生了大幅度的进化&#x…

P3261-[JLOI2015]城池攻占【左偏树】

正题 题目链接:https://www.luogu.com.cn/problem/P3261 题目大意 nnn个点的树,每个节点有一个防御值和一个攻击后的影响(让你的伤害加上一个数或者乘上一个数) 然后mmm个骑士,给定初始攻击点和初始伤害,不停往上走,遇到防御小于…

6、oracle数据库下查询操作

ORACLE下查询操作 针对数据库操作最多的就是数据查询,这里分享一个我常用的方法,看到需求后,先确定查询范围,就是需要查询哪些表;之后确定查询条件;最后写出查询的字段。 ORACLE中之前说过有两个伪列ROWI…

ASP.NET Core 2.0 : 图说管道,唐僧扫塔的故事

本文通过一张GIF动图来继续聊一下ASP.NET Core的请求处理管道,从管道的配置、构建以及请求处理流程等方面做一下详细的研究。(ASP.NET Core系列目录)一、概述上文说到,请求是经过 Server监听>处理成httpContext>Application…

P3521-[POI2011]ROT-Tree【线段树合并】

正题 题目链接:https://www.luogu.com.cn/problem/P3521 题目大意 一棵二叉树,叶子节点有权值,对于每个非叶子节点可以选择交换左右节点,求最后遍历出来的叶子节点权值逆序对最少。 解题思路 十分显然一个节点是否交换是不影响该节点子树之…

7、oracle下的序列

ORACLE下的序列 序列是一种数据库对象,用于生成一系列的整数,可以用来唯一的标记一条记录,在mysql种有字段自增的概念,但是oracle种是没有字段自增的,所以可以使用序列来作为主键的自动生成方式。 1.序列的使用 序列…

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

ASP.NET Core是微软新推出支持跨平台、高性能、开源的开发框架,相比起原有的ASP.NET来说,ASP.NET Core更适合开发现代应用程序,如跨平台、Dorker的支持、集成现代前端开发框架(如npm、bower、gulp等等)。另外相比ASP.NET它的性能更好&#xf…

Div1 小A抓小B tarjan双连通分量缩点+dfs

题目描述 小A和小B在一个无向图G上进行一个游戏。图G是连通的,有n个点,n条边,无重边,无自环,结点编号为1~n。游戏开始前小A在结点x,小B在结点y(x≠y)。游戏开始后,小A和小…

P3809-[模板]后缀排序(SA)

正题 题目链接:https://www.luogu.com.cn/problem/P3809 题目大意 长度为nnn的字符串,求它的字符数组(后缀排序后排名为iii的在哪个位置)。 解题思路 大概思路就是倍增排序,先排每个后缀的第一个字符,然后是两个,然后是四个&am…

8、oracle数据库下的索引

ORACLE下的索引 索引是oracle下的一类对象,主要用于提高查询的效率。 1.操作索引 1.1 创建、修改索引 -- 添加一般索引 create index i_test_tname on test(tname); -- 添加唯一索引,不能包含相同的值 create unique index i_test_tname on test(tnam…

使用 C# (.NET Core) 实现模板方法模式 (Template Method Pattern)

本文的概念内容来自深入浅出设计模式一书.项目需求有一家咖啡店, 供应咖啡和茶, 它们的工序如下:咖啡:茶:可以看到咖啡和茶的制作工序是差不多的, 都是有4步, 其中有两步它们两个是一样的, 另外两步虽然具体内容不一样, 但是都做做的同一类工作.现在问题也有了, 当前的设计两个…

P2396-yyylovesMathsVII【状压dp】

正题 题目链接:https://www.luogu.com.cn/problem/P2396 题目大意 nnn个数字,依次选择若干个数字使得没有任何一个前缀和等于厄运数字,厄运数字有mmm个。 解题思路 先预处理出disidis_idisi​表示集合iii的数字和。 然后对于disidis_idisi​不等于厄运…

9、oracle数据库下的视图和同义词

ORACLE下的视图和同义词 1.视图 视图就是一个查询的结果,可能包含一张表或者多张表的信息,创建视图其目的在于,便于查看表中的信息。视图只是在逻辑上存在。 1.1创建/修改视图 创建视图一定要有CREATE VIEW权限,基本语法为&am…

.NET Core Community 首个千星项目诞生:CAP

项目简介在我们构建 SOA 或者 微服务系统的过程中,我们通常需要使用事件来对各个服务进行集成,在这过程中简单的使用消息队列并不能保证数据的最终一致性, CAP 采用的是和当前数据库集成的本地消息表的方案来解决在分布式系统互相调用的各个环…

P2463-[SDOI2008]Sandy的卡片【SA,二分答案】

正题 题目链接:https://www.luogu.com.cn/problem/P2463 题目大意 nnn个长度不同的数字序列,序列的子串相同的定义是该子串相邻的两两差相同。 求公共子串的最长长度。 解题思路 做一个差分后问题就变为了求nnn个串的最长公共子串。 我们将所有的字符串接在一起…

10、oracle下PL/SQL编程基础

ORACLE下的PL/SQL编程基础 PL/SQL语言是程序化程序设计语言,块是PL/SQL编程中的基本结构,其优点在于支持SQL、支持面向对象编程、性能好、可移植性、与sql集成、安全性高等。 1.基本语法 1.1 基本语法结构 [set severoutput on] declare 变量&…

.NET Core 从 Github到 Nuget 持续集成、部署

一.前言Nuget 作为一个.NET研发人员,我想你都不会陌生,他为我们提供非常方便的程序包管理,不管是版本,还是包的依赖都能轻松应对,可以说是我们的好助手。而 Nuget 除了官方nuget.org以外,我们也可以用起提供…

P2336-[SCOI2012]喵星球上的点名【SA,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P2336 题目大意 nnn个名字(每个名字两个串),mmm次点名,如果一次点名里是一个名字两个串中的子串该人就要答到。 对于每次点名求多少个人答到,每个名字求答到多少次。 解题思路 先考虑第一…

11、oracle数据库下的事务和触发器

ORACLE下的事务和触发器 1.事务 事务是数据库的一种机制,当执行一系列操作时,事务可以保证这一系列操作都能完成,在此期间如果出现问题,则这一系列操作导致的结果均回退到原始状态。这样就保证了数据的一致性,事务在…

微软发布自己定制的 Linux 内核和发行版,面向物联网

微软首次发布了自己的定制 Linux 内核和发行版。在旧金山举行的新闻发布会上,微软宣布了针对物联网设备的解决方案 Azure Sphere。Azure Sphere 包含三个组件。其中之一是微软设计的 Sphere MCU,将免费提供给厂商,联发科将在今年晚些时候推出…