sql - 如何使用与 y 相似的数据创建表 x 并在 oracle 中声明更多新列

标签 sql database oracle

我想创建一个类似于其他表的表,并且还想同时声明更多的新列。

我试过

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/

相关文章:

oracle - PostgreSQL 分页以及行号索引

asp.net - VS2012 - 服务器/数据库资源管理器中未显示 "Create table"或 "show table data"菜单选项

php - MySql 使用 ip 创建或更新行?

php - PHP警告:mysqli_num_rows()和数据库创建

ruby-on-rails - 用另一个字段填充数据库中的字段

mysql/oracle 存储数学公式

mysql - SQL 存储过程字符串搜索通过传递的参数和使用 'LIKE' 查询

c# - 如何从 Asp.Net Identity 表中删除鉴别器列

mysql - 从表中获取所有值并重用它们在其他表中创建行

sql - 如何使用过程和用户​​输入在 PL/SQL 中搜索日期