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。
分享到:
相关推荐
### MySQL中的SELECT INTO和INSERT INTO SELECT详解 #### 一、引言 在数据库管理与应用开发过程中,数据的复制是一项非常常见的需求。特别是在进行数据迁移、备份或创建新表时,能够快速有效地复制数据是非常重要...
### 使用Select Into与Insert Into Select进行表复制的方法 在数据库管理与操作中,`SELECT INTO`与`INSERT INTO SELECT FROM`是两种常见的用于复制或创建新表的方式。这两种语句虽然相似,但在实际使用场景中有着...
ORACLE INSERT INTO SELECT *FROM 分批提交例子
总结来说,`INSERT INTO` 和 `REPLACE INTO` 的主要区别在于处理冲突的方式:`INSERT INTO` 遇到冲突时会失败,而 `REPLACE INTO` 则会删除冲突的旧行再插入新行。在处理需要确保唯一性的数据时,`REPLACE INTO` 是...
第二句:INSERT INTO [ToTable] ([fild_One],[fild_Two]) SELECT [fild_One], 8 FROM [FromTable] 以上两句都是将 [FromTable] 的数据插入到 [ToTable],但两句又有区别的: 第一句(SELECT INTO FROM)要求目标表...
insert into … select …:可将表1中的全部数据或者部分数据复制到表2中。 eg: 代码如下: insert into t2(id,name,pwd) select id,name,pwd from t1 注:t2必须存在。t1中查询的列名可不与t1列名相同。无 values ...
本文主要探讨了两种不同的插入数据的方法:`INSERT INTO...VALUES` 和 `INSERT INTO...SELECT`,并以MSSQL(Microsoft SQL Server)为例,分析它们在性能上的差异。 首先,`INSERT INTO...VALUES` 语句用于向表中...
总结来说,SQL Server提供了`SELECT INTO`和`INSERT INTO...SELECT`两种语句用于数据迁移。而"SelectInsertTable"这样的工具进一步简化了这一过程,使得生成和执行`INSERT`语句更为便捷。在进行数据同步或备份时,...
1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1 或者:Insert into Table2 select * from Table1 注意:(1)要求目标表Table2必须存在,并且...
但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。...
1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1 要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还...
SELECT语句,如 INSERT INTO # SELECT '0001','2004-4-5','2000','3000' INSERT INTO # SELECT '0002','2004-4-5','1000','5000' INSERT INTO # SELECT '0003','2005-6-7','1500','3000' INSERT INTO # ...
insert into(列名) select 列名 from 表名 where 条件 –不创建表,只复制表数据 select 列名 into 表名(这个表名是不存在的) from 表名 where 条件,–创建一张新表,只复制选择的列名字段数据 Insert是T-sql中...
总结来说,理解`SELECT INTO FROM`和`INSERT INTO SELECT`的区别是数据库管理的基础,它们提供了对数据操作的灵活性和多样性,使你能更有效地管理和维护数据库。在编写SQL语句时,一定要注意目标表的存在状态以及源...