Oracle中的约束
- 非空约束 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中的约束的更多相关文章
- oracle中,约束、表名、Index等的名称长度限制最大只能30个字符
oracle中,约束.表名.Index等的名称长度限制最大只能30个字符
- Oracle 数据完整性与约束机制
为了维护数据库数据的完整性,在创建表时需要定义一些约束,Oracle中的约束类型包括:非空约束.主键约束.唯一约束.外键约束等.在对约束操作前,我们可以通过表名查询它具有的约束信息. 表约束 SELE ...
- oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息
来源于网上整理 总结了一下oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1.查询出所有的用户表select * fro ...
- Oracle中的正则表达式
检查约束 --密码的长度必须在3-6 --年龄必须在1-120 --性别只能是男或女 --电话号码必须满足电话的格式: 手机格式,座机格式 drop table test; select * from ...
- oracle中imp命令详解 .
转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility ...
- 快速向表中插入大量数据Oracle中append与Nologging
来源于:http://blog.sina.com.cn/s/blog_61cd89f60102e7gi.html 当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候 ...
- Oracle中的索引详解
Oracle中的索引概述 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是 ...
- oracle中查询某张表都被哪些表参照了
起因: 系统测试的时候发现如果某条记录已经被引用了,这个时候删除这条记录会引起数据不一致,系统会报错.比如警员信息,在考勤记录表里会引用警员ID,如果考勤记录表中已经存在这个警员ID了,这时从警员表中 ...
- Oracle中的数据类型和数据类型之间的转换
Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...
随机推荐
- ABBYY FineReader的图像编辑器功能使用方法
日常工作中,有时可能需要对图像进行编辑,可是正常情况下大家都知道图像是不能直接编辑的,需要借助工具.ABBYY FineReader 12 OCR文字识别软件可以实现图像的手动编辑,接下来就具体给大家 ...
- SQL server 中的dbo、guest
dbo database owner 数据库的创建者,创建该对象的用户. guest 顾客 能够访问数据库中对象的数据, 要求dbo分配权限给guest, 一般给他查看的权限select 数据库所有者 ...
- selenium+python自动化之环境安装
一.Python安装 1.操作系统:win7 64位系统 2.下载Python安装包,选择2.7版本和3.6版本都可以(最好安装2.7版本稳定)官网下载地址:https://www.python.or ...
- Linux下Memcached-1.4.10安装
memcache是一款流行的缓存产品,它分为两个部分:一个是运行在服务器端的memcached进程,一个是在客户端进行调用获取缓存中数据客户端,例如比较常用的PHP客户端.这里,记录一下安装服务器端的 ...
- 【mybaits】Mybatis中模糊查询的各种写法
工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{t ...
- [转]Hibernate重要规则总结
实体类的编写规则 l 实体类必须具备无参构造方法 l 实体类必须具备数据库标识 l 通常选用无业务意义的逻辑主键作为数据库标识,通常是int/long/Str ...
- SPOJ #752. Power it!
By property of mod operations , we can simply use Divide and Conquer + Recursion to solve it. Refere ...
- thinkphp 常用
{$Think.session.adminuser} 获取session信息,模版和js中都可以调用 模版调用 <empty name="Think.session.userid& ...
- 报错:org.apache.jasper.JasperException: /index.jsp (line: 1, column: 17) equal symbol expected
现象:写了如下一个jsp文件,导入需要用到的两个包: 运行结果报错:org.apache.jasper.JasperException: /index.jsp (line: 1, column: 17 ...
- 怎样减少FLASH影片文件过大——绝对好用
网站建设中怎样减少FLASH影片文件过大 一,制作前的处理 1声音(mp3): GoldWave中打开需要处理的mp3,然后把它另存为---在最下一栏的属性中选择较低的字节数,例如,本来的mp3 ...