由于
,我知道select是dml命令 select * into new_table from old_table
在SQL Server中如何在oracle中编写等效查询以显示select是一个dml操作。
答案 0 :(得分:1)
SELECT
是根据Oracle SQL Language Reference的数据操作语言(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 manual,有六种类型的陈述:
数据定义语言(DDL)语句
ADMINISTER KEY MANAGEMENT, ALTER (except ALTER SESSION and ALTER SYSTEM),
ANALYZE,ASSOCIATE STATISTICS,AUDIT,COMMENT,CREATE,DISASSOCIATE STATISTICS,
DROP,FLASHBACK,GRANT,NOAUDIT,PURGE,RENAME,REVOKE,TRUNCATE
数据操作语言(DML)语句
CALL,DELETE,EXPLAIN PLAN,INSERT,LOCK TABLE,MERGE,SELECT,UPDATE
交易控制声明
COMMIT,ROLLBACK,SAVEPOINT,SET TRANSACTION,SET CONSTRAINT
会话控制语句
ALTER SESSION,SET ROLE
系统控制声明
ALTER SYSTEM
嵌入式SQL语句
SQL statements inside a procedural language program.
如果您想以编程方式对SQL语句进行完全分类,就像我在this program中所做的那样, 那么"嵌入式SQL语句"没有多大意义,几乎没有人再使用它们了。在实践中,为
添加一个额外的类别会很有用PL / SQL
Statements run through anonymous blocks.
虽然SQL和PL / SQL不是同一个东西,但实际上它们都可以被视为语句类型,因为它们都可以在相同的上下文中执行。特别是对于12c,PL / SQL和SQL可以相互嵌入。
答案 1 :(得分:0)
数据库操作可分为三类:
理论上,DDL,DML和DCL也被认为是SQL的子集。
如果旧表和新表已存在且结构相同,则可以使用insert into new_table select * from old_table
。
如果该表不存在,您可以使用CTAS - create table new_table as select * from old_table