oracle约束+disable与enable约束+为表添加约束+修改表约束的状态+primary key+not null+unique+foreign key+外键删除数据,可以使用的级联操作...

2023-11-05

oracle约束
分类
表级约束:应用于表,对表的多个列起作用。或者说定义所有列后,再定义约束,not null 约束只能在列级上。
列级约束:应用于表的一列,只对该列起作用。或者说定义列的同时定义约束。

disable与enable约束
控制约束的约束
控制表的约束是禁用还是激活状态
disable:禁止状态,相当于该列没有约束
enable:激活状态,默认新创建的约束状态是激活状态

为表添加约束
这里写图片描述

修改表约束的状态
语法1
alter table tableName modify constraint restrainName disable | enable ;

alter table student3 modify constraint uniSname disable;
这里写图片描述

primary key:主键由一列或多列组成
主键,非空,不能重复
完整性约束

实现主键约束:
1.建表的时候在列后面添加primary key

constraint 约束名 primary key(列明));
constraint pk_id primary key(id));
这里写图片描述
这里写图片描述
多次插入同一个数据违反约束条件
这里写图片描述

2.已存在的表添加约束:
alter table 表名 add contraint 约束名 约束;
前提:列的值要满足约束条件
alter table people add constraint pk_id primary key(id);
这里写图片描述
测试的时候我是删了数据在加上约束
这里写图片描述

not null
非空;
列的所有值不能为空
语法:
建表的时候 列后面加上not null;
表存在的时候:alter table B modify 列名 not null;
这里写图片描述

删除not null 约束
alter table B modify 列名 null;

unique
唯一:
指定一列或一组列只能存储唯一的值(多列情况,只要保证不全部相同就可以)
语法:
建表的时候在列后面加上unique
表存在的时候:alter table B add constraint 唯一约束名 unique(列名)
这里写图片描述
删除unique约束
alter table tableName drop unique(列名)
alter table tableName drop constraint 约束名

foreign key
外键:维护子表和父表之间的引用完整性
引用完整性约束;
用于引用本表或者另一个表的一列或者一组列。
引用列或者被引用列可以在同一个表中,这种情况称自引用

1被引用的列或者列组应该具有主键约束或者唯一约束
2引用列的取值只能为被引用列的值或者null值
3可以为一列或一组列定义为foreign key
4如果引用列中存储了被引用列的某个值,则不能删除被引用列的某个值,
否则与2相矛盾,如果要删除,先删除引用列的值,才删除被引用列的值。

1建表的时候添加约束
列名1 数据类型【default 默认值】 【【constrant 约束名】
references tableName2(列名2)

create table class(
cno varchar2(10) primary key,
cname varchar2(20),
cnum number(2)
);

create table student2(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
cno varchar2(2) constraint fk_sno references class(cno)
);
这里写图片描述
或者
create table tableName1(
columnName1 数据类型【default 默认值】
constraint 约束名 foreign key(列名1) references 父表(列名2)
】)
列名1 :本表的列
列名2:父表的主键列
references :用于定义列名1指向其他表中的列名2

create table class(
cno varchar2(10) primary key,
cname varchar2(20),
cnum number(2)
);

create table student2(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
cno varchar2(2),
constraint fk_sno foreign key(cno) references class(cno)
);

这里写图片描述

2为以存在的表中的列添加外键
alter table tableName add 【constraint 约束名 】
foreign key(列名1) references 父表(列名2)

create table class(
cno varchar2(10) primary key,
cname varchar2(20),
cnum number(2)
);

create table student2(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
cno varchar2(10)
);
alter table student2
add
constraint fk_sno foreign key(cno) references class(cno)
这里写图片描述

注意:
创建的时候先建父表,在建子表
删除表的时候的先删子表,再删父表
这里写图片描述

插入有数据的值,值需要在父表中可以被找到
允许外键为空

这里写图片描述

删除父表数据的时候:父表的数据必须没有被子表使用
这里写图片描述

外键删除数据,可以使用的级联操作

on delete cascade:当删除父表被引用的数据时,级联删除子表中相应的数据行
on delete set null:当删除父表被引用的数据时,级联设置子表中相应的引用列的值为null,前提该列支持设置为null

on delete no action:当删除父表被引用的数据时,如果子表的引用列包含该值,禁止删除操作,默认为此选项

on delete set null操作
create table class(
cno varchar2(10) primary key,
cname varchar2(20),
cnum number(2)
);

create table student2(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
cno varchar2(2),
constraint fk_sno foreign key(cno) references class(cno) on delete set null
);
这里写图片描述
添加数据
insert into class values(‘1’,’一班’,55);
insert into student2 values(‘1’,’lili’,18,’1’);
这里写图片描述

删除父表被引用的数据
delete class where cno=’1’;
这里写图片描述

查看子表的数据是否因为父表的数据被删除导致相应列的值被设置为null,

结果:子表中相应的引用列的值为null
select * from student2;
这里写图片描述
on delete cascade操作
这里写图片描述

转载于:https://www.cnblogs.com/feiZhou/p/9344403.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

oracle约束+disable与enable约束+为表添加约束+修改表约束的状态+primary key+not null+unique+foreign key+外键删除数据,可以使用的级联操作... 的相关文章

  • ElasticSearch条件查询,高亮查询,聚合查询,以及映射关系

    1 在上一篇文章中我们已经做过了创建索引和简单的文档数据的增删改查 今天我们的核心是文档数据的查询 当然在后期我们也会用java数据来操作数据 上一期 我们的索引库是shopping 今天我们再来回忆一下 这就是查询索引库中 所有的信息 接
  • 使用electron 将网页打包成应用程序

    需求 将一个已经上线的后台管理系统 只兼容Chrome 打包成一个不需要谷歌浏览器就可以运行的软件 需要安装 npm install electron g npm install electron packager g WinRAR解压工具

