select into 和 insert into select 数据备份

今日来大致的牵线一下sql中的select into 和 insert into select
数据备份的用法 代码如下复制代码 select * into destTbl from srcTblinsert
into destTbl(fld1, fld2) select fld1, 5 from srcTbl

上述两句都以将 srcTbl 的数目插入到 destTbl,但两句又有分其他:

我们平时会遇上须要表复制的情形,如将二个table1的数量的一些字段复制到table第22中学,可能将全部table1复制到table第22中学,那时大家将要动用SELECT
INTO 和 INSERT INTO SELECT 表复制语句了。

率先句必要指标表不设有,因为在插入时会自动创立。 SELECT INTO 语句SELECT
INTO 语句从一个表中选取数据,然后把数据插入另八个表中。

1.INSERT INTO SELECT语句

SELECT INTO 语句常用于创造表的备份复件恐怕用于对记录进行存档。

言辞方式为:Insert into Table2(田野(fieldState of Qatar1,田野(field卡塔尔国2,…卡塔尔(قطر‎ select
value1,value2,… from Table1

SQL SELECT INTO 语法您能够把具备的列插入新表:

或者:Insert into Table2 select  *  from Table1

代码如下复制代码

注意:(1)须要指标表Table2必需存在,並且字段田野同志,田野(field卡塔尔2…也必须存在

SELECT *INTO new_table_name [IN externaldatabase] FROM
old_tablename或然只把希望的列插入新表:

(2)注意Table2的主键约束,如若Table2有主键并且不为空,则 田野先生1,
田野先生2…中必得归纳主键

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

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

第二句须求目的表存在,由于目的表已经存在,所以大家除了插入源表的字段外,还能插入常量,如例中的:5。

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

SQL SELECT INTO 实例 – 制作备份复件上边包车型大巴例证会创设 Persons
表的备份复件:

出于指标表Table2已经存在,所以大家除了插入源表Table1的字段外,还足以插入常量。示譬如下:

代码如下复制代码 SELECT *INTO Persons_backupFROM Persons

+ expand sourceview plaincopy to clipboardprint

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

   –1.创立测验表  

代码如下复制代码 SELECT *INTO Persons IN ‘Backup.mdb’FROM Persons

   create TABLE Table1  

如果我们盼望拷贝有个别域,能够在 SELECT 语句后列出那些域:

   (  

代码如下复制代码 SELECT LastName,FirstNameINTO Persons_backupFROM
Persons

       a varchar(10),  

SQL SELECT INTO 实例 – 带有 WHERE 子句大家也足以增加 WHERE 子句。

       b varchar(10),  

上面包车型地铁例证通过从 Persons 表中领取居住在 Beijing
的人的音讯,创造了八个暗含八个列的名称为 Persons_backup 的表:

       c varchar(10)

代码如下复制代码 SELECT LastName,FirstnameINTO Persons_backupFROM
PersonsWHERE City=’Beijing’

   )

SQL SELECT INTO 实例 –
被连接的表从一个之上的表中采用数据也是能够变成的。

   create TABLE Table2  

上边包车型客车例证会成立多个名称为 Persons_Order_Backup 的新表,当中积存了从
Persons 和 Orders 三个表中得到的新闻:

   (  

代码如下复制代码

       a varchar(10),  

SELECT Persons.LastName,Orders.OrderNoINTO Persons_Order_BackupFROM
PersonsINNER JOIN OrdersON Persons.Id_P=Orders.Id_P

       c varchar(10),  

       d int

   )

   –2.成立测试数据  

   Insert into Table1 values(‘赵’,’asds’,’90’)  

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

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

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

   select * from Table2

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

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

或:Insert into Table2 select * from Table1

–4.出示更新后的结果  

select * from Table2  

   –5.删除测量试验表  

   drop TABLE Table1  

   drop TABLE Table2

2.SELECT INTO FROM语句

讲话格局为:SELECT vale1, value2 into Table2 from Table1

务求目的表Table2子虚乌有,因为在插入时会自动创设表Table2,并将Table1中钦命字段数据复制到Table第22中学。示比如下:

view plaincopy to clipboardprint?

   –1.制造测验表  

   create TABLE Table1  

   (  

       a varchar(10),  

       b varchar(10),  

       c varchar(10)

   )

   –2.创设测试数据  

   Insert into Table1 values(‘赵’,’asds’,’90’)  

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

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

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

   –3.SELECT INTO FROM语句成立表Table2并复制数据  

   select a,c INTO Table2 from Table1  

   –4.展现更新后的结果  

   select * from Table2  

   –5.删除测量检验表  

   drop TABLE Table1  

   drop TABLE Table2

小心:假若在sql/plus或许PL/SQL实行这条语句,会报”ORA-00905:缺点和失误关键字”错误,原因是PL/Sql与T-SQL的分裂。

T-SQL中该句符合规律,但PL/SQL中解释是:

select..into is part of PL/SQL language which means you have to use it
inside a PL/SQL block. You can not use it in a SQL statement outside of
PL/SQL.

即无法独立作为一条sql语句试行,平日在PL/SQL程序块(blockState of Qatar中央银行使。

倘使想在PL/SQL中贯彻该效能,可利用Create table newTable as select *
from …:

如: create table NewTable as select * from ATable;

NewTable 除了未有键,其余的和ATable相通

———SQL SELECT INTO语法介绍

SQL SELECT INTO 语句可用于创设表的备份复件。

SELECT INTO 语句

SELECT INTO 语句从三个表中甄选数据,然后把多少插入另贰个表中。

SELECT INTO 语句常用于创立表的备份复件也许用于对记录实行存档。

SQL SELECT INTO 语法

您能够把全部的列插入新表:

SELECT * INTO new_table_name [IN externaldatabase] FROM
old_tablename

要么只把希望的列插入新表:

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

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

上边包车型客车事例会制作 “Persons” 表的备份复件:

SELECT * INTO Persons_backup FROM Persons

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

SELECT * INTO Persons IN ‘Backup.mdb’ FROM Persons

假使我们期望拷贝某个域,可以在 SELECT 语句后列出那些域:

SELECT LastName,FirstName

INTO Persons_backup

FROM Persons

SQL SELECT INTO 实例 – 带有 WHERE 子句

我们也得以加上 WHERE 子句。

下边包车型地铁例子通过从 “Persons” 表中领到居住在 “Beijing”
的人的新闻,创造了二个包罗多个列的名称为 “Persons_backup” 的表:

SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE
City=’Beijing’

SQL SELECT INTO 实例 – 被接连的表

从二个上述的表中选取数据也是能够产生的。

上边包车型大巴事例会创设三个名叫 “Persons_Order_Backup” 的新表,个中累积了从
Persons 和 Orders 多少个表中拿到的音信:

SELECT Persons.LastName,Orders.OrderNo

INTO Persons_Order_Backup

FROM Persons

INNER JOIN Orders

ON Persons.Id_P=Orders.Id_P

发表评论

电子邮件地址不会被公开。 必填项已用*标注