问题:oracle select into;结果:oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
(2011-07-08 08:59:47)
我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。
1.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)
由于目标表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
--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中指定字段数据复制到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
问题:oracle select into;结果:oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解的更多相关文章
- oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INT ...
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)
https://www.cnblogs.com/mq0036/p/4155136.html 我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个tabl ...
- oracle数据库【表复制】insert into select from跟create table as select * from 两种表复制语句区别
create table as select * from和insert into select from两种表复制语句区别 create table targer_table as select ...
- select into from和insert into select from两种表复制语句区别
select into from和insert into select from两种表复制语句都是将源表source_table的记录插入到目标表target_table,但两句又有区别. 第一句(s ...
- PostgreSQL SELECT INTO和INSERT INTO SELECT 两种表复制语句
SELECT INTO和INSERT INTO SELECT两种表复制语句都可以用来复制表与表之间的数据,但是它们之间也有区别. 建表语句: bas_custom_rel表 CREATE TABLE ...
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句.txt
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...
- SQL Server 中SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Tab ...
- SELECT INTO (insert into) 和 INSERT INTO SELECT (insert into select) 两种表复制语句
1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from T ...
随机推荐
- Codeforces Round #275 (Div. 2) D
题意 : 一个数组 给出m个限制条件 l r z 代表从l 一直 & 到 r 为 z 问能否构造出这种数组 如果可以 构造出来 因为 n m 都是1e5 而l r 可能输入进去就超时了 所以 ...
- rsync 实现断点续传
Linux 主机之间即时传送文件,scp命令大家都很熟悉但当要传送的文件较大,过程中如果网络中断了,就比较悲剧了.这时候可以考虑使用rsync命令替代scp,实现断点续传文件. 试验:rsync使用 ...
- 解决:AttributeError: module 'requests' has no attribute 'get'”
今天学习Requests库,当用pip install requests安装后,写了一段代码报错:AttributeError: module 'requests' has no attribute ...
- 一些蠕虫传播研究的文章——TODO
www.arocmag.com/getarticle/?aid=4e02d91c19b0cced Internet 蠕虫防范技术研究http://www.arocmag.com/article/100 ...
- Spring_总结_03_装配Bean(一)_自动装配
一.前言 本文承接上一节:Spring_总结_02_依赖注入 在上一节我们了解到依赖注入的实质就是装配. 这一节我们来学习下装配Bean的相关知识. 二.Bean的装配机制 1.三种装配机制 Spri ...
- derby_学习_00_资源帖
一.精选资料 二.参考资料
- jsp中向浏览器页面输出的方式总结
jsp中百分号内输出 不需要有JavaScript标签 1.因为jsp就是包含在html 里面,所以什么都不干时,就是在body里面输出html内容 2.百分号 内是JavaScript代码?java ...
- hdu 1671 Phone List (Trie树)
简单的字典树应用,在建树的时候判断就行了. 需要注意的语法: 在使用malloc和free来处理动态内存的时候,仅仅是释放了这个对象所占的内存,而不会调用这个对象的析构函数:使用new和delete就 ...
- pthread_cond_wait() 前使用 while 讲解
pthread_cond_wait() 前使用 while 讲解 -- : LINUX环境下多线程编程肯定会遇到需要条件变量的情况,此时必然要使用pthread_cond_wait()函数.但这个函数 ...
- centos下wget: command not found的解决方法
今天给服务器安装新LNMP环境时,wget 时提示 -bash:wget command not found,很明显没有安装wget软件包.一般linux最小化安装时,wget不会默认被安装,这里是C ...