选择DML命令

时间:2016-01-05 10:18:23

标签: sql oracle

由于

,我知道select是dml命令

select * into new_table from old_table

在SQL Server中如何在oracle中编写等效查询以显示select是一个dml操作。

2 个答案:

答案 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,有六种类型的陈述:

  1. 数据定义语言(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
    
  2. 数据操作语言(DML)语句

    CALL,DELETE,EXPLAIN PLAN,INSERT,LOCK TABLE,MERGE,SELECT,UPDATE
    
  3. 交易控制声明

    COMMIT,ROLLBACK,SAVEPOINT,SET TRANSACTION,SET CONSTRAINT
    
  4. 会话控制语句

    ALTER SESSION,SET ROLE
    
  5. 系统控制声明

    ALTER SYSTEM
    
  6. 嵌入式SQL语句

    SQL statements inside a procedural language program.
    
  7. 如果您想以编程方式对SQL语句进行完全分类,就像我在this program中所做的那样,  那么"嵌入式SQL语句"没有多大意义,几乎没有人再使用它们了。在实践中,为

    添加一个额外的类别会很有用
    1. PL / SQL

      Statements run through anonymous blocks.
      
    2. 虽然SQL和PL / SQL不是同一个东西,但实际上它们都可以被视为语句类型,因为它们都可以在相同的上下文中执行。特别是对于12c,PL / SQL和SQL可以相互嵌入。

答案 1 :(得分:0)

数据库操作可分为三类:

  1. DDL(数据定义语言)。它通常用于创建表,索引,视图等。
  2. DML(数据操作语言)。顾名思义,命令通常用于插入,更新或删除现有表中的数据。
  3. SQL(结构化查询语言)。它主要用于查询表
  4. 还有第四个称为DCL(数据控制语言)。它主要是授予和撤销权限。
  5. 理论上,DDL,DML和DCL也被认为是SQL的子集。

    如果旧表和新表已存在且结构相同,则可以使用insert into new_table select * from old_table

    如果该表不存在,您可以使用CTAS - create table new_table as select * from old_table