首页 > 数据库 > SQL > 正文

SQLCREATEASSELECT使用说明_SQL快速复制表结构数据

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-12-05 20:28:02
原创
672人浏览过
CTAS可一键复制表结构和数据,但不复制主键、索引、外键等约束;语法为CREATE TABLE new_table AS SELECT * FROM old_table;支持字段筛选、计算列、别名重命名及空表复制(WHERE 1=0)。

sqlcreateasselect使用说明_sql快速复制表结构数据

CREATE TABLE ... AS SELECT(简称 CTAS)是 SQL 中快速复制表结构和数据最常用的方法之一,一条语句就能同时完成建表 + 插入数据,无需先建表再 INSERT。但要注意:它只复制字段定义和数据,不复制主键、索引、外键、默认值、自增属性等约束信息。

基本语法与最简用法

核心写法很简单:

  • CREATE TABLE new_table AS SELECT * FROM old_table;
  • 执行后会新建 new_table,字段名、类型(尽可能推断)、顺序、以及所有行数据都来自 old_table
  • 如果只想复制部分列或加计算字段,直接在 SELECT 中调整即可,比如:
    CREATE TABLE user_backup AS SELECT id, name, email, NOW() AS backup_time FROM users;

复制结构但不复制数据

只需让 SELECT 不返回任何行,常用技巧是加一个恒假条件:

  • CREATE TABLE empty_copy AS SELECT * FROM old_table WHERE 1=0;
  • 有些数据库(如 PostgreSQL)也支持 LIKE 语法做纯结构复制,但 CTAS + WHERE FALSE 兼容性更广。
  • 注意:即使没数据,字段类型仍会被保留(如 VARCHAR 长度、INT 有无符号等,取决于数据库实现)。

跨库或跨表重命名字段时的注意事项

SELECT 中使用别名会影响新表的字段名:

HiDream AI
HiDream AI

全中文AIGC创作平台和AI社区

HiDream AI 266
查看详情 HiDream AI
  • CREATE TABLE t2 AS SELECT id AS user_id, name AS full_name FROM t1;
  • 新表 t2 的字段就是 user_idfull_name,不是原名。
  • 若某列是表达式(如 age + 1),必须显式加别名,否则某些数据库(如 MySQL 8.0+)会报错:
    CREATE TABLE t2 AS SELECT id, age + 1 AS new_age FROM t1;

不同数据库的小差异

CTAS 行为略有不同,使用前建议确认:

  • MySQL:不复制 NULL/NOT NULL 属性(全部按可空处理),也不复制 AUTO_INCREMENT;字段类型可能被简化(如 ENUM 变成 VARCHAR)。
  • PostgreSQL:会尽量保留数据类型和 NOT NULL 约束,但依然不带主键、索引、默认值。
  • Oracle:支持 CREATE TABLE ... AS SELECT,但默认不继承原表的统计信息,需手动收集。
  • SQL Server:不直接支持 CTAS,需用 SELECT ... INTO 替代(仅限首次建表)。

基本上就这些。用好 CTAS 能省掉不少 DDL + DML 步骤,但别忘了后续补上索引、主键等关键约束——结构复制只是第一步。

以上就是SQLCREATEASSELECT使用说明_SQL快速复制表结构数据的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号