· 约束的作用

  <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数据字典查看约束的名称.

作者:caobotao
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

(5)Oracle基础--约束的更多相关文章

  1. Oracle基础 11 约束 constraints

    --主.外键约束 create table t(  id int primary key); create table t1(  id int references t(id)); 或者create ...

  2. Oracle基础了解

    数据库: 关系型数据库 select * from 表名 非关系型数据库(做不到复杂查询) 以对象的形式进行存储 {"aaa":"ccc"}---键值对 ora ...

  3. Oracle基础学习笔记

    Oracle基础学习笔记 最近找到一份实习工作,有点头疼的是,有阶段性考核,这...,实际想想看,大学期间只学过数据库原理,并没有针对某一数据库管理系统而系统的学习,这正好是一个机会,于是乎用了三天时 ...

  4. ORACLE| ORACLE基础语法汇总

    创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库]   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  5. Oracle基础知识汇总一

    Oracle基础知识 以下内容为本人的学习笔记,如需要转载,请声明原文链接   https://www.cnblogs.com/lyh1024/p/16720759.html oracle工具: SQ ...

  6. oracle基础教程(8)oracle修改字符集

    oracle基础教程(8)oracle修改字符集 1.用dba连接数据库 -->sqlplus / as sysdba 2.查看字符集 -->SELECT parameter, value ...

  7. 图说Oracle基础知识(一)

    本文主要对Oralce数据库操作的基础知识进行一下梳理,以便进行归纳总结.适用于未使用过Oracle数据库的读者,或需要学习Oracle数据库方面的基础知识.如有不足之处,还请指正. 关于SQL介绍的 ...

  8. (2.10)Mysql之SQL基础——约束及主键重复处理

    (2.10)Mysql之SQL基础——约束及主键重复处理 关键词:mysql约束,批量插入数据主键冲突 [1]查看索引: show index from table_name; [2]查看有约束的列: ...

  9. oracle基础教程oracle客户端详解

    oracle基础教程oracle客户端工具详解 参考网址:http://www.oraclejsq.com/article/010100114.html 该教程介绍了oracle自带客户端sqlplu ...

随机推荐

  1. vue cli+axios踩坑记录+拦截器使用,代理跨域proxy(更新)

    16319 1.首先axios不支持vue.use()方式声明使用,看了所有近乎相同的axios文档都没有提到这一点建议方式 在main.js中如下声明使用 import axios from 'ax ...

  2. xxnet 360浏览器设置

    开xxnet全局pac只能代理. 然后选择360浏览器里面使用ie代理设置就行

  3. 2018.09.07 Amount of degrees(数位dp)

    描述 求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的B的整数次幂之和. 例如,设X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意: 17 = 24+20, ...

  4. 【Unity】2.1 初识Unity编辑器

    分类:Unity.C#.VS2015 创建日期:2016-03-26 一.简介 本节要点:了解Unity编辑器的菜单和视图界面,以及最基本的操作,这是入门的最基础部分,必须掌握. 二.启动界面 双击桌 ...

  5. 《Linux多线程服务端编程——使用muduo C++网络库》读书笔记

    第一章 线程安全的对象生命期管理 第二章 线程同步精要 第三章 多线程服务器的适用场合与常用编程模型 第四章 C++多线程系统编程精要 1.(P84)11个常用的最基本Pthreads函数: 2个:线 ...

  6. 设定Word段落的背景色

    段落背景不同于文字区别.很多新接触word的朋友都找不到怎么弄. 先把光标停留在需要设置的段落文字上,或者选择需要设置的段落文字. 点击段落里的边框和底纹,如图 在弹出框中选择底纹. 选择需要填充的颜 ...

  7. returning into 语句

    returning into 语句用于执行完语句后返回的值,具体返回执行之前或者之后的结果,多用于在存储过程中 如下所述:delete语句的returning into语句返回的是delete之前的结 ...

  8. wordpaster更新说明

    官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/wordpaster/index.aspx 在线演示:FCKEditor2x示例 ...

  9. Flex box 弹性盒子布局

    display: -webkit-flex 标识使用弹性布局 flex: num  占容器的比例   Flex等比划分 导航1 : Flex :1;  导航2  Flex: 2;     ————&g ...

  10. (KMP灵活运用 利用Next数组 )Theme Section -- hdu -- 4763

    http://acm.hdu.edu.cn/showproblem.php?pid=4763 Theme Section Time Limit: 2000/1000 MS (Java/Others)  ...