(2)金沙js娱乐场官方网站:注意Table2的主键约束,要求目标表存在

insert into select from,要求目标表存在,(2)注意Table2的主键约束,field2…中必须包括主键

金沙js娱乐场官方网站 1

SELECT Persons.LastName,Orders.OrderNo

select into from 和 insert into
select都是用来复制表,两者的主要区别为: select into from
要求目标表不存在,因为在插入时会自动创建。insert into select from
要求目标表存在

 
 
下面分别介绍两者语法
 
 
INSERT INTO SELECT语句
 
 
语句形式为
 
Insert into Table2(field1,field2,…) select value1,value2,… from
Table1
 
 
注意地方
 
(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在
 
(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1,
field2…中必须包括主键
 
(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:
  Insert into Table2(field1,field2,…) values (select value1,value2,…
from Table1)
 
(4)由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
 
 
完整实例:
 
 
SQL 代码   复制
金沙js娱乐场官方网站 2金沙js娱乐场官方网站 3

IN 子句可用于向另一个数据库中拷贝表:

 

–3.INSERT INTO SELECT语句复制表数据部分列和常值

     b varchar(10),

   Insert into Table1 values(‘钱’,’asds’,’100′)  

  --2.创建测试数据

(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:

  GO

语句形式为:Insert into Table2(field1,field2,…) select
value1,value2,… from Table1

金沙js娱乐场官方网站 4

       b varchar(10),  

金沙js娱乐场官方网站 5

   drop TABLE Table2

金沙js娱乐场官方网站 6

   –2.创建测试数据  

金沙js娱乐场官方网站 7

注意:(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在

  select * from Table2

   create TABLE Table1  

  --1.创建测试表

ON Persons.Id_P=Orders.Id_P

金沙js娱乐场官方网站 8

   (  

金沙js娱乐场官方网站 9

   Insert into Table1 values(‘李’,’asds’,null)  

金沙js娱乐场官方网站 10

   –3.SELECT INTO FROM语句创建表Table2并复制数据  

  --5.删除测试表

       a varchar(10),  

  Insert into Table1 values('赵','asds','90')

       a varchar(10),  

     (

Insert into Table2(a, c, d) select a,c,5 from Table1

  (

   Insert into Table1 values(‘钱’,’asds’,’100′)  

  GO

   select * from Table2  

金沙js娱乐场官方网站 11

NewTable 除了没有键,其他的和ATable一样

  ) ON [PRIMARY]

SQL SELECT INTO 实例 – 被连接的表

       a ASC

SELECT column_name(s) INTO new_table_name [IN externaldatabase]
FROM old_tablename

金沙js娱乐场官方网站 12

   –4.显示更新后的结果  

     a varchar(10),

要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。示例如下:

金沙js娱乐场官方网站 13

FROM Persons

  --5.删除测试表

   drop TABLE Table1  

     b varchar(10),

SELECT LastName,FirstName

金沙js娱乐场官方网站 14金沙js娱乐场官方网站 15金沙js娱乐场官方网站 16

我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT
INTO 和 INSERT INTO SELECT 表复制语句了。

     (

如果想在PL/SQL中实现该功能,可使用Create table newTable as select *
from …:

     c varchar(10),

由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:

金沙js娱乐场官方网站 17

下面的例子通过从 “Persons” 表中提取居住在 “Beijing”
的人的信息,创建了一个带有两个列的名为 “Persons_backup” 的表:

  --3.INSERT INTO SELECT语句复制表数据

   create TABLE Table1  

 

   )

  GO

   select * from Table2

  GO

   –5.删除测试表  

金沙js娱乐场官方网站 18

———SQL SELECT INTO语法介绍

金沙js娱乐场官方网站 19

或者只把希望的列插入新表:

  ) ON [PRIMARY]

SELECT * INTO Persons_backup FROM Persons

金沙js娱乐场官方网站 20

(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1,
field2…中必须包括主键

金沙js娱乐场官方网站 21金沙js娱乐场官方网站 22金沙js娱乐场官方网站 23

+ expand sourceview plaincopy to clipboardprint

     )

下面的例子会制作 “Persons” 表的备份复件:

   select * from Table2

SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

金沙js娱乐场官方网站 24

–4.显示更新后的结果  

金沙js娱乐场官方网站 25

1.INSERT INTO SELECT语句

  select * from Table2

   –5.删除测试表  

金沙js娱乐场官方网站 26金沙js娱乐场官方网站 27金沙js娱乐场官方网站 28

   create TABLE Table2  

   select a,c INTO Table2 from Table1

   (  

金沙js娱乐场官方网站 29

   )

金沙js娱乐场官方网站 30

您可以把所有的列插入新表:

金沙js娱乐场官方网站 31

       a varchar(10),  

金沙js娱乐场官方网站 32

INNER JOIN Orders

金沙js娱乐场官方网站 33

   Insert into Table1 values(‘孙’,’asds’,’80’)  

金沙js娱乐场官方网站 34

   )

  Insert into Table1 values('孙','asds','80')

   (  

金沙js娱乐场官方网站 35

FROM Persons

  ) ON [PRIMARY]

select * from Table2  

SELECT INTO FROM语句

SQL SELECT INTO 实例 – 制作备份复件

  GO

  Insert into Table1 values('孙','asds','80')

   Insert into Table1 values(‘孙’,’asds’,’80’)  

金沙js娱乐场官方网站 36金沙js娱乐场官方网站 37金沙js娱乐场官方网站 38

Insert into Table2(field1,field2,…) values (select value1,value2,…
from Table1)

  GO

       c varchar(10),  

     )

       c varchar(10)

金沙js娱乐场官方网站 39

SQL SELECT INTO 语法

金沙js娱乐场官方网站 40

T-SQL中该句正常,但PL/SQL中解释是:

金沙js娱乐场官方网站 41

SELECT INTO 语句

金沙js娱乐场官方网站 42

   drop TABLE Table1