oracle 中select into是什么意思

把一个表里面的内容复制到另一个吗 还是别的 是不是还要先创建一个表啊
create table aaa as select * from bbb 这样的效果 用select into 能做到么?

这是一个复制表数据的操作。

创建aaa表,这里没有定义aaa表的字段以及类型,而是用select * from bbb,这就是把bbb里面所有的字段包含类型以及数据都复制到aaa中去。那么就创建了一张和bbb表一样的aaa表。包括数据等都一样。只是不包含bbb表中的主键以及约束等。

这个地方是不能使用select into来完成的。select into 是SQLSERVER的语法:同样的效果select * into aaa from bbb。



扩展资料:


从参与复制的节点间的关系分类

1、主从复制

复制中只允许从源数据库(即主数据库)向其他数据库(从数据库)复制对象,复制对象存放在从数据库站点中。主从复制是最基本的一种结构。

在这种结构中,定义一个主节点,其源数据称为主节点数据(或主拷贝) ;定义1到n个复制节点,其从主节点复制过来的数据称为复制点数据(或副拷贝) 。数据更新操作只能在主拷贝上进行,然后复制给其它副拷贝。

2、对等复制

所有副本在任何节点都可以被修改,并且修改可以发送给其他副本,即所有站点的地位、作用是等同的,没有主从关系。

3、级联式复制

主从结构的一个扩展,它也是由一个主拷贝和若干个副拷贝组成。不同于主从结构的是它允许每个从属副拷贝(从属站点)具有复制的能力,即一个从属副拷贝可以把接收到的复制数据再传给下一个从属副拷贝。例如,在Oracle中一个快照站点也可以作为主站点。

参考资料:百度百科-复制数据库

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-10

这是一个复制表数据的操作。

创建aaa表,这里没有定义aaa表的字段以及类型,而是用select * from bbb,这就是把bbb里面所有的字段包含类型以及数据都复制到aaa中去。那么就创建了一张和bbb表一样的aaa表。包括数据等都一样。只是不包含bbb表中的主键以及约束等。

这个地方是不能使用select into来完成的。select into 是SQLSERVER的语法:同样的效果select * into aaa from bbb。

扩展资料:

发展趋势:

数据库技术正在以前所未有的速度发展和应用,同时也在推动数据库复制技术尤其是高级复制技术的进一步发展。在高级复制中,如何根据实际情况组合配置各种复制方案、尽量避免冲突、组合配置复制冲突解决方案是分布式数据库数据复制技术的难点。

一方面这需要实际的环境的支撑;

另一方面需要各种复制方案和冲突解决方案技术的发展;另外这些方案的组合搭配也包含了许多技术和技巧,而这些组合也需要不断在实践中检验。这都是今后复制数据库技术研究的重点。

随着技术的进步,特别是随着多主体高级数据复制技术的完善,数据库复制技术必将带给我们更多的安全和便利,为数据存储、传输提供更加方便、快捷的方法,为分布式数据库的应用提供更强大的功能。 

参考资料来源:百度百科-复制数据库



本回答被网友采纳
第2个回答  推荐于2017-09-24
这是一个复制表数据的操作。
创建aaa表,这里没有定义aaa表的字段以及类型,而是用select * from bbb,这就是把bbb里面所有的字段包含类型以及数据都复制到aaa中去。那么就创建了一张和bbb表一样的aaa表。包括数据等都一样。只是不包含bbb表中的主键以及约束等。
这个地方是不能使用select into来完成的。
select into 是SQLSERVER的语法:同样的效果select * into aaa from bbb追问

select * into aaa from bbb
我先创建了表 bbb 里面有数据
然后创建aaa 字段名字跟他一样
然后和 select * into aaa from bbb 报错 说缺失关键字....

追答

select * into aaa from bbb
这个是SQLSERVER的语法,不是ORACLE的语法。
您看我上边的回答,我说SQLSERVER那么写和您那个ORACLE是同样的效果。
如果创建好了AAA一样的字段等,可以这么写
insert into aaa select * from bbb

追问

我是在oracle存储过程中 发现有人用的 他是这么写的

IF ACTIONTIME IS NULL THEN
SELECT TRUNC(SYSDATE-1,'DD') INTO ACTIONTIME FROM DUAL;

这个是什么意思啊////

追答

这是给ACTIONTIME变量赋值,你在程序前边声明变量的地方找,肯定能找到ACTIONTIME这个日期型变量。
TRUNC(SYSDATE-1,'DD') 是获取昨天的日期,比如今天是27号,那么这个结果就是2011年4月26日。
IF ACTIONTIME IS NULL THEN
SELECT TRUNC(SYSDATE-1,'DD') INTO ACTIONTIME FROM DUAL;
END IF;------后边应该有这句吧?
这个的意思是,如果ACTIONTIME这个变量是空的话,那么就设置这个变量的值为昨天的日期。
就这么简单。如果这个变量非空,那么就不设置了,保留原值。

本回答被提问者采纳
第3个回答  推荐于2017-09-24
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的字段外,还可以插入常量。
2.SELECT INTO FROM语句
  语句形式为:SELECT vale1, value2 into Table2 from Table1
  要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。
第4个回答  2011-04-27
你如果表存在,就不用创建了直接select into就可以了
相似回答