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上分别都有索引

原文地址:https://www.cnblogs.com/shanqw/p/6473946.html