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?