数据库约束

作者: 风中小酌 | 来源:发表于2020-03-09 22:22 被阅读0次

约束类型

  • 非空约束 not null
  • 唯一性约束 unique
  • 主键约束 primary key
  • 外键约束 foreign key
  • 用户自定义约束 check
    可以给约束起名字,需要唯一
创建非空约束
  • 创建表时创建
    定义约束名 constraint 约束名 not null
    如果不定义,系统将给出默认名称。
SQL> CREATE TABLE DEP(ID number not null, salary number constraint dep_nn not null);
Table created

SQL> desc dep;
Name   Type   Nullable Default Comments 
------ ------ -------- ------- -------- 
ID     NUMBER                           
SALARY NUMBER 
  • 修改表时创建
SQL> alter table departs modify employee_id not null;
Table altered
创建唯一性约束
  • 创建表时创建
    可使用 Constraint 定义约束名
SQL> CREATE TABLE DEP2(ID number, salary number, constraint dep2_salary_uk unique(salary));
Table created

SQL> CREATE TABLE DEP2(ID number unique, salary number constraint dep2_salary_uk unique);
Table created

  • 修改表时创建
SQL> ALTER TABLE DEP2 ADD(MAIL VARCHAR2(20) UNIQUE);
Table altered

SQL> ALTER TABLE DEP2 ADD(EMAIL VARCHAR2(20) CONSTRAINT DEP2_EMAIL_UK UNIQUE);
Table altered
创建主键约束
不指定主键名,由数据库随机定义
SQL> create table pkey (id number primary key);
Table created
指定主键名
SQL> create table pkey (id number constraint pkey_id_pk primary key);
Table created
通过修改创建主键
SQL> create table pkey(id number);
Table created

SQL> alter table pkey modify(id constraint pkey_id_pk primary key);
Table altered

创建联合主键

SQL> create table pkey(id number, name varchar2(10), constraint pkey_id_name_pk primary key(id, name));
Table created

通过修改表创建联合主键
SQL> create table pkey(id number, name varchar2(10));
Table created
SQL> alter table pkey modify( constraint pkey_id_name_pk primary key(id, name));
Table altered
SQL> alter table pkey add constraint pkey_id_name_pk primary key(id, name);
Table altered
创建外键约束
SQL> create table pkey(id number, name varchar2(10), constraint peky_id_name_pk primary key(name));
Table created
SQL> create table fkey(id number, name varchar2(10), constraint fkey_id_fk foreign key(name) references pkey(name));
Table created

通过修改表创建外键

SQL> create table fkey(id number, name varchar2(10));
Table created

SQL> alter table fkey add constraint fkey_id_fk foreign key(name) references pkey(name);
Table altered

SQL> drop table fkey;
Table dropped

SQL> create table fkey(id number, name varchar2(10));
Table created

SQL> alter table fkey modify( constraint fkey_id_fk foreign key(name) references pkey(name));
Table altered

创建联合外键

SQL> create table pkey(id number, name varchar2(10), constraint peky_id_name_pk primary key(id, name));
Table created

SQL> create table fkey(id number, name varchar2(10), constraint fkey_id_fk foreign key(id, name) references pkey(id, name));
Table created
CHECK 创建用户自定义约束

创建表时创建check约束

SQL> create table ckey(id number, salary number(8,2), constraint ckey_salary check(salary > 0));
SQL> 
Table created

修改表时创建check约束

SQL> create table ckey(id number, salary number(8,2));
Table created

SQL> alter table ckey modify( constraint ckey_salary_ck check(salary>0));
Table altered

SQL> alter table ckey add constraint ckey_id_ck check(id > 1000);
Table altered

SQL> alter table ckey add (constraint ckey_id_ck check(id > 1000));
Table altered
禁用与启用约束

禁用约束

SQL> alter table ckey disable constraint ckey_id_ck;
Table altered

禁用主键约束时,如果有其它用作为外键引用,需要使用级联操作 cascade

SQL> alter table pkey disable constraint peky_id_name_pk;
alter table pkey disable constraint peky_id_name_pk
ORA-02297: 无法禁用约束条件 (HR.PEKY_ID_NAME_PK) - 存在相关性

SQL> alter table pkey disable constraint peky_id_name_pk cascade;
Table altered

启用约束

SQL> alter table ckey enable constraint ckey_id_ck;
Table altered

相关文章

  • MySql 中的约束

    MySql 中的约束 作用:给表添加约束值,从而约束用户操作数据库的行为 数据库常见的约束值如下: 默认值约束(d...

  • Python 高级 14(3)数据库约束

    数据库常用约束、增加删除约束、数据库导入导出、数据表设计思想-三大范式 2.4.8 添加约束 约束是一种限制,它通...

  • Mysql约束

    一、约束基本概念 约束:指对表中数据的一种约束,能够帮助数据库管理员更好地管理数据库,并且能够确保数据库中数据的有...

  • part8. 高级SQL特性

    第22课 高级SQL特性 约束 1.约束:管理如何插入或管理数据库数据的规则DBMS通过在数据库表上施加约束来实施...

  • SQL学习二十、SQL高级特性

    约束(constraint) 管理如何插入或处理数据库数据的规则。 DBMS 通过在数据库表上施加约束来实施引用完...

  • Mysql第四天

    数据库管理 新建数据库 示例 数据类型 数值类型 日期类型 字符串类型 特殊字符序列 约束 重要,记下 非空约束(...

  • MySql : 二、数据库表的约束、表和表之间的关系以及范式

    前言 本篇主要介绍了数据库中表字段的约束,表和表之前的关系,以及数据库设计的三大范式。 目录 一、数据库表的约束二...

  • Mysql 约束(二)

    DQL:查询语句 约束 数据库的设计 数据库的备份和还原

  • Day03--数据库

    DQL:查询语句 约束 数据库的设计 数据库的备份和还原

  • 数据库约束

    约束类型 非空约束 not null 唯一性约束 unique 主键约束 primary key 外键约束 for...

网友评论

    本文标题:数据库约束

    本文链接:https://www.haomeiwen.com/subject/kygmdhtx.html