我是靠谱客的博主 单身水蜜桃,最近开发中收集的这篇文章主要介绍ORACLE SQL约束constraint,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

约束:顾名思义指的就是强制规定。而在ORACLE中约束指的是约束是表级的强制规定!!

     那么他有几种约束呢:五种

  1. NOT NULL     指不能我为空
  2. UNIQUE       指唯一的,独立的
  3. PRIMARY KEY  指设置主键的
  4. FOREIGN KEY  指设置外键
  5. CHECK        指检查性约束

 

ORACLE 中的注意事项:

如果不指定约束名,Oracle server 自动按照SYS_Cn的格式指定约束名

创建和修改约束:

建表的同时

建表之后

可以在表级或列级定义约束

可以通过数据字典视图查看约束

 

表级约束和列级约束

作用范围:

①列级约束只能作用在一个列上

②表级约束可以作用在多个列上(当然表级约束也   

        可以作用在一个列上)

定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。

非空(not null) 约束只能定义在列上

 

那么我们看下约束的具体用法:

 NOT NULL 约束:只能定义在列级

CREATE TABLE employees(

    employee_id    NUMBER(6),

    last_name      VARCHAR2(25) NOT NULL,

    salary         NUMBER(8,2),

    commission_pct NUMBER(2,2),

    hire_date      DATE

                   CONSTRAINT emp_hire_date_nn

                   NOT NULL,

 

UNIQUE 约束:唯一的,独一的,不可以重复,指的是数据不能是多条的,可定义在表级或者是列级

CREATE TABLE employees(

    employee_id      NUMBER(6),

    last_name        VARCHAR2(25) UNIQUE,

    email            VARCHAR2(25),

    salary           NUMBER(8,2),

    commission_pct   NUMBER(2,2),

    hire_date        DATE NOT NULL,

 

PRIMARY KEY 约束主键约束,也就是说每个表 只有一个主键也只能定义一个主键

CREATE TABLE   departments(

    department_id        NUMBER(4),

    department_name      VARCHAR2(30)

      CONSTRAINT dept_name_nn NOT NULL,

    manager_id           NUMBER(6),

    location_id          NUMBER(4),

      CONSTRAINT dept_id_pk PRIMARY KEY(department_id));

 

FOREIGN KEY 约束:外键约束,出了在本表充当主键外,还可以在其他表充当外键,这样主要是为了两表之间的一个连接。

CREATE TABLE employees(

    employee_id      NUMBER(6),

    last_name        VARCHAR2(25) NOT NULL,

    email            VARCHAR2(25),

    salary           NUMBER(8,2),

    commission_pct   NUMBER(2,2),

    hire_date        DATE NOT NULL,

    department_id    NUMBER(4),

    CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)

      REFERENCES departments(department_id),

    CONSTRAINT emp_email_uk UNIQUE(email));

 

FOREIGN KEY 约束的关键字

   FOREIGN KEY: 在表级指定子表中的列

REFERENCES: 标示在父表中的列

ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除

ON DELETE SET NULL(级联置空): 子表中相应的列置空

 

CHECK 约束:定义每一行必须满足的条件,也就是为了检查每行中的条件是否满足之前所定的条件。

..., salary NUMBER(2)

     CONSTRAINT emp_salary_min  

            CHECK (salary > 0),...

 

添加约束的语法

使用 ALTER TABLE 语句:

添加或删除约束,但是不能修改约束

有效化或无效化约束

添加 NOT NULL 约束要使用 MODIFY 语句

 

添加约束举例

ALTER TABLE     employees

ADD CONSTRAINT  emp_manager_fk

  FOREIGN KEY(manager_id)

  REFERENCES employees(employee_id);

 

删除约束

ALTER TABLE      employees

DROP CONSTRAINT  emp_manager_fk;

 

无效化约束:在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。

ALTER TABLE employees

DISABLE CONSTRAINT emp_emp_id_pk;

这样的写法是错误的。

 

激活约束

ENABLE 子句可将当前无效的约束激活

ALTER TABLE employees

ENABLE CONSTRAINT emp_emp_id_pk;

当定义或激活UNIQUE 或 PRIMARY KEY 约束时系统会自动创建UNIQUE 或 PRIMARY KEY索引

 

查询约束

查询数据字典视图 USER_CONSTRAINTS

SELECT constraint_name, constraint_type,

search_condition

FROM user_constraints

WHERE table_name = 'EMPLOYEES';

 

查询定义约束的列

查询数据字典视图 USER_CONS_COLUMNS

SELECT constraint_name, column_name

FROM user_cons_columns

WHERE table_name = 'EMPLOYEES';

 

总结:这就是ORACLE中约束的常用的一些举例。

最后

以上就是单身水蜜桃为你收集整理的ORACLE SQL约束constraint的全部内容,希望文章能够帮你解决ORACLE SQL约束constraint所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部