SELECT...INTO 以及insert into...select总结

转载 2007年10月12日 00:20:00

SELECT...INTO 以及insert into...select总结

SELECT...INTO 语句

创建制表检索.
语法

SELECT field1[, field2[, ...]]INTO新表[IN外部数据库]
FROM源

SELECT...INTO 语句可分为以下几个部分:部分 说明
field1, field2 欲复制至新表的字段的名称。
NewTable 欲创建的表的名称。它应遵循标准命名公约.如果 NewTable 的名称与现存表的名称相同时,将会发生可以捕捉到的错误。
Externaldatabase 进入外部数据库的路径。有关路径的描述,请参阅 IN 子句。
source 从其中选择记录的现存表的名称。它可以是单一表或多重表或一个查询。
查看:

http://www.aspxuexi.com/sql/sql/2006-4-8/select_insert.htm

(用SELECT复制记录和表)

说明

可以使用生成表查询来存档记录、生成表的复制备份、或生成输出至另一个数据库的表的副本、或用作定期显示数据的报表的依据。例如,可以每月运行一次同样的生成表查询,生成地区的销售月报。

注意
或许你想要为新表定义一个主键。创建新表时,新表中的字段将继承查询基本表中每一个字段的数据类型及大小,但不传递其他的字段或表属性。
使用 INSERT INTO 语句 而不用创建追加检索来把数据加入当前表中。
在运行生成表查询之前,若要知道会选择哪些记录,可以先看一看使用相同选择条件的 SELECT 语句的结果。

SELECT...INTO 语句示例

此示例选择在员工表中的所有记录,然后复制到命名为 Emp Backup 的新表中。

Sub SelectIntoX()


Dim dbs As Database

Dim qdf As QueryDef


' 在您的计算机中修改此行使其正确指到 Northwind 的路径。

Set dbs = OpenDatabase("Northwind.mdb")

' 对运费超过 $100 的订单,


' 选择员工表中的所有记录,

' 并且复制到称作员工备份的新表中。

dbs.Execute "SELECT Employees.* INTO " _

& "[Emp Backup] FROM Employees;"



' 删除 QueryDef 因为这是一个演示。

dbs.Execute "DROP TABLE [Emp Backup];"



dbs.Close


End Sub

在access中插入数据到另外的表: (蓝色理想 萧萧小雨)

大家都知道Select into 吧。
比如:
=========================
select into tableB
select * from tableA
where userName='abc'
=============================
会创建新表tableB,把tableA中符合条件的纪录插入到tableB中。
这是在一个mdb文件里操作的。

现在我想把A.mdb里的表tableA里的符合条件的纪录插入到B.mdb里的tableB中,
你有什么好办法吗?
哈哈,我开始想的也是先检索tableA的A.mdb,然后循环记录集插入到B.mdb。
这需要打开两个Connection。

后来我发现一招(高手不要说OLD啊……)
首先得知道B.mdb的物理地址。这里用toDBFile变量表示(可以用Server.MapPath取得)
====================================
sql="insert into tableB IN '" & toDBFile & "' select * FROM tableA where userName='abc'"
=======================================
只要建立一个到A.mdb的连接。执行这个SQL语句就一切OK了。

 


 

insert into (select ... from ... where ... with check option) values

SQL> create table test(id varchar2(20) not null primary key,mc varchar2(60));

Table created

SQL> insert into (select id,mc from test where id='1') values('1','111111');

1 row inserted

SQL> select * from test;

ID MC
-------------------- ------------------------------------------------------------
1 111111

SQL> insert into (select id,mc from test where id='1') values('1','111111');

insert into (select id,mc from test where id='1') values('1','111111')

ORA-00001: 违反唯一约束条件 (ROME.SYS_C0027236)

SQL> insert into (select id,mc from test where id='1') values('2','222222');

1 row inserted

SQL> insert into (select id,mc from test where id='10') values('3','333333');

1 row inserted

SQL> select * from test;

ID MC
-------------------- ------------------------------------------------------------
1 111111
2 222222
3 333333

SQL> insert into (select id,mc from test where id='10' with check option) values('5','555555');

insert into (select id,mc from test where id='10' with check option) values('5','555555')

ORA-01402: 视图 WITH CHECK OPTIDN where 子句违规

SQL> insert into (select id,mc from test where 1=1 with check option) values('5','555555');

1 row inserted

SQL> select * from test;

ID MC
-------------------- ------------------------------------------------------------
1 111111
2 222222
3 333333
5 555555

 


 

PostgreSQL

名称

SELECT INTO ─从当前表或视图中创建一个新表
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] expression [ AS name ] [, ...] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ] [ FROM table [ alias ] [ , ...] ] [ WHERE condition ] [ GROUP BY column [, ...] ] [ HAVING condition [, ...] ] [ { UNION [ ALL ] | INTERSECT | EXCEPT } select ] [ ORDER BY column [ ASC | DESC | USING operator ] [, ...] ] [ FOR UPDATE [ OF class_name [, ...] ] ] LIMIT { count | ALL } [ { OFFSET | , } start ]
输入

