oracle 删除主键约束_Oracle中常见约束及索引的创建和使用

1dcd81a2c5ed46c71707121fda851960.png

Oracle中常见约束(Constraints)的创建和分类:

创建

创建方式可分为两种:
(一)可以在创建表的时候规定约束(通过 CREATE TABLE 语句)
(二)或者在表创建之后也可以(通过 ALTER TABLE 语句)

分类

1、非空约束:not null

作用:约束强制列不接受 NULL 值

例:

create 

2、唯一约束:unique

作用:约束唯一标识数据库表中的每条记录

例:

create table demo02(
      empno number(4) unique,
      ename varchar2(10),
      job varchar2(8)
);
insert into demo02 values(1234,'zhangsan','SALES');
insert into demo02 values(1234,'lisi','SALES');--empno字段违反约束,无法执行
insert into demo02 values(null,'wangwu','SALES');

3、检查约束:check

作用:约束用于限制列中的值的范围

例:

create table demo04(
      empno number(4),
      ename varchar2(10),
      job varchar2(8),
      age number(3) check(age>0 and age<200),
      gender varchar2(3) check(gender='男' or gender='女')
);
insert into demo04 values(1234,'zhangsan','SALES',56,'男')
insert into demo04 values(1234,'zhangsan','SALES',44,'详')   --gender 字段违反约束,无法执行

4、主键约束:primary key

作用:约束唯一标识数据库表中的每条记录,主键列不能包含 NULL 值

例:

create table demo07(
      empno number(4) primary key,
      ename varchar2(10),
      age number(3)
)
insert into demo07 values(1234,'zhangsan',18);
insert into demo07 values(1234,'lisi',18);   --empno字段值违反唯一性约束
insert into demo07 values(null,'wangwu',20); --empno字段值违反非空约束

5、外键约束:foreign key

作用:指向另一个表中的 PRIMARY KEY,约束用于预防破坏表之间连接的动作

例:

create table t_class(
     classid number(2) primary key,--主键
     classname varchar2(20) not null,
   classnum varchar2(30)
)
insert into t_class values(10, '三(1)班','教室6');
insert into t_class values(20, '三(2)班','教室3');
insert into t_class values(30, '三(3)班','教室4');


create table t_student(
       stuid number(8) primary key,
       stuname varchar2(30) not null,
       stuphone varchar2(11),
       classid varchar2(2) references t_class(classnum)     --外键
)

insert into t_student values(11111111,'方子恒',110,10);
insert into t_student values(11111112,'马子明',120,20);
insert into t_student values(11111113,'王福禄',130,10);

--存在外键的表为从表,被依赖的表为主表
--外键不一定为主表的主键,也可以为主表的唯一键

以上约束的创建都是在建表的时候创建约束,除此之外还可以在修改表的时候创建约束

例如:

-- 创建约束(add constraint 约束名称 约束的关键字(对应的列))
alter table demo07 add constraint uq_demo07_ename unique(ename);

-- 删除约束(drop constraint 约束名称)
alter table demo07 drop constraint uq_demo07_ename

Oracle中索引的创建及使用

索引(index):

创建:

-- create index 索引名称 on 表名(列)
create  index  idx_emp_ename_job  on emp(ename)      -- 对单个列创建索引
create  index  idx_emp_ename_job  on emp(ename,job)  -- 对多个列创建索引

 

创建条件:

1.当数据量非常大的时候

2.当该列的值不经常重复的情况下

3.当该列的值不容易发生变化的情况下

说明:只有添加索引的列,通过该列进行查询时,速度才可以变快;通常情况下, 数据库会为我们的表自动创建索引,为表中的唯一键列自动的添加索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值