(尚硅谷)Orcale 约束的建立

<span style="font-size:18px;">第9节 约束(constraint) 
1.约束是作用在表的列上的条件
2.not null ; unique ; primary key ; foreign key ; check
3.创建约束;在创建(orclae table)的同时添加约束,分为:表级
和列级约束
4."修改"约束:通过alter table 的命令
--1.not null 非空约束
--not null 声明对的话,只能使用列级约束
create table emp3 (
                 id number(10) not null , 
                 name varchar2(20) constraint emp3_name_nn not null,--显示的起名(建议)
                 email varchar2(20),
                 hire_date date 
                 )
select * from emp3  
             
insert into emp3
values(1001,'韩梅梅' , 'HAN@126.COM',SYSDATE)
select * from emp3  
                
insert into emp3
values(002,'李磊','sss2QQ.COM',SYSDATE)
select * from emp3  
----如下的操作不能执行成功。因为name有not null的约束!
insert into emp3
values(1003,null,'sdf@qq.com',sysdate);

--2.unique:唯一性约束
create table emp4(
          id number(10) constraint emp4_id_uk unique, 
          name varchar2(20),
          email varchar2(20)constraint emp4_name_nn not null,
          salary number(10,2),
          hire_date date,  
          constraint emp4_name_uk unique(name)--表级约束    
           )
insert into emp4
values (1002 , 'll','lucy@wqw.com',6000.00,sysdate);
select * from emp4

--声明为unique的列可以添加多个null值
insert into emp4
values(1004,null,'xxx3@163.com',80280,sysdate)
insert into emp4
values(1005,null,'x3xx3@163.com',803280,sysdate)

--primary key:主键约束:能够唯一的定位表中的一条数据
--声明主键的对应的列有非空且唯一的约束
create table emp6(
          id number(10) constraint emp_id_pk primary key,
          name varchar2(20),
          salary number(10,2)
              )
insert into emp6
values (1001,'Lucy',8000);

insert into emp6
values(1001,'Lily',9000);

insert into emp6
value(1001,'Tom',8000);

--4.外键:foreign key
--声明为外键的列的列值必须都存在于相关联的另一个
--表的指定列中。
create table emp7(
         id number(5),
         name varchar2(15),
         email varchar2(20),
         dept_id number(4),   
         constraint emp6_id_pk primary key(id),
         constraint emp6_dept_fk foreign key(dept_id) 
         references departments(department_id)
             )
insert into emp7
values(1001,'AA',null,1000);

select * from emp7

insert into emp7
values(1002,'BB',null,107);

create table emp8(
             id number(5),
             name varchar2(15),
             email varchar2(20),
             dept_id number(4)constraint emp8 references departments(department_id) on delete set null
             )

--级联删除 on delete cascade
--级联置空 on delete set null
--5 check
create table emp9(
             id number(5) constraint emp9 primary key,
             name varchar2(15),
             email varchar2(20),
             salary number(4) check(salary >2000)
            )

select * from emp9

insert into emp9
values(1001,'AA','23989@qq.com',3000);

--不满足约束条件
insert into emp9
values(1002,'BB','23989@qq.com',2000);
--以上操作均是在创建表的同时进行的。如下的操作是修改表的时候进行的
--1.添加约束。除了not null 使用modify添加之外,其他4个约束都使用add
alter table emp9
modify(salary number(4)constraint ee not null )

alter table emp9
add constraint eme unique(name);

--2.删除约束:使用drop constraint + 约束名
alter table emp9
drop constraint eme;

alter table emp9 
drop constraint ee

alter table emp9 
drop constraint emp9

--3无效化约束 和有效化约束
create table emp10(
            id number(5),
            name varchar2(15) constraint emp10_name_nn not null ,
            salary number (10,2),
            email varchar2(20),
            constraint emp_10_nk unique (email)
            )
insert into emp10
values(1002,null,2300,'AA@126.com');

alter table emp10
disable constraint emp10_name_nn;

select * from emp10

--使用命令行的方式查询约束(了解)

select constraint_name constraint_type,
       search_condition
from user_constraints
where table_name = 'EMP10'

select constraint_name , column_name 
from user_cons_columns
where table_name = 'EMPLOYEES'
</span>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值