SQL SELECT INTO语句

通过SQL,您可以从一个表复制信息到另一个表。

SELECT INTO语句从一个表复制数据,然后把数据插入到另一个新表中。

SQL SELECT INTO语句

注意:

MYSQL数据库不支持SELECT…INTO语句,但支持INSERT INTO…SELECT。

可以使用以下语句来拷贝表结构及数据:

CREATE TABLE 新表
AS
SELECT * FROM 旧表
SQL SELECT INTO语法

1.复制所有的列插入到新表中:

SELECT *
INTO newtable [IN externaldb]    --externaldb外部数据库
FROM table1

2.复制希望的列插入到新表中:

SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1

提示:新表将会使用SELECT语句中定义的列名称和类型进行创建,可以使用AS子句来应用新名称。

SQL SELECT INTO 实例

1.创建Websites备份文件:查询出Websites表,复制所有的列至新表WebsitesBackup1中

SELECT * 
INTO WebsitesBackup1
FROM Websites

SELECT * FROM WebsitesBackup1

personID	name	url	alexa	country
1	Google	https://www.google.cm/	1	USA
2	淘宝	https://www.taobao/	13	CN
3	菜鸟教程	https://www.runoob/	4689	CN
4	微博	https://www.weibo/	20	CN
5	Facebook	https://www.facebook/	3	CN
7	stackoverflow	https://www.stackoverflow/	0	USA

2.只复制一些列到新表中:只查询Websites表中name,url列,并复制到新表WebsitesBackup2中

SELECT name,url
INTO WebsitesBackup2     ---必须是新表,如果是已存在的表,执行语句会提示:数据库已存在该对象
FROM Websites

SELECT * FROM WebsitesBackup2

name	url
Google	https://www.google.cm/
淘宝	https://www.taobao/
菜鸟教程	https://www.runoob/
微博	https://www.weibo/
Facebook	https://www.facebook/
stackoverflow	https://www.stackoverflow/

3.只复制中国的网站插入到新表中:

SELECT *
INTO WebsitesBackup4
FROM Websites
WHERE country = 'CN'
小提示:因为题目是需要复制中国的网站,所以必须使用country='CN'该过滤条件;
如果不添加,会把Websites表所有列制到新表中;
如果不添加,并指定查询添加列名为country,会把Websites表中country列复制到新表中,且查询的是所有网站,没有精确定位到中国网站。

SELECT * FROM WebsitesBackup4

personID	name	url	alexa	country
2	淘宝	https://www.taobao/	13	CN
3	菜鸟教程	https://www.runoob/	4689	CN
4	微博	https://www.weibo/	20	CN
5	Facebook	https://www.facebook/	3	CN

4.复制多个表中得数据插入到新表中:

SELECT Websites.name,access_log.count,access_log.date
INTO WebsitesBackup5
FROM Websites
LEFT JOIN access_log
ON Websites.personID = access_log.site_id

SELECT * FROM WebsitesBackup5

name	count	date
Google	45	2016-05-10 00:00:00.000
Google	230	2016-05-14 00:00:00.000
淘宝	10	2016-05-14 00:00:00.000
菜鸟教程	100	2016-05-13 00:00:00.000
菜鸟教程	220	2016-05-15 00:00:00.000
菜鸟教程	201	2016-05-17 00:00:00.000
微博	13	2016-05-15 00:00:00.000
Facebook	205	2016-05-14 00:00:00.000
Facebook	545	2016-05-16 00:00:00.000
stackoverflow	NULL	NULL

提示:SELECT INTO 语句可用于通过另一种模式创建一个新的空表。只需要添加促使查询没有数据返回的WHERE子句即可:

SELECT *
INTO newtable
FROM table1
WHERE 1=0

实例:

SELECT * 
INTO WebsitesBackup6
FROM Websites
WHERE personID= '0'   ---PersonID的值没有为0的

SELECT * FROM WebsitesBackup6
只能查询表列名,没有任何数据

更多推荐

SQL SELECT INTO语句