Oracle约束、索引
Oracle中的约束有五种,分别为:
非空:not null
主键:primary key
外键:foreign key
唯一:unique
检查:check
在数据字典视图 user_constraint,里面显示当前用户所有的约束信息
①主键和外键
用于定义主表和从表之间的关系,外键是定义在从表上,主表则必须具有主键或者unique约束,当定义外键约束后,要求外键列的数据必须在
主表的主键列存在或者为NULL
主键和外键的数据类型一致
在删除主键约束的时候,要注意:
因为如果两张表存在主从关系,那么在删除主表的主键约束时,必须带上cascade选项
alter table 表名 drop primary key cascade
这样表示把两个表之间的主从关系破坏掉
②非空
oracle中的空包括 null和' ' ;与sqlserver有所区别。在sqlserver中null和' '是不一样的。
所以:在Oracle中只要某一列定义为 NOT NULL ,那么 null和 '' 都插入不进去;但是SqlServer某一列定义为 NOT NULL, 那么null插入不进去,' ' 可以插入进去。
语法:
alter table employees modify deptno not null/null
注意:如果表中已经存在null,就不能更改其为not null约束
③索引
单列索引
create index 索引名 on 表名(列名)
create index ghindex on emp(empid)
复合索引
create index emp_index1 on emp(ename,job)
创建主键或唯一约束后,ORACLE会自动创建一个与约束同名的索引。
例如:
create table stu(
name varchar2(20) primary key ,
age int unique,
home varchar2(20) not null
);
里面就会有两个索引:name 和 age上分别都有索引
Oracle约束、索引的更多相关文章
- Oracle索引梳理系列(七)- Oracle唯一索引、普通索引及约束的关系
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- oracle唯一索引与普通索引的区别和联系以及using index用法
oracle唯一索引与普通索引的区别和联系 区别:唯一索引unique index和一般索引normal index最大的差异是在索引列上增加一层唯一约束.添加唯一索引的数据列可以为空,但是只要尊在数 ...
- oracle 创建索引思考(转)
在Oracle数据库中,创建索引虽然比较简单.但是要合理的创建索引则比较困难了. 笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索 ...
- ORACLE约束总结
你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了.ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本 ...
- oracle 常用索引分析,使用原则和注意事项
本文参考: https://www.cnblogs.com/wishyouhappy/p/3681771.html https://blog.csdn.net/weivi001/article/det ...
- 【Oracle】Oracle约束的总结
你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了.ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本 ...
- 01 Oracle分区索引
Oracle分区索引 索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局 ...
- oracle约束约束状态和设计习惯
oracle约束状态有几个项目,会让人迷惑,分别是: enable/disable--是否启用/禁用 validate/invalidate--确认/不确认 deferrable/not deferr ...
- 转 ORACLE约束总结
https://www.cnblogs.com/kerrycode/archive/2012/05/13/2454614.html 你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几 ...
随机推荐
- Cocoapods安装 2018-11-01更新
2018-11-1 更新 pod install 报错 [!] Oh no, an error occurred. Cocoapods 需要更新 主要涉及2点内容 一.ruby 更新(V2.5.3 ...
- Ubuntu的sources.list
参考文章: https://blog.csdn.net/u012843189/article/details/80964287 位于/etc/apt/sources.list 其中 deb http: ...
- VMware使两台windows虚拟机能够互相ping通
1.关闭防火墙 cmd命令行里输入:netsh firewall set opmode disable 2.测试如果还不能ping通,就把网络类型选nat类型 3.测试:vmware网关默认是.2
- vs2017打包安卓项目简述
1.使用vs2017创建安卓项目 2.选择Release模式编译项目 3.项目存档 4.签名分发 存档完成后,点击分发按钮进入如下界面 按要求输入签名信息 选择apk保存位置 5.分享apk文件 参考 ...
- docker镜像常用操作
- http强转https websocket
需要在httpd.conf文件最后添加即可: <Directory /> Options FollowSymLinks AllowOverride All RewriteEngine on ...
- 初探storm
Storm入门之Storm示例及UI参数讲解 Storm UI REST API Storm 1.1.0 中文文档 Apache Storm 1.1.0 中文文档 | ApacheCN Storm U ...
- Git使用教程,最详细,最傻瓜,最浅显,真正手把手教
(预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料)一:Git是什么?Git是目前世界上最先进的分布式版本控制系统.工作原理 / 流程:Workspace:工作区Index / Stag ...
- [转] JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别
ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以 ...
- sql server 实现split功能 行转列
--實現split功能的函數create function [dbo].[func_split]( @SourceSql varchar(max), @StrSeprate varchar(10))r ...