Oracle的DDL,DML语句

来源:互联网 发布:湖南网络作家协会 编辑:程序博客网 时间:2024/04/29 00:04

一。数据字典
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的含义为:一行只能给一张表,即使两个表的条件都符合

 

 

原创粉丝点击