oracle中查看当前用户的表结构、主键、索引

1、查询表的所有列及其属性


select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表

2、查找表的所有索引(包括索引名,类型,构成列)


select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表

形成创建索引的sql语句(可以直接使用):


select ‘CREATE ‘ ||un||‘ INDEX ‘||INDEX_NAME||‘ on ‘||TABLE_NAME||‘ (‘||ltrim(max(sys_connect_by_path(COLUMN_NAME, ‘,‘)),‘,‘)||‘)‘
from(select t.table_name,t.INDEX_NAME,t.COLUMN_POSITION,t.COLUMN_NAME,case when i.UNIQUENESS =‘UNIQUE‘ then ‘UNIQUE ‘ else ‘ ‘ end un,
i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name
and t.table_name = i.table_name and t.table_name = 表名
and not exists(select 1 from user_cons_columns c where c.constraint_name = t.index_name and c.table_name = t.table_name))
start with COLUMN_POSITION = 1 connect by COLUMN_POSITION- 1 = PRIOR COLUMN_POSITION and INDEX_NAME = PRIOR INDEX_NAME
group by table_name,INDEX_NAME,un;

去除了创建主键或者创建含有blod列系统自动形成的索引。同时,在创建索引的过程中也考虑到列的顺序。使用了sys_connect_by_path(),很好的列合并工具。

3、查找表的主键(包括名称,构成列)


select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = ‘P‘ and au.table_name = 要查询的表

形成创建主键的sql语句(直接可以使用):


SELECT ‘ALTER TABLE ‘ || TABLE_NAME || ‘ ADD CONSTRAINT ‘ || CONSTRAINT_NAME ||
‘ PRIMARY KEY (‘ || ltrim(max(sys_connect_by_path(COLUMN_NAME, ‘,‘)),‘,‘) || ‘)‘
FROM(select cu.table_name,cu.constraint_name,cu.column_name,cu.position
from user_cons_columns cu, user_constraints au
where cu.constraint_name = au.constraint_name and au.constraint_type = ‘P‘
and au.table_name = 表名 )start with position = 1 connect by position- 1 = PRIOR position
and CONSTRAINT_NAME = PRIOR CONSTRAINT_NAME group by table_name,constraint_name;

在创建主键的过程中考虑了主键列的顺序。使用了sys_connect_by_path(),很好的列合并工具。

oracle中查看当前用户的表结构、主键、索引,布布扣,bubuko.com

时间: 2024-10-19 07:08:52

oracle中查看当前用户的表结构、主键、索引的相关文章

oracle 如何查看当前用户的表空间名称

如何查询当前用户的表空间名称?因为oracle建立索引,需要知道当前用户的表空间,查找了一下资料 --查询语法-- select default_tablespace from dba_users where username='登录用户' 如,我的登录用户是TMS21,那么查询语法是 /* 查看用户所属的表空间 */ select default_tablespace from dba_users where username='TMS21'; 相关查询的用法,也顺便记录一下 1)查询当前用户

通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类

http://www.cnblogs.com/lbangel/p/3487796.html package cn.test; import java.io.File;import java.io.FileOutputStream;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.DriverManager;import java.sql.ResultSet;import java.text.Si

oracle中查看某个用户名下所有的表以及sequence

select   table_name   from   all_tables   where   owner   =upper('jdfp')    ; 此处查的是tieba这个用户表空间下的所有表名 ----------------------------------------------------- 查询当前用户下的sequence select * from user_sequence;

MySQL集群数据库表的主键设计

使用MySQL数据库的人,毫无例外的在设计时都会碰到主键的选型,一般都会在下面三种中选择一个或多个,自增长列.UUID以及UUID_SHORT,这集中主键的特性,想必大家都非常了解了,我就不再细说了,在InnoDB引擎中,选择哪种主键更好,网上也有很多帖子有描述,基本上都是建议是自增长列或者搭配UUID作为逻辑主键一起使用,但是如果是ndbcluster引擎呢? 为此我专门做了一下测试,环境为4台物流机器(2C,8G内存)做的数据节点,NoOfReplicas=2,首先建立三张表. CREATE

Oracle笔记(三) Scott用户的表结构

Oracle笔记(三) Scott用户的表结构 在Oracle的学习之中,重点使用的是SQL语句,而所有的SQL语句都要在scott用户下完成,这个用户下一共有四张表,可以使用: SELECT * FROM tab; 查看所有的数据表的名称,如果现在要想知道每张表的表结构,则可以采用以下的命令完成: DESC 表名称: 1.  部门表:dept № 名称 类型 描述 1 DEPTNO NUMBER(2) 表示部门编号,由两位数字所组成 2 DNAME VARCHAR2(14) 部门名称,最多由1

ORACLE中查看表中的外键来源于哪些表

1. ORACLE中查看表中的外键来源于哪些表 select cl.table_name from user_cons_columns cl left join user_constraints c on cl.constraint_name = c.r_constraint_name where c.constraint_type = 'R' and c.table_name = '表名' 2.Oracle中查看表中的主键被被哪些表引用为外键

oracle 中查看一张表是否有主键,主键在哪个字段上的语句怎么查如要查aa表,

select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name = 'AA'-------大写 查看AA表的主键约束名称,以及主键约束的字段名称. 如果没有,则返回空

oracle下导出某用户所有表的方法

scott/tiger是用户名和密码,handson是导出的实例名 按用户方式导出数据(owner当中写的是用户名) exp scott/[email protected] file=scott_back owner=scott 按表方式导出数据(talbes当中写的是全部表的名称) exp scott/[email protected] tables=(emp, dept) file=scott_back_tab 按表空间方式导出数据(tablespaces当中写的是表空间名称) exp sy

Oracle使用游标为所有用户表添加主键语句

应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在ID字段,则判断是否是整形,如果不是就重命名字段为[表名ID],然后新增ID,如果不存在则直接添加自增一ID的主键 操作说明:打开PQSQL连接数据库后直接执行下面的详细脚本代码运行即可,脚本有风险(会删除原来的索引跟主键约束),请不要轻易在正式运行的数据库上直接执行 --Oracle使用游标为所有用