我想创建一个类似于其他表的表,并且还想同时声明更多的新列。
我试过
create table emp2 as ((select * from emp)),age varchar2(3))
但它不起作用。
最佳答案
如果您想在您的 CTAS(创建表选择)中添加额外的列,您必须为它们提供数据。如果您想将该列留空,可以使用 CAST(null as <your datatype>)
:
create table dual_copy as
select
d.*,
cast(null as varchar2(3)) as age
from dual d;
不过,有一点建议:明确存储人们的年龄从来都不是一个好主意(随着时间的推移,人们往往会变老 :-))。只需存储出生日期并即时计算年龄。或者(如果您运行的是 11g 或更高版本),您可以为年龄添加一个虚拟列。
如果您坚持显式存储年龄,您至少应该使用数字数据类型而不是 varchar2
.
关于sql - 如何使用与 y 相似的数据创建表 x 并在 oracle 中声明更多新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25175215/