频道栏目
首页 > 数据库 > Oracle > 正文
Oracle使用子查询创建表
2017-06-16 09:17:54      个评论    来源:  
收藏   我要投稿

Oracle使用子查询创建表。

1.当前用户为zzd。

在用户test的模式下创建表t_emp

create table test.t_emp(

eid number(5),

ename varchar2(10),

hiredate date default trunc(sysdate),

sal number(7,2),

comm number(7,2) default 0.03)

2.在test.emp表中插入一行数据。

insert into test.t_emp(eid,ename,sal)

values(1000,'hellojava',1994.14)

3.使用子查询将test模式下的表t_emp拷贝到当前用户zzd的模式下,所建的表即是test.t_emp表的副本。

create table t_emp as

select * from

test.t_emp

4.也可以使用where子句来限制插入新表的行。

例如只插入表头:

create table t_emp_copy as

select *from

test.t_emp

where 1=2

注意:所建的表虽然完全是之前表的副本,他们的定义和包含的行完全相同。列上的所有NOT NULL(非空)

和CHECK(检查)约束也应用到新的表,但所有的PRIMARY KEY,UNIQUE或者FOREIGN KEY约束则不适用

(因为这三类约束需要索引)。

5.创建表之后可以更改表定义

1).添加列

alter table t_emp

add (job_id number(4))

2).修改列

alter table t_emp

modify (comm number(7,2) default 0.05)

3).删除列

alter table t_emp

drop column job_id;

4).将列标记为未使用

alter table t_emp

set unused column job_id;

5).重命名列

alter table t_emp

rename column job_id to jobid;

6).将表标记为只读

alter table t_emp

read only;

所有的这些变更都是包含内置commit的ddl命令。因此他们是不可逆的,如果表上有活动事物,他们就会失败。

其实他们也是瞬间完成的(删除列除外)。删除列可能是一个耗时的操作,因为删除各列之后,必须重新构造各

行来删除列的数据。set unused命令——对于sql而言,他让这些列不存在——通常是更好的选择,如果方便的话,

后面采用下列命令,一次删除表中所有未使用的列:

alter table t_emp

drop unused columns;

每天的坚持是我进步的源泉

——所有的坚持都不会被辜负。

点击复制链接 与好友分享!回本站首页
上一篇:oracle12cR2inmemory
下一篇:Oracle那些事(9)-启动与关闭
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 |

版权所有: 88bifa.com--致力于做实用的IT技术学习网站