自我总结,欢迎怕转!

约束的作用不多说了,直接看怎么用吧。

非空约束:
  在创建表时设置非空约束:
    CREATE TABLE table_name( column_name datatype NOT NULL)
  在修改表时添加非空约束:
    ALTER TABLE table_name MODIFY column_name datatype NOT NULL
  在修改表时去除非空约束:
    ALTER TABLE table_name MODIFY column_name dataypte NULL

主键约束:

  作用:确保表种每一行数据的唯一性
  在创建表时设置主键约束:
    1) CREATE TABLE table_name(column_name dataype PRIMARY KEY)
    2) CONSTRAINT constraint_name PRIMARY KEY(column_name1,..)
    查看约束 SELECT constraint_name FROM USER_CONSTRAINTS WHERE table_name = 'student'
  在修改表时添加主键约束:
    ALTER TABLE student ADD CONSTRAINT constraint_name PRIMARY KEY(column_name1,...)
  更改约束名称 :
    ALTER TABLE student RENAME CONSTRAINT old_name to new_name
  删除主键约束:
    暂时不用:ALTER TABLE student DISABLE|ENABLE CONSTRAINT constraint_name

    直接删除:1)ALTER TABLE student DROP CONSTRAINT constraint_name

         2) ALTER TABLE student DROP PRIMARY KEY [CASCADE]
    查看约束状态: SELECT CONSTRAINT_NAME,STATUS FROM USER_CONSTRAINTS WHERE table_name = 'student'

外键约束:
  在创建表时设置外键约束:
    1) CREATE TABLE table1 (column_name datatype REFERENCES table2(column_name))
    条件: 主表table2中的字段必须是主键
        主从表table1中的字段类型必须也主表table2中的字段类型一致
        主从表table1中字段的值必须全部来自主表table2中相应的字段,或NULL值
    2) CONSTRAINT constraint_name FOREIGN KEY(column_name ) REFERENCES table_name(column_name1) [ ON DELETE CASCADE] //级联删除 主表数据中的数据被删除时,从表中引用的字段的行数据也删除
  在修改表时设置外键约束:
    ALTER TALBLE student ADD CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table2(column_name) [ ON DELETE CASCADE ]
  删除外键约束:
    暂时不用:ALTER TABLE student DISABLE | ENABLE CONSTRAINT constraint_name
    直接删除:ALTER TABLE student DROP CONSTRAINT constrain_name

唯一约束:
  主键约束与唯一性约束的区别:
    主键字段值必须为非空,唯一性约束允许有一个空值
    主键约束在每张表中只能有一个,唯一性约束在每张表中可以有多个
  在创建表时设置唯一性约束:
    1) CREATE TABLE table_name (column_name datatype UNIQUE,...)
    2) CONSTRAINT constraint_name UNIQUE(column_name) //该语句只能设置一个字段,要想设置其他字段必须新创建唯一性约束
  在修改表时设施唯一性约束:
    ALTER TABLE student CONSTRAINT constraint_name UNIQUE(column_name)
  删除唯一性约束:
    暂时禁用: ALTER TABLE student DISABLE |ENABLE CONSTRAINT constraint_name
    直接删除: ALTER TABLE student DORP CONSTRAINT constraint_name

检查约束:

  作用:让表中的值更有实际意义
  在创建表时设置检查约束:
    1) CREATE TALBE table_name (column_name datatype CHECK(money > 0))
    2) CONSTRAINT constraint_name CHECK(money > 0)
  在修改表时设置检查约束:
    ALTER TABLE student ADD CONSTRAINT constraint_name CHECK(money > 0)
  删除检查约束:
    暂时禁用: ALTER TABLE student DISABLE | ENABLE CONSTRAINT constrain_name
    直接删除: ALTER TABLE student DROP CONSTRIAN constraint_name

其他知识点:

  数据类型:
    字符型:
      CHAR(n):固定长度 , MAX :2000
      NCHAR(n):固定长度,按照Unicode格式存放数据的,用于存放汉字,MAX:1000
      VARCHAR2(n):可变长度, MAX : 4000
      NVARCHAR2(n): 可变长度,按照Unicode格式存放数据的 MAX: 2000
    数值型:
      NUMBER(p,s):p->有效数字 ; s > 0 小数后的位数 s < 0 最大有效数字到小数点的位数
      FLOAT(n) :用来存放二进制数据的,能够表示二进制的1~126位 ,若要若要转换成十进制 则需要乘以 0.30103
    日期型:
      DATA: 精确到秒(常用)
      TIMESTAMP:精确到小数秒
    其他类型:
      BLOB: MAX : 4G 以二进制格式存放
      CLOB: MAX : 4G 以字符串格式存放

  给表改名:

    rename old_name to new_name

  清空表:

    TRUNCATE TABLE table_name

  日期字段:

    regdate date default sysdate

  修改表字段:
    ALTER TABLE table_name modify email default '无';

  复制表数据:
    创建表时复制:

      CREATE TABLE table_new AS SELECT column1,...|* FROM table_old
      eg. CREATE TABLE TEST007 AS SELECT * FROM STUDENT;
    在添加数据是复制:

      INSET INTO table_new [(column1,...)] SELECT column1,...|* FROM table_old;
      eg. INSERT INTO STUDENT (ID,NAME) SELECT ID,NAME FROM TEST007;
        INSERT INTO STUDENT SELECT * FROM TEST007;

