最近在研究oracle function 时发现select into from和insert into from,这样的语句,于是上网查阅资料学习了一下,

  原来两种表达式均可以达到复制整个表或表的一部分的功能,一般用于存储过程(procedure)和函数(function)中,但还是有一定区别,具体区别如下:

  

  1.insert into from

  

  insert into table1 (value1 ,value2,,,)select value1,value2,,, from table2

  

  注意:1)这里要求table1必须存在,

2)由于table1已经存在,我们也可以插入常量,即将后面的value中的某个字段换成常量

  

  2.select into from

  select value1,value2,,, into table2 from table1

  注意:1)此时要求table2必须不存在,只有在插入时才创建table2,完成表复制功能

  3.对于在pl\sql 中进行test时,会发生“ORA-00905:缺失关键字”错误,而有一些朋友给出的解释是说select into from 是ms-sql( microsoft sql server)的语句,这句活不完全准确,其实原因是PL/Sql与T-SQL的区别。

  T-SQL(Transact Structured Query Language 它是ANSI和ISO SQL 标准的Microsoft SQL Server方言或扩展,中文理解为:SQL SERVER专用标准结构化查询语言增强版)中该句正常,

  但PL/SQL(Procedural Language/SQL,是Oracle数据库对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一样

4.---------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 from和insert into from的更多相关文章

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

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

  2. select into from和insert into select from两种表复制语句区别

    select into from和insert into select from两种表复制语句都是将源表source_table的记录插入到目标表target_table,但两句又有区别. 第一句(s ...

  3. select into from 和 insert into select 的用法和区别(转)

    转自:http://www.studyofnet.com/news/182.html select into from 和 insert into select都是用来复制表,两者的主要区别为: se ...

  4. 表复制语句select into from 与 insert into select 区别鉴赏

    select into from 与 insert into select 区别鉴赏 1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,fi ...

  5. select into from 和 insert into select 的用法

    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句 Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) valu ...

  6. select into from 和 insert into select

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

  7. select into from 与 insert into select 区别

    1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Tab ...

  8. 【oracle】select into from 和 insert into select 的用法和区别

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

  9. SELECT INTO FROM 与 INSERT INTO SELECT区别鉴赏

    .INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Tabl ...

随机推荐

  1. C#学习笔记(一):C#简介

    计算机语言计算机语言是指用于人与计算机之间通讯的语言机器码——汇编语言——高级语言(面向过程(线性).面向对象(类).面向组件(Unity)) 一.计算机语言发展趋势1.简单:代码生成逻辑2.面向人类 ...

  2. JS进阶系列之内存空间

    也许很多人像我一样,觉得JS有垃圾回收机制,内存就可以不管了,以至于在全局作用域下定义了很多变量,自以为JS会自动回收,直到最近,看了阮一峰老师,关于javascript内存泄漏的文章时,才发现自己写 ...

  3. Mysql tinyint长度为1时在java中被转化成boolean型

    MySql 中的tinyint(1)的使用 在MySql中如何定义像Java中类型的Boolean类型数据..其实,mysql中 是没有直接定义成Boolean这种数据类型. 它只能定义成 tinyi ...

  4. 设置网站URL启动

    当新建一个MVC WEB程序 当你打开一个视图按F5运行 这时候并且不能政策运行会出现与个错误 无法找到资源. 这时候站点的默认设置是 把这个个默认设置更改成 红色框框的地方为修改点 你以为这样就完了 ...

  5. Qt5_pro_01

    1. QT += core gui \ sql \ #ZC: 这个对应 #include <SQL/???> (如<QtSql/QSqlDatabase><QtSql/Q ...

  6. 《剑指offer》第十八题(在O(1)时间删除链表结点)

    // 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该 // 结点. #include <iostream> ...

  7. Paket介绍

    在国外.NET社区有一个很火的话题是Packet(https://fsprojects.github.io/Paket/index.html ),它本质上是Nuget 之外的另一种方式管理.NET项目 ...

  8. 一个简单可参考的API网关架构设计

    网关一词较早出现在网络设备里面,比如两个相互独立的局域网段之间通过路由器或者桥接设备进行通信, 这中间的路由或者桥接设备我们称之为网关. 相应的 API 网关将各系统对外暴露的服务聚合起来,所有要调用 ...

  9. 雷林鹏分享:Ruby 命令行选项

    Ruby 命令行选项 Ruby 一般是从命令行运行,方式如下: $ ruby [ options ] [.] [ programfile ] [ arguments ... ] 解释器可以通过下列选项 ...

  10. 52 53django

    一.需要弄清楚的几个关键点: KEY: 1 Django项目无论多大,只是一个应用程序 2 地址栏发请求默认是GET请求 form表单可以发送get请求,也可以发送post请求 3 浏览器接受的响应体 ...