Oracle SQL中select * from emp as newemp报错,求解决建议
Oracle 创建与原表结构数据一致的新表解决方案
问题根源
你写的select * from emp as newemp存在两个核心问题:
- Oracle中表别名不能使用
AS关键字,列别名允许使用AS,这也是select empno as newempno from emp能正常执行的原因; - 这条语句只是普通查询语句,不会创建新表,完全达不到复制表的目的。
正确操作方法
要创建和emp结构、数据完全一致的新表Pnewemp,执行以下SQL即可:
CREATE TABLE Pnewemp AS SELECT * FROM emp;
- 该语句会完整复制
emp的所有列结构和数据; - 注意:主键、外键、触发器等约束不会自动同步,如果需要保留这些约束,需手动添加。
补充说明
- 若仅需复制表结构、不需要复制数据,可添加过滤条件:
CREATE TABLE Pnewemp AS SELECT * FROM emp WHERE 1=0;
- 仅查询场景下,表别名的正确写法(不创建新表):
SELECT * FROM emp newemp; -- 若别名包含特殊字符,需用双引号包裹 SELECT * FROM emp "new_emp";
内容的提问来源于stack exchange,提问作者syt6180
相关产品推荐
相关产品推荐

