从另一个表中拷贝行的操作,靠的就是子查询插入,在实际开发里挺常见的,尤其是你要做数据迁移或者表结构调整时。你只要用一条 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
条件还能搞过滤,灵活性高。