设为首页 加入收藏

TOP

Oracle基础知识笔记(10)约束(三)
2015-07-24 10:36:22 来源: 作者: 【 】 浏览:2
Tags:Oracle 基础知识 笔记 约束
DELETE SET NULL ); INSERT INTO member(mid,name) VALUES(1,'张三'); INSERT INTO member(mid,name) VALUES(2,'李四'); INSERT INTO book(bid,title,mid) VALUES(101,'Java开发',1); INSERT INTO book(bid,title,mid) VALUES(102,'Java Web开发',2); INSERT INTO book(bid,title,mid) VALUES(103,'EJB开发',2); INSERT INTO book(bid,title,mid) VALUES(105,'Android开发',1); INSERT INTO book(bid,title,mid) VALUES(107,'AJAX开发',1); 复制代码

3、 删除父表之前必须首先先删除对应的子表,否则无法删除

DROP TABLE book PURGE;
DROP TABLE member PURGE;

但是这样做明显很麻烦,因为对于一个未知的数据库,如果要按照此类方式进行,则必须首先知道其父子关系,所以在Oracle之中专门提供了一个强制性删除表的操作,即:不再关心约束,在删除的时候写上一句“CASCADE CONSTRAINT”。

DROP TABLE member CASCADE CONSTRAINT PURGE;
DROP TABLE book CASCADE CONSTRAINT PURGE;

此时,不关心子表是否存在,直接强制性的删除父表。

合理做法:在以后进行数据表删除的时候,最好是先删除子表,之后再删除父表。

六、修改约束

约束本身也属于数据库对象,那么也肯定可以进行修改操作,而且只要是修改都使用ALTER指令,约束的修改主要指的是以下两种操作:

  • 为表增加约束:
    ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 约束类型(字段);
    • 删除表中的约束:
      ALTER TABLE 表名称 DROP CONSTRAINT 约束名称;

      可以发现,如果要维护约束,肯定需要一个正确的名字才可以,可是在这五种约束之中,非空约束作为一个特殊的约束无法操作,现在有如下一张数据表:

      DROP TABLE member CASCADE CONSTRAINT PURGE;
      CREATE TABLE member(
          mid NUMBER,
          name VARCHAR2(50) NOT NULL,
          age NUMBER(3)
      );

      范例:为表中增加主键约束

      ALTER TABLE member ADD CONSTRAINT pk_mid PRIMARY KEY(mid);

      增加数据:

      INSERT INTO member(mid,name,age) VALUES(1,'张三',30);
      INSERT INTO member(mid,name,age) VALUES(2,'李四',300);

      现在在member表中已经存在了年龄上的非法数据,所以下面为member表增加检查约束:

      ALTER TABLE member ADD CONSTRAINT ck_age CHECK(age BETWEEN 0 AND 250);

      这个时候在表中已经存在了违反约束的数据,所以肯定无法增加。

      范例:删除member表中的mid上的主键约束

      ALTER TABLE member DROP CONSTRAINT pk_mid;

      可是,跟表结构一样,约束最好也不要修改,而且记住,表建立的同时一定要将约束定义好,以后的使用之中建议就不要去改变了。

      七、查询约束

      在Oracle之中所有的对象都会在数据字典之中保存,而约束也是一样的,所以如果要想知道有哪些约束,可以直接查询“user_constraints”数据字典:

      SELECT owner,constraint_name,table_name FROM user_constraints;

      但是这个查询出来的约束只是告诉了你名字,而并没有告诉在哪个字段上有此约束,所以此时可以查看另外一张数据字典表“user_cons_columns”;

      COL owner FOR A15;
      COL constraint_name FOR A15;
      COL table_name FOR A15;
      COL column_name FOR A15;
      SELECT owner,constraint_name,table_name,column_name FROM user_cons_columns;

      这些维护工作大部分由专门的DBA负责。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇oracle快照(snapshot)管理 下一篇查看Oracle执行计划的几种常用方..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·TCP/UDP协议_百度百科 (2025-12-26 12:20:11)
·什么是TCP和UDP协议 (2025-12-26 12:20:09)
·TCP和UDP详解 (非常 (2025-12-26 12:20:06)
·Python 教程 - W3Sch (2025-12-26 12:00:51)
·Python基础教程,Pyt (2025-12-26 12:00:48)