• 非空约束 NOT NULL

    • 数据库表中的某一个列不能为空
  • 唯一约束 UNIQUE
    • 表中某一个列不允许重复
    • 唯一约束所在列可以为NULL,但只能出现一次
    • 代码:

CREATE TABLE MEMBER

(

MID NUMBER,

NAME VARCHAR2(20),

EMAIL VARCHAR2(20),

CONSTRAINT UK_EMAIL UNIQUE(EMAIL)

);

  • 主键约束 PRIMARY KEY

    • 既非空也不能重复。
    • 一般来说一张表只设置一个主键,但是也可以设置多个主键,这种叫联合主键。
  • 检查约束 CHECK
    • 在进行数据更新前设置一些条件,满足条件才允许插入或更新
    • 检查约束会损耗掉一部分数据库的性能

CREATE TABLE MEMBER

(

MID NUMBER,

NAME VARCHAR2(20),

EMAIL VARCHAR2(20),

AGE NUMBER(3),

CONSTRAINT UK_EMAIL UNIQUE(EMAIL),

CONSTRAINT PK_MID PRIMARY KEY(MID),

CONSTRAINT CK_AGE CHECK(AGE > 0 AND AGE < 150)

);

  • 外键约束

    • 作用在两张表上
    • CONSTRAINT FK_COLUMNNAME_MAINTABLENAME_COLUMNNAME FOREIGN KEY(COLUMNNAME) REFERENCES TABLENAME(COLUMNNAME)
    • 删除父表前一定要先删除子表,否则父表无法删除。但若一定要删除父表,必须使用语句DROP TABLE TABLE_NAME CASCADE CONSTRAINT
    • 父表中要作为子表的外键应用,则父表的该字段必须是PRIMARY KEY 或者UNIQUE KEY 约束
    • 父表中的某些字段如果在子表中有关联,默认情况下,父表记录不能删除。如果希望父表数据一删除,对应的子表数据也一并删除,那么必须配置数据库的级联操作(ON DELETE CASCADE)。如果希望父表记录删除后,保留子表数据,并且把子表数据对应关联字段设置为空,这应该使用ON DELETE SET NULL

总的说来,一个表已经建立成功并且已经有数据后,不建议在该表上增加约束。

Oracle中的约束的更多相关文章

  1. oracle中,约束、表名、Index等的名称长度限制最大只能30个字符

    oracle中,约束.表名.Index等的名称长度限制最大只能30个字符

  2. Oracle 数据完整性与约束机制

    为了维护数据库数据的完整性,在创建表时需要定义一些约束,Oracle中的约束类型包括:非空约束.主键约束.唯一约束.外键约束等.在对约束操作前,我们可以通过表名查询它具有的约束信息. 表约束 SELE ...

  3. oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息

    来源于网上整理 总结了一下oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1.查询出所有的用户表select * fro ...

  4. Oracle中的正则表达式

    检查约束 --密码的长度必须在3-6 --年龄必须在1-120 --性别只能是男或女 --电话号码必须满足电话的格式: 手机格式,座机格式 drop table test; select * from ...

  5. oracle中imp命令详解 .

    转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility ...

  6. 快速向表中插入大量数据Oracle中append与Nologging

    来源于:http://blog.sina.com.cn/s/blog_61cd89f60102e7gi.html 当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候 ...

  7. Oracle中的索引详解

    Oracle中的索引概述 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是 ...

  8. oracle中查询某张表都被哪些表参照了

    起因: 系统测试的时候发现如果某条记录已经被引用了,这个时候删除这条记录会引起数据不一致,系统会报错.比如警员信息,在考勤记录表里会引用警员ID,如果考勤记录表中已经存在这个警员ID了,这时从警员表中 ...

  9. Oracle中的数据类型和数据类型之间的转换

    Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...

随机推荐

  1. Java C# 加密解密类库

    Bouncy Castle 是一种用于 Java 平台的开放源码的轻量级密码术包.它支持大量的密码术算法,并提供 JCE 1.2.1 的实现.因为 Bouncy Castle 被设计成轻量级的,所以从 ...

  2. 【转】c# winform 打包部署 自定义界面 或设置开机启动

    方法一: 创建安装部署这部分就不用说了,添加安装部署项目后,鼠标右键安装项目->视图->注册表, 要使软件在开机就运行,可以在HKEY_CURRENT_USER\Software\Micr ...

  3. MVC2、MVC3、MVC4、MVC5之间的区别 以及Entity Framework 6 Code First using MVC 5官方介绍教程

    现在MVC的技术日趋成熟,面对着不同版本的MVC大家不免有所迷惑 -- 它们之间有什么不同呢?下面我把我搜集的信息汇总一下,以便大家能更好的认识不同版本MVC的功能,也便于自己查阅. View Eng ...

  4. centos7 关闭SELINUX 防火墙

    关闭SELINUXvi /etc/selinux/config#SELINUX=enforcing #注释掉#SELINUXTYPE=targeted #注释掉SELINUX=disabled #增加 ...

  5. 类型参数约束 : Controller where T : class,new()

    这是类型参数约束,.NET支持的类型参数约束有以下五种: where T : struct | T必须是一个结构类型 where T : class | T必须是一个类(class)类型,不能是结构( ...

  6. 【svn】 linux svn 强制提交注释

    在svn版本库的hooks文件夹下面,复制模版pre-commit.tmpl cp pre-commit.tmpl pre-commit chmod +x pre-commit vi编辑,如下: #! ...

  7. Winform用匿名方法新建线程的方法

    作用:1.将耗时的操作放在单独的线程,加快UI的响应速度.Thread t = new Thread(delegate() { parse.ParseDay(StockCode, FileName); ...

  8. [Hibernate] - many to many

    Hibernate的多对多实现: hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> ...

  9. OpenSSL 双向认证

    在使用OpenSSL进行SSL双向认证时,需要在服务器和客户端配置如下接口函数: SSL_CTX_set_verify(SSL_CTX* ctx,int mode,int (*verify_callb ...

  10. 【转】七个例子帮你更好地理解 CPU 缓存

    我的大多数读者都知道缓存是一种快速.小型.存储最近已访问的内存的地方.这个描述相当准确,但是深入处理器缓存如何工作的"枯燥"细节,会对尝试理解程序性能有很大帮助. 在这篇博文中,我 ...