SELECT INTO 复制表
SELECT ... INTO(在 MySQL 中是 CREATE TABLE ... AS SELECT)把查询结果直接生成一张新表——一步完成"查询 + 建表 + 插入"。列名和数据类型从查询结果自动继承。
CTAS(CREATE TABLE AS SELECT 的缩写)是快速制作数据副本或快照的利器。比如"创建一张 6 月工资的快照表""把离职员工的记录复制到归档表"。
注意:CTAS 只复制数据,不会复制原表的索引、主键、外键约束和默认值。生成的新表是裸的,需要手动添加这些结构。
以飞翔科技为例:
-- 创建技术部员工的快照表
CREATE TABLE tech_employees AS
SELECT emp_id, emp_name, basic_salary, performance_bonus, join_year
FROM employees
WHERE dept_code = 2;
-- 验证新表
SELECT COUNT(*) FROM tech_employees;
-- 创建飞翔小店商品的备份表
CREATE TABLE flying_shop_products_backup AS
SELECT product_id, product_name, price, stock
FROM products
WHERE shop_name = '飞翔小店';
-- 创建联合查询结果的汇总表
CREATE TABLE dept_salary_summary AS
SELECT dept_code, AVG(basic_salary) AS avg_salary, COUNT(*) AS emp_count
FROM employees
GROUP BY dept_code;
第三个例子把聚合查询的结果存成了实体表——之后不需要每次重新 GROUP BY,直接查这张汇总表就行。适合不常变动但频繁查询的汇总数据。