一。数据字典
Select object_name,object_type from user_objects;
user_objects当前用户所拥有的所有对象。不包含你建立的public对象。
select table_name from user_tables;
user_tables你自己的表,你有一切的权利。你所拥有的表。
select * from tab; tab你所拥有的表和视图,显示的较简洁,列较少。
二。
在现有表的基础上建立表
Create table t2 as select ename name,sal salary from emp;
当t2诞生时就会有子查询中所查出的数据。
如果想改变列的名称,请用别名。
如果不想要数据,只建立表结构,请加一个假条件。
Create table t3 (c1,c2,c3) as
Select ename,empno,sal from emp where 9=1;
修改表结构
如果列为null,可以随便修改列的类型和宽度。
如果有数据,修改会受到限制。但不会破坏数据。
如果不改变数据类型,只改变宽度的话加大是可以的。
alter table t1 modify(name char(4));
修改表的名称
rename t1 to t_1; 必须是表的owner才可以修改表名称
修改列的名称(10g才可以) alter table t3 rename column c1 to name;
Drop table t2; 并没有将表真的删除,只是改了名称。
显示回收站的信息
SQL> show recyclebin
SELECT * FROM USER_RECYCLEBIN;
将回收站的表还原
FLASHBACK TABLE t2 TO BEFORE DROP;
还原表的同时修改表的名称。
FLASHBACK TABLE T2 TO BEFORE DROP RENAME TO TT2;
清空回收站内指定的表
PURGE TABLE T2;
清除当前用户的回收站,不会影响其它用户的回收站
PURGE RECYCLEBIN;
绕过回收站,彻底的删除表,在10G前是没有回收站的,就是彻底的删除。回收站内没有的表是不容易
恢复的,我只能取备份来恢复了。
Drop table t2 PURGE;
Insert的进一步学习
将一张表的数据分别插入到多张表中
insert all
into e1 values(ename,sal,hiredate)
into e2 values(ename,deptno,mgr)
select ename,sal,hiredate,deptno,mgr
from emp where deptno=10;
All的含义为:emp表中的一行将插入到e1,e2中
insert first
when sal>3000 then
into e1 values(ename,sal,hiredate)
when sal>2000 then
into e2 values(ename,deptno,mgr)
select ename,sal,hiredate,deptno,mgr
from emp ;
First的含义为:一行只能给一张表,即使两个表的条件都符合