热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle约束:主键约束,外键约束以及非空约束和唯一约束以及check约束

1.约束分类1)表级约束:应用于表,对表的多个列起作用2)列级约束:应用于表的一列,只对该列起作用2.定义主键约束语法格式:CREATETABLE[schema.]table(co

1.约束分类

1)表级约束:应用于表,对表的多个列起作用
2)列级约束:应用于表的一列,只对该列起作用

《oracle约束:主键约束,外键约束以及非空约束和唯一约束以及check约束》

2.定义主键约束

语法格式:

CREATE TABLE [schema.] table(
column datatype [DEFAULT expr]
[colunm_constraint(完整性约束)],
...
[table_constraint(完整性约束)];
)

eg:

CREATE TABLE emp(
emp NUMBER(4),
ename VARCHAR2(10),
deptno NUMBER(7,2) not null,
CONTRAINT emp_empo_pk PRIMARY KEY(EMPNO);
);

1)定义列级约束

column [CONSTRAINT constraint_name] constraint_type;

2)定义表级约束

column,...
[CONSTRAINT constraint_name] constraint_type
(column,...)

eg:
①在empxx数据表中定义empno为主键约束

create table empxx(empno number(4) primary key) ;

②:在empxx数据表中定义empno为主键约束

create table empxx(empno number(4),
constraint empxx_empno_pk primary key(empno));

删除主键约束:

alter table person drop constraint person_id_pk;

3.定义非空约束

1.语法:

column_name data_type[CONSTRAINT constraint_name] NOT NULL

eg:

create table employee(
empo number(4),
ename varchar2(10) NOT NULL,
job varchar2(9),
deptno NUMBER(7,2) not null
);

2.修改数据表时添加 NOT NULL约束
1)语法:

alter table table_name MODIFY colunm_name data_type NOT NULL;

eg:

alter table person MODIFY name NOT NULL;

3.删除 NOT NULL约束

alter table table_name MODIFY colunm_name NULL

eg:

alter table person MODIFY name NULL;

4.定义唯一约束

1.语法:

column_name data_type[CONSTRAINT constraint_name] UNIQUE;

可定义在表一级和列一级约束
eg:
1)表一级约束

create table deptment(
deptno NUMBER(2),
dname varchar2(14),
CONSTRAINT dept_dname_uk UNIQUE(dname)
);

2)列一级约束

alter table person ADD UNIQUE(name);

5.外键约束

FOREIGN KEY约束是指外键约束,用于引用本表或另一个表中的一列或一组列。
FORElGN KEY约束具有如下特点:
被引用的列或列组应该具有主键约束或唯一约束。
引用列的取值只能为被引用列的值或NUL值。
可以为一个列或一组列定义 FOREIGN KEY约束。
引用列与被引用列可以在同一个表中,这种情况称为“自引用”。
如果引用列中存储了被引用列的某个值,则不能直接删除被引用列中的这个值,否则会与第
二条相矛盾。如果一定要删除,需要先删除引用列中的这个值,然后再删除被引用列中的这
个值
1)创建表时添加 FOREIGN KEY约束

column_name1 data_type[CONSTRANT constrant_name] REFERENCES table_name (column_name2)

eg:
①创建图书类别表type

CREATE TABLE type(
Tid NUMBER(4) PRIMARY KEY,
Tname varchar2(10) NOT NULL
) ;

②创建图书信息表book,并用外键关联

create table book(
Bid number(4) primary key,
bname varchar2(20) not null,
Tid number(4),
constraint book_type FOREIGN KEY(Tid) REFERENCES type(Tid)
);

③在book表中外键约束使用 SET NULL 关键字(执行此步不执行第二步)

create table book(
bid number(4) primary key,
Bname varchar2(20) NOT NULL,
Tid Number(4),
constraint book_type FOREIGN KEY(Tid) REFERENCES type(Tid)
on delete set null
);

如果加on delete cascade 可以一步删除表格
④ 接下来,插入数据看一下表格

insert into type(tid,tname) values(1,'历史类');
insert into book(bid,bname,tid) values(1,'史记',1);
delete from type where tid=1;
select * from book;

结果:
《oracle约束:主键约束,外键约束以及非空约束和唯一约束以及check约束》
特点:
(1)插入、修改
主表约束字表(主表里没有的数据,子表中不可以出现)
(2)删除
字表约束主表(只要字表里有数据,主表就不可以被删除)

6.check约束

check约束是过滤无意义或者不符合插入要求的数据
因为较为简单。所以此约束举例说明
①为表person中的sex列添加check约束,只能传递男女参数

alter table person add check(sex in('男','女'));

②插入记录测试

inster into person(id,name,sex,birthday) values(1,'李云','女',null);

格式一:

create table tablename(column check);

格式二:

create table tablename(column,constraint 约束名 check(column 条件表达式));

推荐阅读
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • Excel技巧:单元格中显示公式而非结果的解决方法
    本文探讨了在Excel中如何通过简单的方法解决单元格显示公式而非计算结果的问题,包括使用快捷键和调整单元格格式两种方法。 ... [详细]
  • 本文汇集了作者在准备研究生入学考试过程中的心得体会,包括备考策略、复习重点及应对考试的心理调适技巧,旨在为即将参加考研的学生提供实用建议。 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 本文介绍如何通过Java代码调用阿里云短信服务API来实现短信验证码的发送功能,包括必要的依赖添加和关键代码示例。 ... [详细]
  • 本文介绍如何通过mysqladmin ext命令监控MySQL数据库的运行状态,包括性能指标的实时查看和分析。 ... [详细]
  • 本文详细对比了HashMap和HashTable在多线程环境下的安全性、对null值的支持、性能表现以及方法同步等方面的特点,帮助开发者根据具体需求选择合适的数据结构。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
author-avatar
许琼博762375
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有