发布日期:2015-10-19 10:27 来源: 标签: oracle教程 oracle函数大全 查看oracle用户表约束内容 查看oracle用户表所占空间
本章节我们将学习如何查看用户表上的约束内容及所占空间的大小?下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
查看用户表约束内容
系统环境: 
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:\ORACLE

实现方法: 
SQL> conn system/manager
SQL> grant connect,resource to test1 identified by pass1;
SQL> conn test1/pass1
SQL> create table a(a number primary key);
SQL> create table b(a number primary key,b number not null,c number check(c>0));

SQL> desc USER_CONSTRAINTS
 名称                                      空?      类型
 ----------------------------------------- -------- --------------
 OWNER                                     NOT NULL VARCHAR2(30) --用户名
 CONSTRAINT_NAME                           NOT NULL VARCHAR2(30) --约束名
 CONSTRAINT_TYPE                                    VARCHAR2(1) --约束类型
 TABLE_NAME                                NOT NULL VARCHAR2(30) --表名
 SEARCH_CONDITION                                   LONG --
 R_OWNER                                            VARCHAR2(30) --
 R_CONSTRAINT_NAME                                  VARCHAR2(30) --
 DELETE_RULE                                        VARCHAR2(9) --
 STATUS                                             VARCHAR2(8) --状态
 DEFERRABLE                                         VARCHAR2(14) --
 DEFERRED                                           VARCHAR2(9) --
 VALIDATED                                          VARCHAR2(13) --
 GENERATED                                          VARCHAR2(14) --
 BAD                                                VARCHAR2(3) --
 RELY                                               VARCHAR2(4) --
 LAST_CHANGE                                        DATE --最后更改时间

SQL> desc USER_CONS_COLUMNS
 名称                                      空?      类型
 ----------------------------------------- -------- ----------------
 OWNER                                     NOT NULL VARCHAR2(30) --用户名
 CONSTRAINT_NAME                           NOT NULL VARCHAR2(30) --约束名
 TABLE_NAME                                NOT NULL VARCHAR2(30) --约束类型
 COLUMN_NAME                                        VARCHAR2(4000) --列名
 POSITION                                           NUMBER --

SQL> col 用户名 format a10
SQL> col 约束名称 format a15
SQL> col 约束类型 format a10
SQL> col 表名 format a10
SQL> col 列名 format a10
SQL> col 约束内容 format a20

SQL> select a.OWNER 用户名,
            a.CONSTRAINT_NAME 约束名称,
            a.CONSTRAINT_TYPE 约束类型,
            a.TABLE_NAME 表名,
            b.COLUMN_NAME 列名,
            a.SEARCH_CONDITION 约束内容
     from USER_CONSTRAINTS a,USER_CONS_COLUMNS b
     where a.CONSTRAINT_NAME=b.CONSTRAINT_NAME;

用户名     约束名称        约束类型   表名       列名       约束内容
---------- --------------- ---------- ---------- ---------- --------------------
TEST1      SYS_C001239     P          A          A
TEST1      SYS_C001240     C          B          B          "B" IS NOT NULL
TEST1      SYS_C001241     C          B          C          c>0
TEST1      SYS_C001242     P          B          A

这样,如果发出以下一样的语句,会出现约束错误,可以根据显示的约束号来查询是违反了哪一列上的约束条件

SQL> insert into b values(1,1,-1);
insert into b values(1,1,-1)
*
ERROR 位于第 1 行:
ORA-02290: 违反检查约束条件 (TEST1.SYS_C001241)


SQL> select a.OWNER 用户名,
            a.CONSTRAINT_NAME 约束名称,
            a.CONSTRAINT_TYPE 约束类型,
            a.TABLE_NAME 表名,
            b.COLUMN_NAME 列名,
            a.SEARCH_CONDITION 约束内容
     from USER_CONSTRAINTS a,USER_CONS_COLUMNS b
     where a.CONSTRAINT_NAME='SYS_C001241' and a.CONSTRAINT_NAME=b.CONSTRAINT_NAME;

用户名     约束名称        约束类型   表名       列名       约束内容
---------- --------------- ---------- ---------- ---------- --------------------
TEST1      SYS_C001241     C          B          C          c>0

查看用户表所占空间大小
说明: 
SQL> col SEGMENT_NAME format a20
SQL> col TABLESPACE_NAME format a20
SQL> select segment_name,tablespace_name,bytes,blocks from user_segments where segment_type='TABLE';

相关评论

专题信息
    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。本教程重点讲解Oracle函数、SQL语言、PL/SQL语言、oracle安装、SQL技巧等多方面的知识,对大家学习Oracle以及Oracle的实际应用有很大帮助。