我知道一个事实,select是dml命令,因为
select * into new_table from old_table
在SQL服务器中,如何在oracle中编写等价的查询以显示select是dml操作。
发布于 2016-01-06 00:29:54
SELECT是根据Oracle SQL语言引用的数据操作语言(DML)语句。
SELECT语句是DML语句的一种有限形式,因为它只能访问数据库中的数据。它不能操作存储在数据库中的数据,尽管它可以在返回查询结果之前对访问的数据进行操作。
口语化地将SELECT与DML分开是很常见的,因为在实践中,它们通常做不同的事情;SELECT读取数据,DML写入数据。但是,在一些重要的情况下,SELECT语句可以像DML那样工作:
SELECT some_function() FROM DUAL;此SELECT调用可能更改数据的函数。这通常是个坏主意,但是如果函数是用PRAGMA AUTONOMOUS TRANSACTION;创建的,这是可能的。SELECT * FROM TABLE FOR UPDATE;此SELECT锁定表中的行并启动事务。它不会改变任何数据,但它肯定会影响其他试图修改数据的进程。另外,根据Oracle手册,有六种类型的语句:
如果您希望像我在这个程序中所做的那样,以编程的方式对SQL语句进行完全分类,那么“嵌入式SQL语句”就没有什么意义了,而且几乎没有人再使用它们了。在实践中,增加一个类别对于
虽然SQL和PL/SQL不是一回事,但实际上它们都可以被看作是语句的类型,因为它们都可以在相同的上下文中执行。特别是在12c中,PL/SQL和SQL可以相互嵌入。
发布于 2016-01-05 11:10:40
数据库操作可分为三种:
理论上,DDL、DML和DCL被认为是SQL的子集。
如果旧表和新表已经存在,且结构相同,则可以使用insert into new_table select * from old_table。
如果表不存在,则可以使用CTAS create table new_table as select * from old_table。
https://stackoverflow.com/questions/34609208
复制相似问题