定义约束


一、数据库中的约束类型


非空约束(not null)
唯一性约束(unique)
主键约束(primary key)
外键约束(foreign key)
用户自定义约束(check)

定义约束的原则

1.在创建表的同时,或者在创建表之后都可以定义约束。
2.可以给约束其名字,但约束名不能相同,必须是唯一的。如果没有为约束起名 字,Oracle服务器将用默认格式SYS_Cn产生一个名字,这里的n是一个唯一 的整数,所以约束名是唯一的;


二、定义not null约束


创建表时定义not null约束;

创建表dept80,包括ID,名字,薪水,姓名与薪水列不可以为空,并给薪水的非   空约束自定义一个名字;
Create table dept80(id number,name varchar2(10) not null,salary number constraint dept80_dsn not null );

修改表定义not null约束
(以hr用户中的dept80表为例)

向dept80表中添加location_id列;
Alter table dept80 add(location_id number);修改dept80表中location_id列的约束为非空约束,并为其定义名字;
Alter table dept80 modify(location_id constraint dept80_ln not null);

三、定义unique约束


创建表时定义unique

创建表dept90,包括ID,名字,将ID定义唯一约束,并自定义名字;
Create table dept90(id number constraint dept90_iduk unique,name varchar2(20));

修改表定义unique约束;
(以hr用户中的dept90表为例)

将dept90表中的名字列修改为唯一约束;Alter table dept90 modify(name unique);

四、定义primary key约束


创建表时定义primary key约束

创建dept70表,包括ID,并为ID定义主键约束,以及定义约束名字;Create table dept70(id number constraint dept70_id_pk primary key);

修改表定义primary key约束

创建dept60表,包含ID;Create table dept60(id number);将dept60表中的ID列修改为主键约束,并为其自定义名字;
Alter table dept60 modify(id constraint dept60_id_pk primary key);**创建联合主键**
创建dept50表,包括ID,名字,将为ID与名字列都定义主键约束,并为其自定义    名字;
Create table dept50(id number , name varchar2(20) , constraint dept50_pk primary    key(id,name));

五、定义foreign key约束(特殊,不支持在后面直接添加定义约束)


创建表时定义foreign key

创建dept40表,包括ID、d_id,为d_id列定义外键约束并自定义名字(参照dept60 表中的ID列);Create table dept40(id number , d_id number , constraint dept40_fk foreign key(d_id)  references dept60(id) );

修改表定义foreign key

例
向dept50表中添加d_id列;Alter table dept50 add(d_id number);
将dept50中的d_id列定义外键约束(参照dept60表中的ID列),并自定义名字;
Alter table dept50 add constraint dept50_fk foreign key(d_id) references dept60(id);

六、定义check约束


创建表时定义check约束

创建dept30表,包括ID、薪水,薪水不能小于1000,并自定义名字;Create table dept30(id number , salary number(8,2) , constraint dept30_ck check(salary >  1000));

修改表定义check约束

向dept50表中添加薪水列;Alter table dept50 add(salary number(8,2));
修改dept50表中的薪水不能小于1000,并自定义名字;Alter table dept50 add constraint dept50_ck check(salary > 1000);

七、 禁用与启用约束


查看约束

(以hr用户中的dept50表为例)

查看dept50表下的所有约束类型,约束名字;
Select constraint_name,constraint_type,search_condition from user_constraints   where lower(table_name) = ‘dept50’;

禁用约束

(以hr用户中的dept50表为例)

 禁用dept50下的自定义约束;Alter table dept50 disable constraint dept50_ck;级联禁用禁用dept60表中的主键约束;Alter table dept60 disable constraint dept60_id_pk cascade;

启用约束

(以hr用户中的dept50表为例)

 启用dept50下的自定义约束;Alter table dept50 enable constraint dept50_ck;