oracle如何操作约束的更多相关文章

  1. Oracle 数据完整性与约束机制

    为了维护数据库数据的完整性,在创建表时需要定义一些约束,Oracle中的约束类型包括:非空约束.主键约束.唯一约束.外键约束等.在对约束操作前,我们可以通过表名查询它具有的约束信息. 表约束 SELE ...

  2. Oracle—表、约束、索引、表空间、分区、序列、统计信息

    表.约束.索引.表空间.分区.序列.统计信息 一.表及其操作 1.创建表 create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字段类型 默认值 是否为空, 字段名3 ...

  3. [转]Oracle 树操作(select…start with…connect by…prior)

    转自http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html Oracle 树操作(select-start with-conne ...

  4. Oracle列操作(增加列,修改列,删除列)

    Oracle列操作 增加一列: alter table emp4 add test varchar2(10); 修改一列: alter table emp4 modify test varchar2( ...

  5. 基于OCILIB的oracle数据库操作总结及自动生成Model和Dao的工具

    基于OCILIB的oracle数据库操作总结 1.       类图 2.       基类BaseOCIDao的设计与实现 BaseOCIDao.h头文件 #pragma once /* ----- ...

  6. Oracle集合操作函数:union、intersect、minus

    [转]Oracle集合操作函数:union.intersect.minus 集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINU ...

  7. Oracle 树操作

    Oracle 树操作(select…start with…connect by…prior) oracle树查询的最重要的就是select…start with…connect by…prior语法了 ...

  8. Oracle字符串操作[转:http://www.cnblogs.com/xd502djj/archive/2010/08/11/1797577.html]

    ORACLE 字符串操作 1 字符串连接   SQL> select 'abc' || 'def' from dual; 'ABC'|------abcdef 2 小写SQL>select ...

  9. C# Oracle数据库操作类实例详解

    本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长 ...

随机推荐

  1. Matlab与C++混合编程(依赖OpenCV)

    Matlab与C++混合编程实际上就是通过Matlab的Mex工具将C++的代码编译成Matlab支持调用的可执行文件和函数接口.这样一方面可以在Matlab中利用已经编写好的函数,尽管这个函数是用C ...

  2. 队列的存储结构的实现(C/C++实现)

    存档 #include "iostream.h" #include "stdlib.h" #define max 20 typedef char elemtyp ...

  3. bzoj:3730: 震波

    Description 在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i].不幸的是,这片土地常常发生地震,并且随着时 ...

  4. 2017 Multi-University Training Contest - Team 1 1001&&HDU 6033 Add More Zero【签到题,数学,水】

    Add More Zero Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  5. BZOJ 2823: [AHOI2012]信号塔

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2823 随机增量法.不断加点维护圆,主要是三点共圆那里打得烦(其实也就是个两中垂线求交点+联立方 ...

  6. 教你如何解决Sublime Text 3使用中出现的中文乱码问题

    Sublime Text 3 是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦. 不过Sublime Package Control所提供的插件可以让Sub ...

  7. [数据分析工具] Pandas 功能介绍(一)

    如果你在使用 Pandas(Python Data Analysis Library) 的话,下面介绍的对你一定会有帮助的. 首先我们先介绍一些简单的概念 DataFrame:行列数据,类似 Exce ...

  8. 最小生成树之Prim算法

    描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城市了! 但是,问题也接踵而来--小Hi现在手上拥有N座城市,且已知这N座城市中任意两座城市之间建造道 ...

  9. 【蓝桥杯单片机02】LED的基本控制

    [蓝桥杯单片机02]LED的基本控制 广东职业技术学院  欧浩源 在CT107D单片机综合训练平台实现LED的基本控制和其他单片机开发平台不一样,不单单是控制几个LED实现跑马灯这么简单.因为在这个平 ...

  10. phpstorm ctrl+shift+F键不管用,不弹出搜索弹框

    般热键冲突搜狗默认简繁切换组合键位ctrl+shift+F故outlook2011按三建且失效应该能看搜狗输入状态简繁变搜狗设置按键-取消选简繁切换热键即在任务栏的语言地方点击一下再点击语言首选项.进 ...