最近在研究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. Unity3D学习笔记(二十五):文件操作

    文件是什么? 存储在硬盘上的最后的节点. 文件夹是什么? 文件的上级单位称为文件夹. 文件夹的基本结构? 文件夹是层级化结构的,对于同级的文件夹不可以重名,父文件夹和子文件夹可以同名> IO:I ...

  2. 解决 mininet gave up after 3 retries 问题

    解决 mininet gave up after 3 retries 问题 在通过mn启动mininet的时候遇到了如下问题: *** Creating network *** Adding cont ...

  3. 【Coursera】Security Introduction -Ninth Week(1)

    前言 Coursera 的 Internet History,Technology,and Security 进入最后一周的学习了,在这最后一周内,需要进行的内容是 public-key 公钥系统的讲 ...

  4. HDU 3046 Pleasant sheep and big wolf(最小割最大流+Dinic)

    http://acm.hdu.edu.cn/showproblem.php?pid=3046 题意: 给出矩阵地图和羊和狼的位置,求至少需要建多少栅栏,使得狼不能到达羊. 思路:狼和羊不能到达,最小割 ...

  5. vuex到底是个啥

    vuex总结 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的 ...

  6. hdu 5525 Product 数论算贡献

    Product Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Proble ...

  7. python 时间元组转可视化时间

    >>> import time >>> time.asctime() 'Fri Jan 4 11:17:20 2019' >>> time.asc ...

  8. c++ 容器元素填充(generate)

    #include <iostream> // cout #include <algorithm> // generate #include <vector> // ...

  9. [ios]关于ios开发图片尺寸的建议

    1.以后的应用程序,都使用AutoLayout, 不要再用绝对定位. 2.使用类似网页的方式来设计界面. 3.设计师好,程序员也好,尽量使用点这个单位进行思考,而不要使用像素.比如,你需要做44 x ...

  10. 图片保存到数据库以及C#读取图片

    图片保存到数据库,如果是sqlserver就是Image类型,如果保存到Oracle就是blob类型,在c#中相对应的就是byte[]类型,同时只需要对读出的数据强制转换就行(byte[])objec ...