SQL语言之定义约束相关推荐

  1. SQL入门(3):定义约束/断言assertion/触发器trigger

    本文介绍数据库的完整性 完整性控制程序: 指定规则,检查规则 (规则就是约束条件) 动态约束 intergrity constraint::=(O,P,A,R) O : 数据集合, 约束的对象 ?: ...

  2. MySQL查询语种关键字_SQL——SQL语言全部关键字详解

    http://blog.csdn.net/quinnnorris/article/details/71056445 数据库中我们做常用的就是SQL基本查询语言,甚至有些人认为数据库就是SQL,SQL就 ...

  3. 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能

    [数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...

  4. SQL语言基础及数据定义功能

    目录 4.1.SQL语言概述 4.1.1.SQL语言特点 4.1.2.SQL语言功能 4.2.SQL支持的数据类型 4.2.1.数值型 4.2.2.字符串型 4.2.3.日期时间类型 4.3数据定义功 ...

  5. 【数据库和SQL学习笔记】1.SQL语言的功能和特点,数据定义语言和应用,主键和外键

    本专栏是我对数据库系统和SQL语言的学习笔记分享~ 数据库系统软件:SQL Server 2019 Express(免费,初学者使用足够,足够部署小型项目) 操作系统:Windows 10 安装过程略 ...

  6. SQL语言概述与SQL语言的数据定义

    文章目录 前言 一.SQL概述 1.SQL语言的产生和发展 2.SQL语言支持关系数据库的三级模式 (1)基本表 (2)存储文件 (3)视图 3.SQL语言的特点 (1)综合统一 (2)非过程语言 ( ...

  7. PostgreSQL SQL 语言:数据定义

    本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1.表基础 关系型数据库中的一个表非常像纸上的一张表:它由行和列组成.列的数量和顺序是固定的,并且每一列拥有一个名字.行的 ...

  8. SQL Server 2012 唯一约束(定义唯一约束、删除唯一约束)

    文章目录 准备知识 定义唯一约束 使用SSMS工具定义唯一约束 使用SQL方式定义唯一约束 方式一:在创建数据表的时候定义唯一约束 方式二:修改数据表定义唯一约束 删除唯一约束 使用SSMS工具删除唯 ...

  9. 【ClickHouse SQL 极简教程】ClickHouse SQL之数据定义语言 DDL

    1.1. ClickHouse SQL之数据定义语言 DDL  本节介绍 ClickHouse 中进行数据库.表结构的定义和管理. 1.1.1. 概述 在SQL中,数据定义语言( DDL ) 用来创建 ...

最新文章

  1. java spring scope_如何在Spring中自定义scope的方法示例
  2. metaSPAdes:新型多功能宏基因组拼接工具
  3. 学历对程序员重要么?
  4. python基础——logging、OS、sys、random、string模块(0424)
  5. 2018 年,去百度面试 Java 后端的一次面试经历
  6. python 小海龟鼠标画图_Python小海龟画图
  7. Java Selenium - 处理页面弹出窗
  8. 乐高无线服务器必须有房主,乐高无限成就有哪些-乐高无限成就大全_手心游戏...
  9. TZOJ 5640: 数据结构实验:仓库管理
  10. 官网改版项目问题总结
  11. 阿里笔试的一道算法题
  12. IOS 保存图片至相册
  13. Minix、UNIX、Linux的区别与联系
  14. 【STM32H7】第10章 ThreadX GUIX移植到STM32H7(GCC)
  15. OpenStack HA
  16. 聊城大学计算机专业在全国排名,聊城大学排名
  17. 歪门邪道?新技术让智能手机可窃取附近键盘输入信息
  18. 计算机网络的类型和特点
  19. FullCalendar-vue demo例子
  20. Calico on Kubernetes 从入门到精通

热门文章

  1. 修改mysql数据库的编码格式
  2. hudson部署过程
  3. iOS开发UI篇—UITableview控件使用小结
  4. rda8955平台搭建摘要截图
  5. 时间序列预测之一:指数平滑法(二)R语言——代码实现
  6. Keras实现seq2seq案例代码:Bi-LSTM
  7. 基于区块链的健康链系统设计与实现(6)结束语
  8. 区块链BaaS云服务(9)索尼 区块链通用数据库 BCDB
  9. unittest单元测试框架—加载测试用例的3种方法以及测试报告存储管理
  10. 自动化测试之键盘操作和select操作