Oracle_数据库表的约束
Oracle_数据库表的约束
| 完整性约束分类 | |
| 域完整性约束 | (非空not null,检查check) |
| 实体完整性约束 | (唯一unique,主键primary key) |
| 参照完整性约束 | (外键foreign key) |
| 三种完整性约束的区别 | |
| 域完整性约束:字段约束 实体完整性约束:行和行之间的约束 引用完整性约束:表和表之间的约束 |
|

实例:
|
--设计要求:
--建立一张用来存储学生信息的表
--字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息
--学号是主键
--姓名不能为空
--性别默认值是男
--年龄范围18至30岁
--Email唯一 |
| 完整性约束 |
|
--完整性约束
--创建表时添加约束,也可以在修改表时添加约束
--主键约束 primary key
--联合主键(不能在列级别定义,因为一个表只允许有一个主键),只有多列同时相同的时候才算重复,多列都不允许为null
drop table stu;
create table stu(
),
sname ),
gender ),
age ),
enterdate date,
clazz ),
email ),
--constraints pk_id primary key (id)
constraints pk_id primary key (id, sname)
); |
|
--非空约束 not null, 只能在列级定义
drop table stu;
create table stu(
) primary key,
sname ) not null,
gender ),
age ),
enterdate date,
clazz ),
email ),
--constraints pk_id primary key (id)
); |
|
--唯一约束 unique
drop table stu;
create table stu(
) primary key,
sname ) not null,
gender ),
age ),
enterdate date,
clazz ),
email ),
--constraints pk_id primary key (id),
constraints uk_email unique (email)
); |
|
--检查约束 check
drop table stu;
create table stu(
) primary key,
sname ) not null,
gender ) default '男' check(gender in('男','女')),
age ) and 30),
enterdate date,
clazz ),
email ) unique
--constraints pk_id primary key (id),
--constraints uk_email unique (email),
--constraints ck_age check (age>=18 and age <=30)
);
insert,'阿三'); |
|
--外键约束 foreign key
--先有主表dept,后有依赖表emp
drop table clazz;
create table clazz(
),
cname ) not null,
constraints pk_clazz_id primary key(id)
);
insert,'JavaEE班');
insert,'Android班');
insert,'iOS班');
insert,'UI班');
drop table stu;
create table stu(
),
sname ) not null,
gender ) default '男',
age ),
enterdate date,
email ),
cid ),
constraints pk_stu_id primary key (id),
constraints ck_stu_gender check(gender in ('男','女')),
and 30),
constraints un_stu_email unique (email),
--constraints fk_stu_cid foreign key(cid) references clazz(id) on delete cascade--级联删除,将子表中相关项一起删除
constraints fk_stu_cid foreign key(cid) references clazz(id) on delete set null--级联删除,将字表对应的列设置为null
);
insert,,);
insert,,); delete;
select * from stu;
select * from clazz; drop table clazz;--表中的主键/唯一键被引用
--强制将主键删除
drop table clazz cascade constraints; |
|
--修改表的时候添加约束信息
drop table stu;
create table stu(
),
sname ) not null,
gender ) default '男',
age ),
enterdate date,
email ),
clazz )
);
alter table stu add constraints pk_stu_id primary key (id);
alter table stu add constraints ck_stu_gender check(gender in ('男','女','妖'));
alter and 30);
alter table stu add constraints un_stu_email unique (email);
alter table stu rename column clazz to cid;
alter));
alter table stu add constraints fk_stu_cid foreign key(cid) references clazz(id) on delete cascade;
--删除约束 不能修改,只能删除约束
alter table stu drop constraints ck_stu_gender; |
| sequence序列 |
|
--序列: sequence
--创建序列
create increment by 1;
--删除序列
drop sequence seq_stu_id;
--查看序列
insert into stu values (seq_stu_id.nextval, '小明1', '妖', 18,
sysdate);
select * from stu; |
| index索引 |
|
--索引: index
--创建索引
create index index_stu_sname on stu(sname);
--删除索引
drop index index_stu_sname;
select sname from student; create index index_cname on clazz(cname desc);
select cname from clazz; |
Oracle_数据库表的约束的更多相关文章
- 数据库表的约束constraints
数据库表的约束constraints 数据完整性约束 表的数据有一定的取值范围和联系,多表之间的数据有时也有一定的参照关系. 在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性. 约束条 ...
- DDL创建数据库,表以及约束(极客时间学习笔记)
DDL DDL是DBMS的核心组件,是SQL的重要组成部分. DDL的正确性和稳定性是整个SQL发型的重要基础. DDL的基础语法及设计工具 DDL的英文是Data Definition Langua ...
- MySQL 表的约束与数据库设计
DQL 查询语句 排序 # 单列排序 * 只按某一个字段进行排序,单列排序 # 组合排序 * 同时对多个字段进行排序,如果第1个字段相等,则按照第2个字段排序,依次类推 * 语法: # 具体操作 * ...
- Oracle 数据库表中已有重复数据添加唯一键(唯一约束)
Oracle 数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景. 表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引 ID C ...
- Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束
Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎: MySQL中的数据用各种不同的技术存储在文件( ...
- 数据库之 MySQL --- 数据处理 之 表的约束与分页(七)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.约束 :为了保证数据的一致性和完整性,SQL规范以约束的方式对表数据进行额外的条件限制 ...
- 数据库表结构设计方法及原则(li)
数据库设计的三大范式:为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满 ...
- 数据库(SQL Server)管理数据库表~新奇之处
说到“数据库”,我总有一种莫名的感觉,在刚刚接触到的数据库中就让我似懂非懂渡过着,于是思考着.于是在冷静的时空中让我回想到了很多的知识,不知你们是怎样过来的,真心希望我的这篇数据库总结能够让我们都有一 ...
- C# 操作数据库表和数据库
<1>c#创建数据库表: private void CreatTable(string name) //创建数据库源数据表,name为表名 { con.ConnectionStr ...
随机推荐
- 手机端rem如何适配_rem详解及使用方法2
作为一个前端开发人员,我们的任务是将UI设计师的图稿运用计算机语言呈现在用户面前.而现在的设备大小尺寸不一,近年来智能手机的普及更是让网页的用户大部分来源与手机,所以让不同大小的移动端屏幕都能较好的还 ...
- Spring基础篇——Spring容器和应用上下文理解
上文说到,有了Spring之后,通过依赖注入的方式,我们的业务代码不用自己管理关联对象的生命周期.业务代码只需要按照业务本身的流程,走啊走啊,走到哪里,需要另外的对象来协助了,就给Spring说,我想 ...
- JavaScript的DOM编程--07--节点的属性
节点的属性: 1). nodeName: 代表当前节点的名字. 只读属性. 如果给定节点是一个文本节点, nodeName 属性将返回内容为 #text 的字符串 2). nodeType:返回一个整 ...
- 【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(三)流式播放Live HLS视频
源码地址:https://github.com/Tinywan/PHP_Experience HTTP Live Streaming(HLS)是由Apple Inc.实施的非常强大的流视频协议.HLS ...
- Python新手需要掌握的知识点
一.基础语法 1 变量 2 逻辑判断 3 循环 4 函数 二.数据结构 1 数字(加减乘除) 2 字符串(一串字符) 3 布尔 (真假) 4 元组 (不能修改的列表) 5 列表(Python的苦力,最 ...
- Linux学习笔记整理
2.1BASH命令行基本操作 [用户@主机~]$ # //$#为提示符 $代表普通用户 #代表root用户 ~代表当前目录 ls //list相当于DOS的dir 显示当前目录列表 -a // ...
- Java使用RSA加密算法对内容进行加密
什么是RSA加密算法 RSA是一种典型的非对称性加密算法,具体介绍可参考阮一峰的日志 RSA算法原理 下面是使用RSA算法对传输内容进行加密的一个简要Java案例,主要用到了三个类,大体实现如下: 对 ...
- Web App、Hybrid App与Native App
在这个App的时代,转战了前端,一直接触的都是pc, 离out不远了. 那么接下来,app是我接下来半年的重点,为什么是半年,因为时间不多了. 因为是前端,那么我的重心肯定是 Web App, Hyb ...
- python爬虫入门-开发环境与小例子
python爬虫入门 开发环境 ubuntu 16.04 sublime pycharm requests库 requests库安装: sudo pip install requests 第一个例子 ...
- 第一章 Go语言入门
文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ 1.1 编译环境及开发工具 1.1.1 Go语言编译器 下载地址:http://li ...