`
y806839048
  • 浏览: 1120847 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)

阅读更多

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

1.INSERT INTO SELECT语句

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

或者:Insert into Table2 select  *  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)

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

+ expand sourceview plaincopy to clipboardprint


    --1.创建测试表  
    create TABLE Table1  
    (  
        a varchar(10),  
        b varchar(10),  
        c varchar(10)
    )
    create TABLE Table2  
    (  
        a varchar(10),  
        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语句----可以直接into变量  @定义即可 不必declare

语句形式为:SELECT vale1, value2 into Table2 from Table1

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

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程序块(block)中使用。

 

如果想在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

分享到:
评论

相关推荐

    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)

    在SQL中,表复制是常见的数据操作,主要通过两种语句来实现:`SELECT INTO` 和 `INSERT INTO SELECT`。这两种语句在SQL数据库和Oracle数据库中略有不同,下面将详细解析它们的工作原理和使用场景。 1. `INSERT INTO...

    oracle 多表做update insert语句.docx

    Oracle 多表 Update 语句详解 在 Oracle 中,Update 语句是数据库操作中的重要组成部分。 Update 语句可以对数据库中的数据进行修改,更新和插入。今天,我们将讨论 Oracle 中的 Update 语句,包括 Update 语句的...

    oracle常用sql语句

    ### Oracle常用SQL语句知识点详解 #### 一、概述 Oracle是全球领先的数据库管理系统之一,在企业级应用领域占据着重要地位。SQL(Structured Query Language)是用于管理关系型数据库的标准语言,也是与Oracle...

    Oracle PL-SQL编程详解.pdf

    PL/SQL还支持多种SQL语句,如DML(数据操纵语言)的INSERT、UPDATE、DELETE、SELECT INTO,以及事务控制语句COMMIT、ROLLBACK和SAVEPOINT。不过,DDL(数据定义语言)如CREATE TABLE等需要以动态SQL的方式在PL/SQL中...

    sql2008与oracle11gR1数据库交互详解

    总之,SQL Server 2008与Oracle 11g R1的交互涉及到多个层次的配置和操作,包括数据库链接服务器的建立、ODBC数据源的设置以及数据导入的具体实施。正确理解和掌握这些步骤,将有助于实现两个数据库系统的有效协同...

    Oracle数据库用法详解

    Oracle数据库是一种广泛应用于企业级应用的关系型数据库管理系统(RDBMS),它提供了高效的数据存储、管理和处理能力。本文将详细介绍Oracle数据库的基本概念、SQL语言以及DDL和DML操作。 首先,数据库是存储和管理...

    Oracle sql 语句集锦

    ### SELECT语句详解 `SELECT`语句是SQL中最常用也是最强大的语句之一,用于从一个或多个表中检索数据。基本语法为: ```sql SELECT column_name(s) FROM table_name WHERE condition(s) GROUP BY column_name(s) ...

    详解Oracle数据库中DUAL表的使用

    Oracle 数据库中 DUAL 表的使用 DUAL 表是 Oracle 数据库中一个特殊的表,它是任何用户都可以读取的公共表。DUAL 表的用途非常广泛,常用在没有目标表的 Select 语句块中。下面都是 DUAL 表的一些常见使用场景: ...

    数据库基本概念 ,常用数据库,sql server数据库,Access数据库,sql语句,数据库连接,数据库分页显示

    - **Oracle**:作为一款大型企业级数据库,Oracle被广泛用于需要高可用性和高性能的关键业务应用中。 ### Access 数据库详解 #### 1. 数据类型 - **文本**:用于存储文本信息,最长可达255个字符。 - **数字**:...

    sql语句详解(包含实例)

    下面将根据标题和描述,深入解析SQL中的SELECT、UPDATE、DELETE和INSERT这四种基本语句,并结合实例进行说明。 **1. SELECT语句** SELECT语句是SQL中最常用的,用于从数据库中检索数据。基础用法如下: ```sql ...

    Sql 语句详解

    7. SQL INSERT INTO 语句 11 8. SQL UPDATE 语句 12 9. SQL DELETE 语句 13 10. SQL TOP 子句 13 11. SQL LIKE 操作符 15 12. SQL 通配符 16 13. SQL IN 操作符 18 14. SQL BETWEEN 操作符 18 15. SQL Alias(别名)...

    oracle数据库教案

    Oracle数据库系统中存在多种类型的用户,每种用户具有不同的权限和职责: - **超级管理员**:`sys/change_on_install`,拥有最高的权限,能够执行所有数据库操作,包括但不限于数据库的启动、关闭以及对数据库架构...

    oracle数据库教案03

    ### Oracle数据库教案03知识点详解 #### 3.1 表的创建及管理 ##### 3.1.1 常用的数据字段 在Oracle数据库中,每张表由多个字段构成,每个字段都有特定的数据类型。以下是Oracle数据库中常用的几种数据类型: 1. ...

    SQL数据库操作常用语句

    ### SQL数据库操作常用语句详解 #### 一、SQL基础知识概览 SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它不仅被广泛应用于各种数据库管理系统(DBMS),如MySQL、...

    oracle数据库的功能

    ### Oracle数据库功能详解 #### 一、SQL语言基础 **SQL**(Structured Query Language,结构化查询语言)是用于管理关系数据库的标准语言。SQL语言主要包括以下几个方面: 1. **DDL (Data Definition Language)**...

    非常好的sql语句入门教程

    - **SELECT语句**:这是SQL中最常用的语句之一,主要用于从数据库中检索数据。 - **基本语法**:`SELECT column_name FROM table_name;` - **示例**:`SELECT store_name FROM Store_Information;` 这条语句用于从...

    Python使用cx_Oracle模块操作Oracle数据库详解

    这里的`ORACLE_SID`和`SERVICE_NAME`是Oracle数据库中的两个关键概念,它们用于识别和访问数据库实例。`ORACLE_SID`通常代表数据库实例的标识,而`SERVICE_NAME`则用于网络服务,特别是在集群或分布式环境下,外部...

Global site tag (gtag.js) - Google Analytics