oracle约束总结(not null/unique/primary key/foreign key/check)

约束(constraint):对创建的表的列属性、字段进行的限制。诸如:not null/unique/primary key/foreign key/check

作用范围:

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

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

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

— —NOT NULL:不为空约束,只能定义在列级

CREATE TABLE employees(
    employee_id    NUMBER(6),
    --<span style="color:#FF0000;">系统命名</span>
    last_name      VARCHAR2(25) <span style="color:#FF0000;">NOT NULL</span>,
    salary         NUMBER(8,2),
    commission_pct NUMBER(2,2),
    --<span style="color:#FF0000;">用户自定义命名</span>
    hire_date      DATE  <span style="color:#FF0000;">CONSTRAINT emp_hire_date_nn NOT NULL</span>,

可以在PL/SQLDEV的My objects-Tables-employees-Check constraints中查看该表的约束。

— —UNIQUE:唯一约束,可以定义在表级或列级

CREATE TABLE employees(
    employee_id      NUMBER(6),
    --<span style="color:#FF0000;">列级,系统命名唯一约束</span>
    last_name        VARCHAR2(25) <span style="color:#FF0000;">UNIQUE</span>,
    email            VARCHAR2(25),
    salary           NUMBER(8,2),
    commission_pct   NUMBER(2,2),
    hire_date        DATE NOT NULL,
...
    --<span style="color:#FF0000;">表级,用户自定义命名唯一约束</span>
    CONSTRAINT <span style="color:#FF0000;">emp_email_uk</span> UNIQUE(email));

— —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 <span style="color:#FF0000;">PRIMARY KEY</span>(department_id));

— —FOREIGN KEY: 外键,在表级指定子表中的列

— —REFERENCES: 标示在父表中的列

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

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

     constraint emp1_dept_id_fk <span style="color:#FF0000;">foreign key</span>(dept_id) <span style="color:#FF0000;">references</span> departments(department_id) <span style="color:#FF0000;">ON DELETE CASCADE</span>

— —CHECK :定义每一行必须满足的条件

..., salary	NUMBER(2)
     CONSTRAINT emp_salary_min
            CHECK (salary > 0),...

1.如何定义约束---在创建表的同时,添加对应属性的约束

1.1 表级约束 & 列级约束

create table emp1(
        employee_id number(8),
        salary number(8),
        --<span style="color:#FF0000;">列级约束</span>
        hire_date date not null,
        dept_id number(8),
        email varchar2(8) constraint emp1_email_uk unique,
        name varchar2(8) constaint emp1_name_uu not null,
        first_name varchar2(8),
        --<span style="color:#FF0000;">表级约束</span>
        constraint emp1_emp_id_pk primary key(employee_id),
        constraint emp1_fir_name_uk unique(first_name),
        --<span style="color:#FF0000;">外键约束</span>
        constraint emp1_dept_id_fk foreign key(dept_id) <span style="color:#FF0000;">references</span> departments(department_id) ON DELETE CASCADE
    )

1.2 只有not null 只能使用列级约束。其他的约束两种方式皆可

2.添加和删除表的约束--在创建表以后,只能添加和删除,不能修改

2.1添加

    alter table emp1
    add constaint emp1_sal_ck check(salary > 0)

2.1.1对于not null来讲,不用add,需要使用modify:

    alter table emp1
    modify (salary not null)

2.2 删除

    alter table emp1
    drop constaint emp1_sal_ck

2.3使某一个约束失效:此约束还存在于表中,只是不起作用

alter table emp1

disable constraint emp1_email_uk;

2.4使某一个约束激活:激活以后,此约束具有约束力

    alter table emp1
    enable constraint emp1_email_uk;

时间: 2024-10-03 22:37:02

oracle约束总结(not null/unique/primary key/foreign key/check)的相关文章

[Oracle]约束(constraint)

(一)约束的概念 在Oracle中,可以通过设置约束来防止无效数据进入表中.Oracle一共有5种约束: 主键约束(primary key) 外键约束(foreign key) 唯一性约束(unique) 非空约束(not null) 检查约束(check) (1)主键约束 --主键约束可以定义在一列或多列上,值具有唯一性.非空性: --在一个表上只能定义一个主键约束: --Oracle会自定在主键约束的列上创建唯一性索引,可以指定唯一性索引的位置及存储参数. (2)外键约束 --外键约束列的取

SQL高级应用--约束二--(PRIMARY KEY、FOREIGN KEY)

四.SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录 主键必须包含唯一的值 主键列不能包含 NULL 值 每个表都应该有一个主键,并且每个表只能有一个主键 下面的SQL 在 Persons 表创建时在 Id_P列创建PRIMARY KEY 约束 MySQL CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255),

Database Primary key and Foreign key [From Internet]

Database Primary key and Foreign key --Create Referenced Table CREATE TABLE Department ( DeptID int PRIMARY KEY, --define primary key Name varchar (50) NOT NULL, Address varchar(100) NULL ) --Create Referencing Table CREATE TABLE Employee ( EmpID int

SQL -- foreign key

SQL – foreign key SQL – foreign key Table of Contents 父表和子表的行为 父表和子表同步的例子 优点: 保持数据一致性, 完整性 实现一对一或者一对多的关系 对两个表的要求: 必须使用相同的存储引擎 – InnoDB 数字长度, 是否是 unsigned 的属性相同 字符长度可以不同 必须有索引, 没有的话自动创建 foreign key 就是定义了当父表对应的字段发生变化的时候子表的行为 父表和子表的行为 drop table if exis

MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表

今日重点:外键 一对多 多对多      一对一 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 一.引言: 我们在同一数据库创建的表时候,很多时候会出现相同数据的冗余问题,也就是说几个id

Django 迁移错误 Cannot add foreign key constraint

错误分析 更换数据库后 字符集错误 就是原来的库和新的库在外键的字符集上不一样 如图: 解决方案: 1.迁移先需要失败一次(既然出现了这个错误,说明已经迁移了一次) 2.修改当前表外键字段的字符集(或者说COLLATE),修改为外键关联表的字符集 查看表的创建语句(主要是查看外键关联表主键的字符集) SHOW CREATE TABLE `user_group` (查看创建表的命令) 修改字符集 ALTER TABLE user_group_info MODIFY employee_id VARC

SQL高级应用--约束(NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK、DEFAULT)

一.SQL约束 约束用于限制加入标的数据的类型 可以在创建表的时候规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE语句) 主要探讨以下的几种约束: 1) NOT NULL 2) UNIQUE 3) PRIMARY KEY 4) FOREIGN KEY 5) CHECK 6) DEFAULT 二.SQL NOT NULL 约束 NOT NULL约束强制列不接受 NULL值 NOT NULL约束强制字段始终包含值.这意味着,如果不向字段添加值,就

FOREIGN KEY 外键约束; UNIQUE和PRIMARY KEY 主键约束、CREATE INDEX建立索引的使用

1)foreign key 是个约束,意思是说如果你给A字段设置了外键约束,以后你要往A字段插入数据,这个数据一定是要在foreign key 后面跟的那个字段中存在的值.这个的意义就是约束了数据的完整性,不会插入错误的数据. 修改添加t_topic外键约束: ALTER TABLE t_topic ADD CONSTRAINT fk_userTopics FOREIGN KEY (user_id) REFERENCES t_users(id) 删除表t_topic外键: ALTER TABLE

SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束

SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主键. SQL PRIMARY KEY Constraint on CREATE TABLE 下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 PRIMARY KEY 约束: MySQL: CREATE TABLE Persons ( Id_P i