Oracle 的约束

约束:就是防止将无效的数据录入到表中。
      可以使用约束执行以下任务:
       (1)在对表执行插入、更新或删除行操作时,对表中的数据强制执行规则。必须满足约束,操作才能成功
       (2)防止在其他表对该表存在依赖性时将其删除
       (3)为Oracle工具(例如Oracle Developer)提供规则

 

数据完整性约束类别
      

      NOT NULL:指定该列不能包含空值(只能在字段级定义,在同一个表中可以定义多个NOT NULL约束。
      UNIQUE:指明一个列或列组合中的值对于该表中的所有行来说必须是唯一的(可以在字段级也可在表级定义)
      PRIMARY KEY:唯一标识表中的每一行
      FOREIGH KEY:在列和被引用表的列之间建立并实施一个外键关系(在表级上定义的,也可在列级定义)
       CHECK:指定条件必须为真(在CHECK约束的表达式中必须引用到表中的一个或多个字段,并且表达式的计算结果必须是一个布尔值 ;可以在表级或字段级定义 ;对同一个字段可以定义多个CHECK约束,同时也可以定义NOT NULL约束)

 

   约束的创建
        1.在创建表的同时创建约束
           创建主键:
              create table departments(
              department_id  number(4),
              departmentt_name varchar2(30),
               ................  ...........,
               CONSTRAINT dept_id pk PRIMARY KEY(department_id));
          

            创建外键:
               create table employees(
               employee_id   number(6),
               last_name  varchar2(25) not null,
               ..........  ............,
                department_id number(4),
                CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
                REFERENCES departments(department_id);
     
        2.在表创建之后创建约束
               ADD CONSTRAINT emp_manager_fk
               FOREIGN KEY(manager_id)
               REFERENCES employees(employee_id);
 

      *  如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以再表级定义约束,但如果某个约束作用于多个字段,必须在表级定义约束(在表级定义CONSTRAINT只能写最后)。
      *  在定义结束时可以通过CONSTRAINT关键字为约束名,如果没有指定,ORACLE将自动为约束建立默认的名称。
  
        定义primary key约束(单个字段)
           create table employees (empno number(5) primary key,...)

        指定约束名
           create table employees (empno number(5) constraint emp_pk primary key,...)

        定义primary key约束(多个字段,在表级定义约束)
           create table employees
           (empno number(5),
           deptno number(3) not null,
           constraint emp_pk primary key(empno,deptno)
           using index tablespace indx
           storage (initial 64K
           next 64K
            )
            )

        ORACLE自动会为具有PRIMARY KEY约束的字段(主码字段)建立一个唯一索引和一个NOT NULL约束, 定义PRIMARY KEY约束时可以为它的索引 指定存储位置和存储参数
  
 
     总结:

          1.一个表中只能有一个PRIMARY KEY约束,但主键有两种,单一的和复合主键,可以设置为多个字段为主键,即复合主键。想设复合主键要先建立约束,外键可以有多个,但可以有多个UNIQUE约束。
          2.将为PRIMARY KEY列自动创建UNIQUE索引
          3.外键是在子表中定义的,而包含引用列的表示父表
          4.所有约束都存储在数据字典中,可以通过查看USER_CONSTRAINTS(ALL/DBA)
  
           >select CONSTRAINT_NAME,CONSTRAINT_TYPE,SEARCH_CONDITION from user_constraints where table_name='XXX';
  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值