请教高手,用SQL怎么查询某个表的建索引的语句,谢谢

chyf212 2008-11-27 11:11:39
请教高手,用SQL怎么查询某个表的建索引的语句,谢谢


请教高手,我现在在数据库里要查某个表的建索引的SQL,就单是显示此表建索引的语句
这样的查询怎么写,谢谢!

如有一个表的建表语句是这样:

create table BC_LOG
(
CREDIT_NO CHAR(12),
PTXCODE CHAR(6),
LOG_CODE CHAR(2),
TXCODE CHAR(6),
TRAN_DATE DATE,
BRANCH_CODE CHAR(9),
USERID CHAR(30),
IP_ADD VARCHAR2(20),
LOG_STR VARCHAR2(256),
ERR_CODE VARCHAR2(20),
ERR_MSG VARCHAR2(256),
STATUS CHAR(1),
DAC CHAR(40),
OID NUMBER(26) not null
);

alter table BC_LOG
add constraint PK_BC_LOG_OID primary key (OID);

create unique index IDX_BC_LOG_PK on BC_LOG (OID);


那我现在要求用查询语句显示的结果就是最后的建索引的语句:

create unique index IDX_BC_LOG_PK on BC_LOG (OID);

请问高手这样的查询怎么写,谢谢

...全文
1410 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chyf212 2008-11-27
  • 打赏
  • 举报
回复
select index_name,tablespace_name,initial_extent,next_extent,owner,table_name
from all_indexes
where index_name='IDX_BC_LOG_PK';
答复楼上的,我现在都不知道索引是那个字段,我该怎么样查啊,而且我要的是建索引的SQL
Andy__Huang 2008-11-27
  • 打赏
  • 举报
回复
查询索引键:
select index_name,tablespace_name,initial_extent,next_extent,owner,table_name
from all_indexes
where index_name='IDX_BC_LOG_PK';
「已注销」 2008-11-27
  • 打赏
  • 举报
回复
關注
剛剛開始學整數據庫
linzi 2008-11-27
  • 打赏
  • 举报
回复
select dbms_metadata.get_ddl('INDEX', 'index name','schema') from dual
tgs8888 2008-11-27
  • 打赏
  • 举报
回复
9i为例:登录OEM后-展开方案-展开用户-展开索引-右键点要查看的索引-对象报告-查看-查看对象定义下的内容就是详细的索引创建语句
junying2yu 2008-11-27
  • 打赏
  • 举报
回复
不错,有现成的可以用,自己查一下吧
codearts 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 codearts 的回复:]
dbms_metadata.get_ddl
[/Quote]

查一下这个函数的用法
codearts 2008-11-27
  • 打赏
  • 举报
回复
dbms_metadata.get_ddl
yonghengdizhen 2008-11-27
  • 打赏
  • 举报
回复
至于index_type 目前只针对B-TREE写了,其它的也就那么回事.
yonghengdizhen 2008-11-27
  • 打赏
  • 举报
回复
没有加上存储参数,相信大多数开发人员对于存储参数并不关注.
好象oracle也提供了这么一个package来提取对象的ddl,不过我不记得是哪一个了,知道的告诉他一下
yonghengdizhen 2008-11-27
  • 打赏
  • 举报
回复
SELECT index_name, prefix || middle || postfix AS index_ddl FROM
(SELECT a.index_name,
'CREATE ' || (CASE WHEN UNIQUENESS='UNIQUE' THEN 'UNIQUE' END)
|| ' INDEX "' || a.table_owner || '"."' || a.index_name || '"'
|| ' ON "' || a.table_owner || '"."' || a.table_name || '"('
prefix,
substr(sys_connect_by_path('"' || COLUMN_NAME || '" ' || DESCEND,','),2) middle,
');' postfix,
rn,
max_rn
FROM User_Indexes a
JOIN
(SELECT table_name,
index_name,
COLUMN_NAME,
DESCEND,
row_number() over(PARTITION BY table_name,index_name ORDER BY column_position) rn,
COUNT(1) over(PARTITION BY table_name,index_name) max_rn
FROM user_ind_columns) b ON a.index_name=b.index_name
WHERE a.tablespace_name='tablespace_name'
AND a.table_owner='schema_name'
AND a.table_name='table_name'
START WITH rn=1
CONNECT BY PRIOR b.table_name=b.table_name
AND PRIOR b.index_name=b.index_name
AND PRIOR b.rn=b.rn-1
)
WHERE rn=max_rn





chyf212 2008-11-27
  • 打赏
  • 举报
回复
请注意我的问题,我要的SQL的查询输出结果就是:
create unique index IDX_BC_LOG_PK on BC_LOG (OID);

而不是查这个表的索引是什么,是此表建索引的语句

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