ORACLE SQL约束constraint

本文介绍了Oracle SQL中的五种约束:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY和CHECK,并详细阐述了它们的作用、用法及示例,包括创建、修改和删除约束的操作,以及如何查询和理解约束的相关信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

约束:顾名思义指的就是强制规定。而在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中约束的常用的一些举例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值