• 非空约束 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. P1001 第K极值【tyvj】

    /*========================================== P1001 第K极值 内存限制 128MB 代码限制 64KB 描述 Description 给定一个长度为N ...

  2. CentOS配置ssh无密码登录

      CentOS配置ssh无密码登录的注意点   前提配置:使用root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉,如下: 然后重启ssh服务:service s ...

  3. Maven相关: An internal error occurred during: "Updating Maven Project". java.lang.NullPointerException

    I solved mine by delete the .settings folder and .project file in the project and then reimport the ...

  4. systemd的原理和适用方法

    systemd的原理: https://www.linux.com/learn/tutorials/527639-managing-services-on-linux-with-systemd htt ...

  5. php访问mysql工具类

    本文转载自:http://www.cnblogs.com/lida/archive/2011/02/18/1958211.html <?php class mysql { private $db ...

  6. golang的推荐的orm库

    https://github.com/jinzhu/gorm

  7. 无法找到类:java.lang.ClassNotFoundException: com.mysql.jdbc.driver

    转载自:http://blog.csdn.net/huangbiao86/article/details/6428608 问题描述:连接数据库,而明明已经将mysql-connector-java-5 ...

  8. Datagridview中数字格式列 不显示小数点前面的0

    用代码设置DataGridView中某列为数字格式,但当小数为0.*的时候,前面的0却不显示.只显示.*. 看网上有说: 调整本地设置,控制面板-区域和语言选项,在弹出框的区域选项卡中,选择自定义,在 ...

  9. byte[] 与字符串转换

    //取值之后进行 StringBuffer buffer=new StringBuffer(); for (int i = 0; i < enBytes.length; i++) { if(i! ...

  10. Python之re模块 —— 正则表达式操作

    这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突, ...