从另一个表中拷贝行的操作,靠的就是子查询插入,在实际开发里挺常见的,尤其是你要做数据迁移或者表结构调整时。你只要用一条 INSERT INTO ... SELECT ... 语句,不用管 VALUES,数据一把就搞进新表了,写起来也顺手。

子查询的字段要跟你要插入的表字段对得上,不管是个数还是数据类型都别出错。不然执行直接报错,挺烦的。比如你从 emp 表里挑出 MANAGER 的人,塞到 managers 表里,只要字段对得上就能跑通。

INSERT INTO managers(id, name, salary, hiredate)
SELECT tempno, ename, sal, hiredate
FROM emp
WHERE job = 'MANAGER';

注意哦,别去写 VALUES,这里用的是子查询。你就想像是动态批量拷贝行,比你一条条插方便多了。

还有,别忘了提前建好 managers 表,你可以直接跑 lab9_12.sql 脚本。不然你插啥?没表就白忙活了。

如果你对 INSERT + 子查询这块还不是太熟,可以顺手看看这些扩展文章:

如果你经常做数据库表结构的调试和数据迁移,这招真的挺省事,配合好 WHERE 条件还能搞过滤,灵活性高。