带数据一起复制要点
- 语法:CREATE TABLE 新表 AS SELECT 列 FROM 旧表 WHERE 条件
- 同时完成建表与插数,适合做数据快照
- 不会复制主键、索引、默认值等约束,只有列和数据
- 列名来自 SELECT 的字段名,可用 AS 重命名
- 想全量复制数据就写 SELECT *,按条件取子集就加 WHERE
- 大表整表复制会锁源表并占用大量临时空间,分批更稳
带数据一起复制示例
-- 复制 2026 年的订单到新表(仅含数据,无索引)
CREATE TABLE orders_2026 AS
SELECT * FROM orders
WHERE created_at BETWEEN '2026-01-01' AND '2099-12-31';
-- 只挑需要的列并重命名
CREATE TABLE user_simple AS
SELECT id AS uid, username AS uname
FROM users;
避坑提醒:AS SELECT 生成的表没有索引,后续若按新表做关联查询会全表扫描;需要索引记得复制后手动补 CREATE INDEX。