SQL语言之定义约束
定义约束
一、数据库中的约束类型
非空约束(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语言之定义约束相关推荐
- SQL入门(3):定义约束/断言assertion/触发器trigger
本文介绍数据库的完整性 完整性控制程序: 指定规则,检查规则 (规则就是约束条件) 动态约束 intergrity constraint::=(O,P,A,R) O : 数据集合, 约束的对象 ?: ...
- MySQL查询语种关键字_SQL——SQL语言全部关键字详解
http://blog.csdn.net/quinnnorris/article/details/71056445 数据库中我们做常用的就是SQL基本查询语言,甚至有些人认为数据库就是SQL,SQL就 ...
- 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能
[数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...
- 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数据定义功 ...
- 【数据库和SQL学习笔记】1.SQL语言的功能和特点,数据定义语言和应用,主键和外键
本专栏是我对数据库系统和SQL语言的学习笔记分享~ 数据库系统软件:SQL Server 2019 Express(免费,初学者使用足够,足够部署小型项目) 操作系统:Windows 10 安装过程略 ...
- SQL语言概述与SQL语言的数据定义
文章目录 前言 一.SQL概述 1.SQL语言的产生和发展 2.SQL语言支持关系数据库的三级模式 (1)基本表 (2)存储文件 (3)视图 3.SQL语言的特点 (1)综合统一 (2)非过程语言 ( ...
- PostgreSQL SQL 语言:数据定义
本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1.表基础 关系型数据库中的一个表非常像纸上的一张表:它由行和列组成.列的数量和顺序是固定的,并且每一列拥有一个名字.行的 ...
- SQL Server 2012 唯一约束(定义唯一约束、删除唯一约束)
文章目录 准备知识 定义唯一约束 使用SSMS工具定义唯一约束 使用SQL方式定义唯一约束 方式一:在创建数据表的时候定义唯一约束 方式二:修改数据表定义唯一约束 删除唯一约束 使用SSMS工具删除唯 ...
- 【ClickHouse SQL 极简教程】ClickHouse SQL之数据定义语言 DDL
1.1. ClickHouse SQL之数据定义语言 DDL 本节介绍 ClickHouse 中进行数据库.表结构的定义和管理. 1.1.1. 概述 在SQL中,数据定义语言( DDL ) 用来创建 ...
最新文章
- java spring scope_如何在Spring中自定义scope的方法示例
- metaSPAdes:新型多功能宏基因组拼接工具
- 学历对程序员重要么?
- python基础——logging、OS、sys、random、string模块(0424)
- 2018 年,去百度面试 Java 后端的一次面试经历
- python 小海龟鼠标画图_Python小海龟画图
- Java Selenium - 处理页面弹出窗
- 乐高无线服务器必须有房主,乐高无限成就有哪些-乐高无限成就大全_手心游戏...
- TZOJ 5640: 数据结构实验:仓库管理
- 官网改版项目问题总结
- 阿里笔试的一道算法题
- IOS 保存图片至相册
- Minix、UNIX、Linux的区别与联系
- 【STM32H7】第10章 ThreadX GUIX移植到STM32H7(GCC)
- OpenStack HA
- 聊城大学计算机专业在全国排名,聊城大学排名
- 歪门邪道?新技术让智能手机可窃取附近键盘输入信息
- 计算机网络的类型和特点
- FullCalendar-vue demo例子
- Calico on Kubernetes 从入门到精通