所有输入的域都在SELECT中有详细描述。
输出

所有输入的域都在SELECT中有详细描述。
描述

SELECT INTO从一个查询中创建一个新表。 比较典型的是这个查询从一个现存的表中提取数据,但实际上任何SQL查询都可以。

注意: CREATE TABLE AS功能上和SELECT INTO命令相等。

 


 

常见用途

制作备份

下面的示例制作一个"Persons" 表的备份。SELECT * INTO Persons_backup
FROM Persons


IN子句可用于复制表到另一个数据库。SELECT Persons.* INTO Persons IN 'Backup.mdb'
FROM Persons


如果你只希望复制一些字段,你也可以在SELECT语句后列出字段清单。SELECT LastName,FirstName INTO Persons_backup
FROM Persons


你也可以添加一个子句。下面的示例通过从"Persons" 表筛选居住于 "Sandnes" 的人,用两列 (FirstName and LastName) 创建一个"Persons_backup" SELECT LastName,Firstname INTO Persons_backup
FROM Persons
WHERE City='Sandnes'


从多于一个表选择数据也是可能的。下面的示例创建一个包含Employees和Orders两个表数据的新表 "Empl_Ord_backup"。SELECT Employees.Name,Orders.Product
INTO Empl_Ord_backup
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

 


 

select into 和 insert into select 两种表复制语句之间的差别

select * into destTbl from srcTbl

insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl

以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的。

第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。

第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量,如例中的:5。

SELECT...INTO 以及insert into...select总结2007-10-9 19:07:17 www.aspxuexi.com  

数据复制评测:insert into 与 select into 对比

insert into 消耗秒数/日志文件增长量 select * into 消耗秒数/日志文件增长量 简单日志 7 分 8 秒 / 10850 MB 2 分 10 秒 / 10...
  • yenange
  • yenange
  • 2016-07-04 12:20:48
  • 914

select into from 和 insert into select 的用法和区别

select into from 和 insert into select都是用来复制表,两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建。insert ...
  • ying890
  • ying890
  • 2016-07-28 18:33:04
  • 53318

INSERT INTO SELECT 实例

需求:      把一个表中特定的2列查询出来,然后插入到另外一张表,插到另一张表的其他列的值是固定值。 要插入的表,插入全部内容时是这样的: INSERT INTO `mapping_reco...
  • ljheee
  • ljheee
  • 2017-11-27 21:23:12
  • 1373

INSERT INTO SELECT语句与SELECT INTO FROM语句区别

1.INSERT INTO SELECT语句语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1或者...
  • weixin_39415084
  • weixin_39415084
  • 2017-07-27 09:52:03
  • 11561

1、SQL Server:SELECT INTO 和 INSERT INTO SELECT

本文来自:http://www.cnblogs.com/NaughtyBoy/p/3153082.html 做数据库开发的过程中难免会遇到有表数据备份的,而SELECT INTO……和INSERT ...
  • xushaozhang
  • xushaozhang
  • 2017-02-13 20:20:21
  • 1148

SQL中SELECT INTO和INSERT INTO SELECT语句介绍

SQL SERVER数据库中,表复制是经常要用到的操作,下面就将为您介绍SQL中SELECT INTO和INSERT INTO SELECT语句,供您参考。 Insert是T-sql中常用语句,...
  • qq798833488
  • qq798833488
  • 2016-11-15 14:44:43
  • 3723

insert into select 中使用序号

今天遇到一个问题: 在insert into select后面用序列时报错 insert into R_POL_VIPO(id,SUMVIPONUM,STATSTICSDATE) sel...
  • machao0903
  • machao0903
  • 2017-06-19 14:36:52
  • 586

SQL INSERT INTO TABLE SELECT指定插入字段的新用法

首先声明开发用的数据库是Oracle ,其他数据库未做测试 今天开发中遇到个需求,就是把一张配置表TABLE1的某些字段查询出来插入到另一张表TABLE2中去,但是由于TABLE2中需要插入的字段实在...
  • foreversilent
  • foreversilent
  • 2016-09-06 14:57:59
  • 11095

【转】select into from 和 insert into select 的用法和区别

select into from 和 insert into select都是用来复制表,两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建。insert ...
  • sinat_29173167
  • sinat_29173167
  • 2016-10-24 09:04:37
  • 3084

Mysql数据库insert into select 单表插入常量

单表插入常量 INSERT INTO tb1 (col1,colx) SELECT col1,valx FROM tb1 其实本质还是INSERT INTO SELECT 的用法,只是把其他表化成了单...
  • justgeeker
  • justgeeker
  • 2016-06-14 09:31:57
  • 1051
收藏助手
不良信息举报
您举报文章:SELECT...INTO 以及insert into...select总结
举报原因:
原因补充:

(最多只允许输入30个字)