①.、查找表的所有索引(包括索引名,类型,构成列):
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
要查询的表
cu.*
user_cons_columns
cu,
user_constraints
au
cu.constraint_name
au.constraint_name
au.constraint_type
'P'
au.table_name
column_name
'U'
*
c
c.constraint_type
'R'
c.table_name
查询外键约束的列名:
cl
cl.constraint_name
外键名称
查询引用表的键的列名:
外键引用表的键名
t.*,c.COMMENTS
user_tab_columns
t,user_col_comments
t.column_name
c.column_name
table_name,num_rows
user_tables;
user_all_tables
user_source
all_users;
dba_users
①.0、Oracle查看当前用户连接:select
v$Session
①.1、Oracle查看当前用户权限:select
session_privs
a.file_id
"FileNo",a.tablespace_name
"Tablespace_name",
a.bytes
"Bytes",a.bytes-sum(nvl(b.bytes,0))
"Used",
sum(nvl(b.bytes,0))
"Free",
sum(nvl(b.bytes,0))/a.bytes*100
"%free"
dba_data_files
a,
dba_free_space
b
a.file_id=b.file_id(◆)
group
by
a.tablespace_name
,
a.file_id,a.bytes
order
a.tablespace_name;
向有主键的表中插入大量数据(千万级),会遇到主键冲突的问题,有两种办法可以捕获到主键冲突
①自己判断主键冲突
select count(*) into v_cnt from table_name where primary_key = pk
if v_cnt = 0 then
insert into table_name values(pk);
end if;
直接将数据插入表中,出现冲突则捕获异常并且忽略进行下一条数据插入,没有则直接插入
第一种办法的效率要高于第二种方法,请教各位大神有没有什么更高效的办法?
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表的主键约束名称,以及主键约束的字段名称. 结果集就是该表的主键
主键就是自己设定的字段,该字段不能为空,而且该字段的值必须唯一,外键就是在主表中可以重复出现,但是它是另一个表的主键,对过外键使两个表相关.
一般的情况下,表的主键是必要的,没有主键的表可以说是不符合设计规范的.
SELECT table_name FROM User_tables t WHERE NOT EXISTS
(SELECT table_name FROM User_constraints c WHERE constraint_type = 'P' AND t.table_name=c.table_name)
其它相关数据字典解释
user_tables 表
user_tab_columns 表的列
user_constraints 约束
user_cons_columns 约束与列的关系
user_indexes 索引
醒找一个表中的主键
以上就是土嘎嘎小编为大家整理的oracle主键如何判断相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!