随机推荐

  • 最高分数的学生姓名

    include
  • JDBC第三讲

    目录 三 Dao模式 1 Dao模式概念 2 Dao模式的组成 3 具体代码 3 1 BaseDao 3 2 Dao接口 3 3 Dao接口的实现 3 4 实体类 3 5 测试类 三 Dao模式 1 Dao模式概念 前面我们在使用JDBC时
  • Jetpack学习之MVVM实战

    MVVM架构与Jetpack MVVM即Model View ViewModel的缩写 它的出现是为了将图形界面与业务逻辑 数据模型进行解耦 MVVM也是Google推崇的一种Android项目架构模型 而Jetpack组件 大部分是为了能
  • 小干货:Linux 系统的备份恢复

    作者 LeoLan s Blog https reurl cc gm5ZkQ tar 命令 副本 本机备份整个系统 以后还原还是还原到本机 注意根目录下要有充足的可用空间用于备份 cd tar gz格式 tar cvpzf system b
  • visual studio 2019账号登陆不上去问题解决

    网上多数解决方案是选择账户选项 然后把嵌入式web改为系统式web 但我用打开登陆选项 发现我就是系统式web 所以此方法行不通 但我观察到登陆选项中有设备代码选项 于是我就选了此选项 然后选择了登陆 此时它跳出来一个选项 根据提示只要在另
  • 单片机——独立按键控制

    1 基本定义与初始化 include
  • 2021秋招复习——计算机网络

    文章目录 总流程 浏览器缓存 资源缓存的位置 三级缓存原理 浏览器缓存的分类 强缓存 协商缓存 Last Modify If Modify Since ETag If None Match 浏览器缓存的优点 DNS 什么是DNS DNS解析
  • 边缘检测Sobel、laplacian、canny算子

    1 图像边缘检测 图像边缘检测对于分析图像中的内容 实现图像中物体的分割 定位等具有重要的作用 边缘检测大大减少了源图像的数据量 剔除了与目标不相干的信息 保留了图像重要的结构属性 常用的图像边缘检测方法分为以下两种 一阶导数的边缘算子 通
  • Linux PWM 驱动实验

    一 PWM 驱动简析 1 设备树下的 PWM 控制器节点 I MX6ULL 有 8 路 PWM 输出 因此对应 8 个 PWM 控制器 所有在设备树下就有 8 个PWM 控制器节点 这 8 路 PWM 都属于 I MX6ULL 的 AIPS
  • [Codeforces] combinatorics (R1600) Part.7

    Codeforces combinatorics R1600 Part 7 题单 https codeforces com problemset tags combinatorics 1201 1600 1534C Little Alawn
  • 用Python爬虫技术怎么挣点小钱,这四种方法可行

    提醒 抓取的数据如果要商业化 要小心知识产权问题噢 还要提醒一点 抓取和处理这些数据的代价要小于人工处理的代价 使用爬虫代替人工才有价值 我利用Python爬虫技术赚点小钱方式 在正式聊Python爬虫技术之前 先来说说挣钱的事 说说作为一
  • react组件的render方法

    一个组件类必须要实现一个 render 方法 这个 render 方法必须要返回一个 JSX 元素 必须要用一个外层的 JSX 元素把所有内容包裹起来 返回并列多个 JSX 元素是不合法的 错误的写法 render return div 第
  • 计算机显示丢失d3dcompiler,无法启动此程序提示缺少d3dcompiler文件怎么解决

    有用户说他在打开某个程序时 系统却提示说无法启动此程序提示缺少d3dcompiler文件的情况 这可能是在系统更新时出现错误导致的 那么无法启动此程序提示缺少d3dcompiler文件怎么解决呢 很简单安装一个更新包即可解决 下面小编给大家
  • [培训-无线通信基础-7]:信道均衡器(信道估计、信道均衡)

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 118832368 目录 引言
  • FFT算法(Java实现)

    FFT导论 转载自FFT导论 FFT是离散傅立叶变换的快速算法 可以将一个信号变换到频域 有些信号在时域上是很难看出什么特征的 但是如果变换到频域之后 就很容易看出特征了 这就是很多信号分析采用FFT变换的原因 另外 FFT可以将一个信号的
  • 通过Java操作Kafka

    通过Java操作Kafka 前置知识 https editor csdn net md articleId 125883056 创建maven项目 导入kafka客户端依赖
  • C#生成二进制文件

    文章目录 用C 将文本MAC地址生成二进制文件 使用C 将字符串生成二进制文件 为什么用C 来开发这个简单的上位机 用C 将文本MAC地址生成二进制文件 using System using System Collections Gener
  • wangEdit大致使用

    1 先导入 两种方式任选其一 yarn add wangeditor editor for vue next npm install wangeditor editor for vue next save 2 创建富文本框组件 以下是vue
  • 51单片机学习笔记(五) -独立按键&&外部中断

    文章目录 一 按键的工作原理 1 原理图 2 按键的工作原理 二 使用轮询法处理按键 1 通过按键来点亮LED 2 键值检测与显示 3 按键消抖 4 完整的按键检测 四 使用中断检测按键 1 功能要求 2 外部中断INT0和INT1 3 代
  • oracle约束+disable与enable约束+为表添加约束+修改表约束的状态+primary key+not null+unique+foreign key+外键删除数据,可以使用的级联操作...

    oracle约束 分类 表级约束 应用于表 对表的多个列起作用 或者说定义所有列后 再定义约束 not null 约束只能在列级上 列级约束 应用于表的一列 只对该列起作用 或者说定义列的同时定义约束 disable与enable约束 控制