INSERT 语句中的子查询
子查询还可以用在 INSERT 语句中。INSERT 语句可以将子查询返回的数据插入到其他表中。
子查询中选取的数据可以被任何字符、日期或者数值函数所修饰。
1 实例
考虑与 teachers 表拥有相同结构的 teachers_bkp 表。现在要将 teachers 表中所有的数据复制到 teachers_bkp 表中,代码如下:
INSERT INTO teachers_bkp
SELECT *
FROM teachers;
执行后 teachers 表数据为:
mysql> INSERT INTO teachers_bkp
-> SELECT *
-> FROM teachers;
Query OK, 5 rows affected (0.05 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM teachers_bkp;
+----+------------------+---------------------------+-----+---------+
| id | name | email | age | country |
+----+------------------+---------------------------+-----+---------+
| 1 | Eastern Heretic | eastern.heretic@gmail.com | 20 | CN |
| 2 | Northern Beggar | northern.beggar@qq.com | 21 | CN |
| 3 | Western Venom | western.venom@163.com | 28 | USA |
| 4 | Southern Emperor | southern.emperor@qq.com | 21 | CN |
| 5 | Linghu Chong | NULL | 18 | CN |
+----+------------------+---------------------------+-----+---------+
5 rows in set (0.05 sec)
2. 总结
通过上面的实例学习,我们总结其基本语法如下所示:
INSERT INTO table_name
SELECT colnum_name(s)
FROM table_name
[ WHERE colnum_name OPERATOR ]
练习题
现有一张 courses_bkp 结构与 courses 表相同,现在需要将 courses 表中所有的数据复制到 courses_bkp 表中。
Last updated
Was this helpful?