(5)Oracle基础--约束
· 约束的作用
<1> 定义规则
<2> 确保数据的完整性
· 约束
<1> 非空约束
① 创建表时为字段添加非空约束
CREATE TABLE table_name (
column_name data_type NOT NULL, ... );
② 为已存在的表字段添加非空约束
ALTER TABLE table_name MODIFY column_name data_type NOT NULL;
③ 删除已存在的表字段的非空约束
ALTER TABLE table_name MODIFY column_name data_type NULL;
<2> 主键约束
作用: 确保表中每条记录的唯一性
设置为主键的字段必须非空,唯一,且一张表中只能有一个主键,但是一个主键也可以由多个字段组成,称为联合主键.
① 创建表时设置主键约束
CREATE TABLE table_name(
column_name data_type PRIMARY KEY, ... );
或
CREATE TABLE table_name(
column_name data_type , ...
CONSTRAINT constraint_name PRIMARY KEY(column_name1,column_name2....) );
P:第二种方式设置的约束称为表级约束,可以设置联合主键.
可以从数据字典user_constraints中查看某个表的约束信息.
② 在已存在的表中添加主键约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_name1,column_name2 , ...);
(注意: 添加主键时,必须确保此字段下的数据都是非空且唯一的)
③ 修改主键约束的名称
ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO new_constraint_name;
④ 删除主键约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name ;
或
ALTER TABLE table_name DROP PRIMARY KEY [CASCADE] ;
P: 禁用/启用 约束
ALTER TABLE table_name DISABLE/ENABLE CONSTRAINT constraint_name ;
<3> 外键约束
① 创建表时设置外键约束
CREATE TABLE table1 (
column_name data_type REFERENCES table2 (column_name), ... );
P: 一般称table1为从表,table2为主表,
注意: 1. 设置外键时,引用的主表的字段必须是主键;
2. 主外键必须是同一个数据类型;
3. 外键字段的值必须来自对应的主键的值,或者为NULL;
或
CREATE TABLE table1(
column_name data_type , ...
CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES table2 (column_name) [ON DELETE CASCADE] );
② 在已存在的表中添加外键约束
ALTER TABLE table1 ADD CONSTRAINT constraint_name
FOREIGN KEY (column_name) REFERENCES table2(column_name) [ON DELETE CASCADE];
③ 删除外键约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name ;
<4> 唯一约束
① 唯一约束与主键约束的区别:
1. 主键约束必须唯一且不能为NULL,唯一约束允许有一个NULL;
2. 一张表中主键约束只能有一个,而唯一约束可以有多个;
② 创建表时设置唯一约束
CREATE TABLE table_name(
column_name data_type UNIQUE , ... );
或
CREATE TABLE table_name(
column_name data_type , ...
CONSTRAINT constraint_name UNIQUE(column_name));
③ 在已存在的表中添加唯一约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);
④ 删除唯一约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name ;
<5> 检查约束
作用: 使表中的值更具有实际意义
① 创建表时设置检查约束
CREATE TABLE table_name(
column_name data_type CHECK(expressions), ... );
或
CREATE TABLE table_name(
column_name data_type , ...
CONSTRAINT constraint_name CHECK(expressions));
② 在已存在的表中添加检查约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions);
③ 删除检查约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name ;
· 小结
<1> 主键约束一张表中只能有一个,但是一个主键可以由多个约束组成;
<2> 外键约束是唯一一个涉及两个表之间的约束;
<3> 只有非空约束只能在列级设置,不能再表级设置,且非空约束没有名称;
<4> 可以通过user_constraints数据字典查看约束的名称.
(5)Oracle基础--约束的更多相关文章
- Oracle基础 11 约束 constraints
--主.外键约束 create table t( id int primary key); create table t1( id int references t(id)); 或者create ...
- Oracle基础了解
数据库: 关系型数据库 select * from 表名 非关系型数据库(做不到复杂查询) 以对象的形式进行存储 {"aaa":"ccc"}---键值对 ora ...
- Oracle基础学习笔记
Oracle基础学习笔记 最近找到一份实习工作,有点头疼的是,有阶段性考核,这...,实际想想看,大学期间只学过数据库原理,并没有针对某一数据库管理系统而系统的学习,这正好是一个机会,于是乎用了三天时 ...
- ORACLE| ORACLE基础语法汇总
创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库] 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- Oracle基础知识汇总一
Oracle基础知识 以下内容为本人的学习笔记,如需要转载,请声明原文链接 https://www.cnblogs.com/lyh1024/p/16720759.html oracle工具: SQ ...
- oracle基础教程(8)oracle修改字符集
oracle基础教程(8)oracle修改字符集 1.用dba连接数据库 -->sqlplus / as sysdba 2.查看字符集 -->SELECT parameter, value ...
- 图说Oracle基础知识(一)
本文主要对Oralce数据库操作的基础知识进行一下梳理,以便进行归纳总结.适用于未使用过Oracle数据库的读者,或需要学习Oracle数据库方面的基础知识.如有不足之处,还请指正. 关于SQL介绍的 ...
- (2.10)Mysql之SQL基础——约束及主键重复处理
(2.10)Mysql之SQL基础——约束及主键重复处理 关键词:mysql约束,批量插入数据主键冲突 [1]查看索引: show index from table_name; [2]查看有约束的列: ...
- oracle基础教程oracle客户端详解
oracle基础教程oracle客户端工具详解 参考网址:http://www.oraclejsq.com/article/010100114.html 该教程介绍了oracle自带客户端sqlplu ...
随机推荐
- c:param 标签后不要写 注释 。否则报错 Encountered illegal body of tag "c:import" tag, given its attributes
c:param 标签后不要写 注释 .否则报错 Encountered illegal body of tag "c:import" tag, given its attribu ...
- css长度
在CSS样式表中,长度单位分两种: 相对长度单位,如px, em等绝对长度单位,如pt,mm等 CSS相对长度单位(relative length unit) CSS相对长度单位中的相对二字,表明了其 ...
- Linux各个版本资源下载
Linux系统各发行版镜像下载(持续更新) == Linux系统各发行版镜像下载(2014年10月更新),如果直接下载不了,请使用迅雷下载.并且注意,我的下载地址,在 迅雷 里才起作用. Linux ...
- HDU 2844 Coins (多重背包问题DP)
题意:给定n种硬币,每种价值是a,数量是c,让你求不大于给定V的不同的价值数,就是说让你用这些硬币来组成多少种不同的价格,并且价格不大于V. 析:一看就应该知道是一个动态规划的背包问题,只不过是变形, ...
- MySQL】存储过程、游标、循环简单实例
create procedure my_procedure() -- 创建存储过程 begin -- 开始存储过程 declare my_id varchar(32); -- 自定义变量1 decla ...
- Spring3.x错误---- Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.
Spring3.x错误: 解决方法: 缺少cglib的包, 下载地址: http://sourceforge.net/projects/cglib/files/latest/download?sour ...
- day05(Object,tostring(),equals(),System,Date,SimpleDateFormat,拆装箱,正则表达式)
Object类, 是所应类的父类: 拥有自己的方法:常用的 红颜色标记的为常用的方法 toString() 用法:打印对象的地址值 getClass() 获取当前类的字节码文件getName() ...
- (网络流 模板 Dinic) Drainage Ditches --POJ --1273
链接: http://poj.org/problem?id=1273 代码: //Dinic #include<stdio.h> #include<string.h> #inc ...
- HDU1045 Fire Net(DFS枚举||二分图匹配) 2016-07-24 13:23 99人阅读 评论(0) 收藏
Fire Net Problem Description Suppose that we have a square city with straight streets. A map of a ci ...
- Struts2-057/CVE-2018-11776两个版本RCE漏洞分析(含EXP)
0x01 前言 2018年8月22日,Apache Strust2发布最新安全公告,Apache Struts2存在远程代码执行的高危漏洞(S2-057/CVE-2018-11776),该漏洞由Sem ...