自斟自酌

七月 19, 2006

oracle数据库如何查询表的相关信息

归类于:PL/SQL开发学习 — pocodown @ 2:03 pm

在ORACLE中.每个用户都有USER_CONS_COLUMNS ,USER_TAB_COLUMNS,USER_CONSTRAINTS

这是查找主键的SQL

 SELECT A.COLUMN_NAME  FROM  USER_CONS_COLUMNS A,USER_CONSTRAINTS B
 WHERE A.TABLE_NAME=B.TABLE_NAME AND B.CONSTRAINT_TYPE=’P’
 AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.TABLE_NAME = ”
  这是查找表的域的SQL
  select * from USER_CONS_COLUMNS where table_name=’SP_USER_INFO’

end

TRUNCATE和DELETE区别及TRUNCATE使用说明

归类于:PL/SQL开发学习 — pocodown @ 1:58 pm

TRUNCATE和DELETE有以下几点区别
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
4、TRUNCATE不能触发任何DELETE触发器。
5、不能授予任何人清空他人的表的权限。
6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
7、不能清空父表。

TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE
在默认是 DROP STORAGE 当使用DROP STORAGE时将缩短表和表索引,将表收缩到最小范围,并重新设置NEXT参数。REUSE STORAGE不会缩短表或者调整NEXT参数

在特殊情况下使用 REUSE STORAGE
 
一个实际应用的典型例子:
你用sqlldr加载一个1000万记录的数据表,但是加载了多一半的时候你发现有问题,
这个时候你想清空表重新加载。
那么最好 reuse storage ,这样再次加载就不需要再次寻找空闲空间了

end