首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择为DML命令

选择为DML命令
EN

Stack Overflow用户
提问于 2016-01-05 10:18:22
回答 2查看 1.5K关注 0票数 2

我知道一个事实,select是dml命令,因为

select * into new_table from old_table

在SQL服务器中,如何在oracle中编写等价的查询以显示select是dml操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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手册,有六种类型的语句:

  1. 数据定义语言(DDL)语句 管理密钥管理、更改(除ALTER和ALTER外)、分析、关联统计信息、审计、注释、创建、分离统计信息、删除、闪回、授予、NOAUDIT、清除、重命名、撤消、截断
  2. 数据操作语言(DML)语句 调用、删除、解释计划、插入、锁定表、合并、选择、更新
  3. 事务控制语句 提交,回滚,保存点,设置事务,设置约束
  4. 会话控制语句 更改会话,设置角色
  5. 系统控制语句 变更系统
  6. 嵌入式SQL语句 过程语言程序中的SQL语句。

如果您希望像我在这个程序中所做的那样,以编程的方式对SQL语句进行完全分类,那么“嵌入式SQL语句”就没有什么意义了,而且几乎没有人再使用它们了。在实践中,增加一个类别对于

  1. PL/SQL 语句在匿名块中运行。

虽然SQL和PL/SQL不是一回事,但实际上它们都可以被看作是语句的类型,因为它们都可以在相同的上下文中执行。特别是在12c中,PL/SQL和SQL可以相互嵌入。

票数 2
EN

Stack Overflow用户

发布于 2016-01-05 11:10:40

数据库操作可分为三种:

  1. 数据定义语言( DDL )它通常用于创建表、索引、视图等。
  2. DML (数据操纵语言)顾名思义,这些命令通常用于从现有表中插入、更新或删除数据。
  3. SQL (结构化查询语言)它主要用于查询表。
  4. 还有第四种,叫做DCL (数据控制语言)。它主要用于授予和撤消权限。

理论上,DDL、DML和DCL被认为是SQL的子集。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34609208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档