天道酬勤,学无止境

How can Delete be both a DDL and a DML statement

I am currently reading the offical Microsoft book 'Database Administration Fundamentals' in preparation to sitting it's exam.

I understand what DDL and DML are but Microsoft show DELETE as being both a DDL and DML statement. I have googled this but I cannot anything that confirms or denies this.

A good reference to this is the question: What is DDL and DML Which shows it as a DML. Below is the segments from the book:

Data Manipulation Language (DML) is the language element that allows you to use the core statements INSERT, UPDATE, DELETE, and MERGE to manipulate data in any SQL Server tables. Core DML statements include the following: • SELECT: Retrieves rows from the database and enables the selection of one or many rows or columns from one or many tables in SQL Server. • INSERT: Adds one or more new rows to a table or a view in SQL Server. • UPDATE: Changes existing data in one or more columns in a table or view. • DELETE: Removes rows from a table or view. • MERGE: Performs insert, update, or delete operations on a target table based on the results of a join with a source table.

the six main DDL statements are as follows: • USE: Changes the database context. • CREATE: Creates a SQL Server database object (table, view, or stored procedure). • ALTER: Changes an existing object. • DROP: Removes an object from the database. • TRUNCATE: Removes rows from a table and frees the space used by those rows. • DELETE: Remove rows from a table but does not free the space used by those rows removed.

Is the book out of date/ wrong. Can someone help shed light on this I see conflicting lists of what are the full DDL and DML statements.

评论

I agree with you, DELETE is DML. Moreover, I dare say, TRUNCATE should also be considered DML, since logically is equivalent to a DELETE statement. The fact that TRUNCATE is a DROP and CREATE is not enough in my opinion to justify assigning it to DDL, since the two together, carried out as one atomic operation, do not affect the schema of the database.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 什么是DDL和DML?(What are DDL and DML?)
    问题 我听说过有关数据库的DDL和DML术语,但我不明白它们是什么。 它们是什么,它们与SQL有何关系? 回答1 以下是从这里改编的MySQL什么是DDL,DML和DCL ?: DDL DDL是数据定义语言(Data Definition Language)的简称,它处理数据库模式和描述数据应如何驻留在数据库中。 创建-创建数据库及其对象(表,索引,视图,存储过程,函数和触发器)。 ALTER –更改现有数据库的结构。 DROP –从数据库中删除对象。 TRUNCATE –从表中删除所有记录; 同样,将删除为记录分配的所有空间。 注释–将注释添加到数据字典中。 重命名–重命名对象。 DML DML是处理数据操作的数据操作语言的简称,它包含最常见的SQL语句,例如SELECT,INSERT,UPDATE,DELETE等,它用于存储,修改,检索,删除和更新数据库中的数据。 SELECT –从一个或多个表中检索数据。 INSERT –将数据插入表中。 UPDATE –更新表中的现有数据。 删除–删除表中的所有记录。 合并– UPSERT操作(插入或更新) 调用–调用PL / SQL或Java子程序。 说明计划–解释数据访问路径。 LOCK TABLE –并发控制。 DCL DCL是数据控制语言的简称,它包含诸如GRANT之类的命令,并且主要涉及数据库系统的权限,权限和其他控件。
  • 【DB笔试面试448】Oracle中有哪几类触发器?
    ♣ 题目 部分Oracle中有哪几类触发器? ♣ 答案部分 Oracle数据库有4种触发器,分别是DML、替代触发器(INSTEAD OF触发器)、DDL和系统触发器,一般的应用系统中都使用到DML、替代触发器,而DDL和系统触发器是DBA管理数据库用得比较多。下图是Oracle触发器的分类图: 图 3-2 Oracle中触发器的分类触发器(TRIGGER)的组成主要有以下几部分:① 触发事件:即在何种情况下触发TRIGGER。例如:DML语句(INSERT、UPDATE和DELETE语句对表或视图执行数据处理操作)、DDL语句(如CREATE、ALTER、DROP语句等在数据库中创建、修改、删除模式对象)、数据库系统事件(如系统启动或退出、异常错误)、用户事件(如登录或退出数据库)。既可以是单个触发事件,也可以是多个触发事件的组合(只能使用OR逻辑组合,不能使用AND逻辑组合)。② 触发时间(触发时机):即该TRIGGER是在触发事件发生之前(BEFORE)还是之后(AFTER)触发,也就是触发事件和该TRIGGER的操作顺序。如果指定为BEFORE,那么表示在执行DML操作之前触发,以便防止某些错误操作发生或实现某些业务规则;如果指定为AFTER,那么表示在执行DML操作之后触发,以便记录该操作或做某些事后处理。③ 触发器本身:即该TRIGGER被触发之后的目的和意图
  • 常见dml、ddl语句使用nologging选项所生成的redo和undo大小比较
    说明:反映undo、redo占用量的统计指标是:undo change vector sizeredo size DDL/DML OperationsDirect-pathnologgingparallelnoarchivelog modearchivelog modeRedoUndoRedoUndoInsert into XXX select * from YYYNNN1907632462724018938620612980Alter table XXX nologging;Insert into XXX select * from YYY;NYN1908586063158418935548612912Insert /*+ append */ into XXX select * from YYYYNN266284048(only metadata)191456564048Alter table XXX nologging;Insert /*+ append */ into XXX select * from YYYYY N26868 4048(only metadata) 26836 4048 Create table XXX as select * from YYYYNN77624185001916222015468Create table XXX nologging as
  • 常见dml、ddl语句使用nologging选项所生成的redo和undo大小比较
    说明:反映undo、redo占用量的统计指标是:undo change vector sizeredo size DDL/DML OperationsDirect-pathnologgingparallelnoarchivelog modearchivelog modeRedoUndoRedoUndoInsert into XXX select * from YYYNNN1907632462724018938620612980Alter table XXX nologging;Insert into XXX select * from YYY;NYN1908586063158418935548612912Insert /*+ append */ into XXX select * from YYYYNN266284048(only metadata)191456564048Alter table XXX nologging;Insert /*+ append */ into XXX select * from YYYYY N26868 4048(only metadata) 26836 4048 Create table XXX as select * from YYYYNN77624185001916222015468Create table XXX nologging as
  • 常见dml、ddl语句使用nologging选项所生成的redo和undo大小比较
    说明:反映undo、redo占用量的统计指标是:undo change vector sizeredo size DDL/DML OperationsDirect-pathnologgingparallelnoarchivelog modearchivelog modeRedoUndoRedoUndoInsert into XXX select * from YYYNNN1907632462724018938620612980Alter table XXX nologging;Insert into XXX select * from YYY;NYN1908586063158418935548612912Insert /*+ append */ into XXX select * from YYYYNN266284048(only metadata)191456564048Alter table XXX nologging;Insert /*+ append */ into XXX select * from YYYYY N26868 4048(only metadata) 26836 4048 Create table XXX as select * from YYYYNN77624185001916222015468Create table XXX nologging as
  • DDL/DML/DCL区别
    DDLDDL的概述DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等,DDL对这些对象和属性的管理和定义具体表现在Create、Drop和Alter上。特别注意:DDL操作的“对象”的概念,”对象“包括对象及对象的属性,而且对象最小也比记录大个层次。以表举例:Create创建数据表,Alter可以更改该表的字段,Drop可以删除这个表,从这里我们可以看到,DDL所站的高度,他不会对具体的数据进行操作。DDL的主要语句(操作)Create语句:可以创建数据库和数据库的一些对象。Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等。Alter语句:修改数据表定义及属性。DDL的操作对象(表)表的概念表的创建就是用来存放数据用的,由于我们存放的数据的不通,所以我们需要定义些数据类型,以方便管理。表的属性主键属性:主键就是主键约束,只不过起的名字不同了,主键的起名偏向于虚的(就是描述描述这件事),主键约束起名偏向于实得(就是描述操作的实施),描述的都是同一件事,主键约束就是表中的一个属性;在一个表中最多可以有一个主键;一个主键可以定义在一个或多个字段;主键使一个或多个字段的值必须唯一且不为空,这样做可以通过该字段或该组字段中的值唯一的代表一条记录。唯一属性
  • SqlServer触发器的创建与使用
    这里写自定义目录标题 前言触发器的定义触发器的作用触发器的优点触发器的缺点触发器的分类DML触发器DDL触发器登录触发器 触发器的种类after触发器(之后触发)instead of 触发器Transact-SQL DDL 触发器CLR DDL 触发器 使用T-SQL语句来增删查改触发器创建触发器删除触发器查询触发器修改触发器 前言 上期我们介绍了SqlServer的视图和存储过程创建与使用,这期我们介绍一下触发器。 有需要回顾的可以电梯直达看一下: SqlServer视图的创建与使用 SqlServer存储过程的创建与使用 触发器的定义 触发器(Trigger)是针对某个表或视图所编写的特殊存储过程,它不能被显式地调用, 而是当该表或视图中的数据发生添加INSERT、更新UPDATE或删除DELETE等事件时自动被执行。 主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。 触发器的作用 触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂参照完整性和数据的一致性, 它能够对数据库中的相关表进行级联修改,提高比CHECK约束更复杂的的数据完整性,并自定义错误消息。 触发器的主要作用主要有以下几个方面: 强制数据库间的引用完整性;级联修改数据库中所有相关的表,自动触发其它与之相关的操作;跟踪变化,撤销或回滚违法操作,防止非法修改数据;返回自定义的错误消息
  • MySQL--基础知识点--18--DDL/DCL/DML/DPL/DQL/CCL
    SQL(Structure Query Language)结构化查询语言是数据库的核心语言,是高级的非过程化编程语言。它功能强大,效率高,简单易学易维护。SQL语言基本上独立于数据库本身、使用的机器、网络、操作系统,基于SQL的DBMS产品可以运行在从个人机、工作站到基于局域网、小型机和大型机的各种计算机系统上,具有良好的可移植性。 SQL结构化查询语言包含6个部分 1.数据查询语言(DQL: Data Query Language) 数据检索语句,用于从表中获取数据。通常最常用的为保留字SELECT,并且常与FROM子句、WHERE子句组成查询SQL查询语句。 语法: SELECT <字段名> FROM <表或视图名> WHERE <查询条件>; 2.数据操纵语言(DML:Data Manipulation Language) 主要用来对数据库的数据进行一些操作,常用的就是INSERT、UPDATE、DELETE。 语法: INSERT INTO <表名>(列1,列2,...) VALUES (值1,值2,...); UPDATE <表名> SET <列名>=新值 WHERE <列名>=某值; DELETE FROM <表名> WHERE <列名>=某值; 3.事务处理语言(DPL) 事务处理语句能确保被DML语句影响的表的所有行及时得以更新。DPL语句包括BEGIN
  • MySQL数据库——数据库CRUD之基本DDL操作数据库及DML操作表
    目录 1、SQL的概念 2、数据库的CRUD操作 2.1 DDL 操作数据库 2.1.1 创建数据库 2.1.2 查询数据库 2.1.3 修改数据库 2.1.4 删除数据库 2.1.5 使用数据库 2.2 DML 操作表 2.2.1 创建表 2.2.2 查询表 2.2.3 修改表 2.2.4 删除表 3 客户端图形化工具SQLYog 1、SQL的概念 SQL,Structured Query Language,结构化查询语言,其实就是定义了操作所有关系型数据库的规则。但是每种数据库厂商不一样,每一种数据库操作的方式存在不一样的地方,称为“方言”。 SQL的通用语法: 1) 每条语句可以单行或多行书写,以分号结尾;2) 可使用空格和缩进来增强语句的可读性;3) MySQL的数据库的SQL语句不区分大小写,关键字建议使用大写;4) 3种注释:单行注释 -- 注释内容 或 # 注释内容,多行注释:/* 注释 */ 2、数据库的CRUD操作 首先了解下SQL的分类,按照功能不同分为4种: 1) Data Definition Language (DDL 数据定义语言) ,用来定义数据库对象:数据库、表、列等,关键字:create、drop、alter等;2) Data Manipulation Language(DML 数据操作语言),用来对数据库中表的数据进行增删改,关键字:insert
  • 26.2 SQL介绍、通用语法、SQL语句分类、DDL 操作数据库和表、DML:表实现增删改数据、DQL:条件查询、模糊查询、排序、聚合函数、分组、分页、数据库备份与还原
    目录 1 SQL结构化查询语言 2 SQL通用语法 3 SQL 语句分类 4 DDL 操作数据库、表 4.1 DDL操作数据库(数据库CRUD) DDL操作数据库-- C(Create):创建数据库 DDL操作数据库-- R(Retrieve):查询数据库 DDL操作数据库-- U(Update):修改数据库 DDL操作数据库-- D(Delete):删除数据库 DDL操作数据库-- 使用数据库 4.2 DDL操作表(数据表CRUD) DDL操作表-- C(Create):创建表 DDL操作表-- R(Retrieve):查询表 DDL操作表-- U(Update):修改表 DDL操作表-- D(Delete):删除表 DDL操作表-- 复制表 5 DML:表实现增删改数据 5.1 DML-- 表添加数据 5.2 DML-- 表删除数据 5.3 DML-- 表修改数据 6 DQL:查询表中的记录 6.1 DQL-- 基础查询 6.2 DQL-- 查询结果去重:distinct 6.3 DQL-- 查询结果参与计算 6.4 DQL-- 条件查询 DQL-- 条件查询之比较运算符 DQL-- 条件查询之逻辑运算符 DQL-- 条件查询之in 关键字 DQL-- 条件查询之范围查询 DQL-- 条件查询之模糊查询:like 关键字 6.5 DQL-- 排序 order by 6.6
  • SELECT INTO 是什么语句,是 DDL 还是 DML?(what kind of statement is SELECT INTO,is it DDL or DML?)
    问题 SELECT INTO 子句有一个指定的备注,我不知道吗?SELECT INTO 是 DDL 还是 DML?如果解释我指定的备注,我将不胜感激? 谢谢 回答1 我会说 DML 作为 DDL 用于定义数据库结构,而 DML 用于管理数据。 Select into 与 insert into 没有什么不同,我相信。 回答2 两个都。 它是 DDL,因为它更改了目录。 它是 DML,因为 SELECT 是 DML。 回答3 维基百科关于数据操作语言的文章说(突出显示的是我的): SQL 数据更改语句是 SQL 数据语句的子集; 这也包含SELECT查询语句,严格来说它是 DQL 的一部分,而不是 DML。 但在通常的实践中,并没有做出这种区分,并且SELECT被广泛认为是 DML 的一部分,因此 DML 包含所有 SQL 数据语句,而不仅仅是 SQL 数据更改语句。 SELECT ... INTO ...形式结合了选择和操作,因此被严格视为 DML,因为它操作(即修改)数据。 回答4 我认为 Select into 是 Microsoft 从 Sql server 2008 开始提供的组合查询,用于将数据备份到表中,这里我们使用 DDL 来创建表和 DML 用于在 SELECT INTO 的定义级别插入。
  • SQL 触发器 简记
    触发器使用户定义在关系表上的一类由事件驱动的特殊过程,也是一种保证数据完整性的方法。触发器的主要作用是实现主键和外键不能保证的复杂的参照完整性和数据一致性。其他功能:强化约束:能够实现比CHECK语句更复杂的约束。跟踪变化:侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。级联运行:侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。存储过程的调用:可以调用一个或多个存储过程。触发器分两类(DML触发器和DDL触发器)DML触发器:DML触发器是当数据库服务器中发生数据操作语言事件时执行的存储过程。DDL触发器:DDL触发器是在响应数据定义语言事件时执行的存储过程,一般用于执行数据库中的管理任务、审核和规范数据库操作、防止数据库表结构被修改等。DML触发器工作原理DML触发器是发生数据操作语言时执行的触发器,主要针对添加、修改、删除进行触发。SQL Server 2008中,为DML触发器定义了两个特殊的表:插入表INSERTED删除表两张表再数据库服务器内存中,是由系统管理的逻辑表,用户只能读取。触发器完成工作后两张表会从内存中删除。DML触发器分两类AFTER触发器:在记录变更后才被激活,以删除为例。SQL接收到一个要执行删除操作的SQL语句时, SQL Server先将要删除的记录存放在删除表DELETED中,然后把数据表中的记录删除
  • SQL Server -- 触发器总结(练习&约束)
    http://www.cnblogs.com/yank/p/4193820.html 概念 触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。 触发器可以查询其他表,而且可以包含复杂的 SQL 语句。 它们主要用于强制服从复杂的业务规则或要求。 例如,您可以根据客户当前的帐户状态,控制是否允许插入新订单。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。 作用 1)触发器可通过数据库中的相关表实现级联更改;通过级联引用完整性约束可以更有效地执行这些更改。 2)触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。 3)触发器还可以强制执行业务规则 4)触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。 实际应用 尽管触发器有很多优点,但是在实际的项目开发中,特别是OOP思想的深入,触发器的弊端也逐渐突显,主要: 1、过多的触发器使得数据逻辑变得复杂 2、数据操作比较隐含,不易进行调整修改 3、触发器的功能逐渐在代码逻辑或事务中替代实现,更符合OO思想。 建议:
  • MySql数据库中SQL语句的全面总结
    SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。下文是对这四种语言以及事务处理语言的小总结 SQL(Structed Query Language ) 1.数据定义语言——DDL1.1 CREATE ——表的创建1.2 DROP——表的删除1.3 ALTER——更改表1.4 TRUNCATE——截断表 2.数据操作语言——DML2.1 INSERT 往表中插入记录批量插入多条记录 2.2 UPDATE子句修改数据库中数据2.3 DELETE 语句删除表中满足条件的行记a.删除选中记录b.删除全部记录 3.数据查询语言——DQL(DQL DATA QUERY LANGUAGE)4.数据控制语言——DCL (DATA CONTROL LANGUAGE )5.事务处理语言——TPL (TRANSACTION PROCESS LANGUAGE ) 1.数据定义语言——DDL 对于数据库或者数据库的组件的结构的操作(DATA DEFINITION LANGUAGE ):特点:不允许事务的回滚。 1.1 CREATE ——表的创建 语法 CREATE TABLE 表名( 字段名 数据类型 约束, 字段名 数据类型 约束 ) 1.2 DROP——表的删除 DROP TABLE 表名 1.3 ALTER——更改表 1.4 TRUNCATE—
  • 数据库与MySQL概述
    数据库与MySQL概述 1.数据库的相关概念介绍(DBMS、DB、SQL)2.数据库存储数据的特点3.SQL语言分类3.1 DML(数据操纵语句)3.2 DDL(数据定义语句)3.3 DCL(数据控制语句) 4.MySQL数据库管理系统概述总结 之前我们学习过保存数据的容器有:数组,集合以及文件等,但这些保存的数据都是在内存中进行层面进行保存的。而数据库的引入恰好就解决了这个问题。 1.数据库的相关概念介绍(DBMS、DB、SQL) 数据库的好处:1.持久化数据到本地。2.可以实现结构查询,方便进行管理。 DB:数据库(database)存储数据的"仓库"。保存了一系列有组织的数据。DBMS:数据库管理系统(Database Managerment System)。数据库是通过DBMS创建和操作的容器。SQL:结构化查询语言(Structure Query Language):结构化查询语句,专门用来与数据库通信的语言。 程序员通过客户端程序登陆到数据库管理系统(DBMS)中可以对数据库中数据进行增删改查的基本操作,如下图所示: 其中DBMS(数据库管理系统)与database(数据库)之间的关系可以用一个管家来管理文件柜的例子来进行说明: SQL的优点1.不是某个特定数据库供应商专有的语言,几乎所有的DBMS都支持SQL。2.简单易学。3.虽然简单,但实际上是一种很强有力的语¨
  • MySQL+Navicat Preminum安装、DDL和DML基础语句
    文章目录 前言一、MySQL、Navicat Preminum的安装二、MySQL数据类型和运算符1.常用的数据类型2.MySQL运算符3.代码展示 三、SQL分类1.DDL2.DML 总结 前言 MySQL是一种开放源代码的关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司收购。而2009年sun公司又被Oracle收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源代码,使得很多互联网公司选择了MySQL作为网站数据库(Facebook ,Twitter, YouTube,阿里的蚂蚁金服,去哪儿,魅族,百度外卖,腾讯) 一、MySQL、Navicat Preminum的安装 这里我们下载的是一个MySQL绿色软件版,无需安装,解压即可使用。 Navicat Preminum提供的是11.1.13版,含破解工具。 链接:https://pan.baidu.com/s/1v5bgDXU7X8Z5vubpdNihPA 提取码:1mce 二、MySQL数据类型和运算符 1.常用的数据类型 整型(xxxint)位类型(bit)浮点型(float和double、real)定点数(decimal,numeric)日期时间类型(date,time,datetime,year)字符串
  • 【锁】Oracle锁系列
    1 BLOG文档结构图 2 前言部分2.1 导读和注意事项各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:① 锁的概念、分类、及其模拟② 查询锁的视图及视图之间的关联③ 锁的参数(DML_LOCKS、DDL_LOCK_TIMEOUT)④ FOR UPDATE及FOR UPDATE OF系列⑤ 带ONLINE和不带ONLINE创建索引的锁情况(是否阻塞DML操作)⑥ 包或存过不能编译的解决方法⑦ ORA-08104解决方法Tips:① 本文在itpub(http://blog.itpub.net/26736162)、博客园(http://www.cnblogs.com/lhrbest)和微信公众号(xiaomaimiaolhr)上有同步更新。② 文章中用到的所有代码、相关软件、相关资料及本文的pdf版本都请前往小麦苗的云盘下载,小麦苗的云盘地址见:http://blog.itpub.net/26736162/viewspace-1624453/。③ 若网页文章代码格式有错乱,请下载pdf格式的文档来阅读。④ 在本篇BLOG中,代码输出部分一般放在一行一列的表格中。其中,需要特别关注的地方我都用灰色背景和粉红色字体来表示,比如在下边的例子中,thread 1的最大归档日志号为33,thread
  • sql server中截断和删除的区别是什么?(what is the diffrence between truncate and delete in sql server?)
    问题 任何人都可以向我提供 SQL Server 中截断和删除之间所有差异的列表吗? 回答1 你应该在问之前谷歌它。 截短 截断从数据库中删除所有引用。 快速地事务日志中没有条目。 如果删除一次将无法恢复。 页面引用被清除。 全部或全部身份列被重新初始化为种子截断是 DDL 截断表 tblName 不能提供条件 删除 条目在事务日志中进行。 可恢复慢的基于每条记录的删除参考文献在页面中维护身份从其先前的位置开始数据管理语言 Delete FROM tableName 两者都不会影响表的任何结构。 在执行任何操作之前必须删除所有引用,尽管当与Cascade = true 一起使用时它不适用于 delete 回答2 在处理数据库时,我们使用 Delete 和 Truncate 而不知道它们之间的区别以及何时使用它们。 在本文中,我们将讨论 Sql 中 Delete 和 Truncate 的区别。 删除 删除是一个 DML 命令。 删除语句使用行锁执行,表中的每一行都被锁定以进行删除。 我们可以在 where 子句中指定过滤器。 如果 where 条件存在,它会删除指定的数据。 删除活动触发器,因为操作是单独记录的。 比 Truncate 慢,因为它保留日志 Truncate Truncate 是一个 DDL 命令。 截断表总是锁定表和页而不是每一行。因为它会删除所有数据。 不能使用
  • 【DB笔试面试658】在Oracle中,DML_LOCKS和DDL_LOCK_TIMEOUT参数的作用有哪些?
    ♣ 题目 部分 在Oracle中,DML_LOCKS和DDL_LOCK_TIMEOUT参数的作用有哪些? ♣ 答案部分 TX锁的总数由初始化参数TRANSACTIONS决定,而TM锁个数则由初始化参数DML_LOCKS决定。DML_LOCKS参数属于推导参数,DML_LOCKS=4 * TRANSACTIONS。在Oracle 11g以前,DDL语句是不会等待DML语句的。当DDL语句访问的对象正在执行DML语句,会立即报错“ORA-00054:resource busy and acquire with nowait specified”,而在Oracle 11g以后,DDL_LOCK_TIMEOUT参数可以修改这一状态,当DDL_LOCK_TIMEOUT为0时,DDL不等待DML,当DDL_LOCK_TIMEOUT为N(秒)时,DDL等待DML操作N秒,该值默认为0。本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗 ---------------优质麦课------------ 详细内容可以添加麦老师微信或QQ私聊。About Me:小麦苗 ● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/● 本系列题目来源于作者的学习笔记,部分整理自网络
  • 【DB笔试面试476】DELETE、DROP和TRUNCATE的区别是什么?
    ♣ 题目 部分 DELETE、DROP和TRUNCATE的区别是什么? ♣ 答案部分 DELETE、DROP和TRUNCATE的异同点如下表所示:表 3-9 DELETE、DROP和TRUNCATE的区别相同点1、TRUNCATE和不带WHERE子句的DELETE及DROP都会删除表内的所有数据2、DROP和TRUNCATE都是DDL语句,执行后会自动提交3、表上的索引大小会自动进行维护不同点分类DROPTRUNCATEDELETE是否删除表结构删除表结构及其表上的约束,且依赖于该表的存储过程和函数等将变为INVALID状态只删除数据不删除表的定义、约束、触发器和索引SQL命令类型DDL语句,隐式提交,不能对TRUNCATE和DROP使用ROLLBACK命令DML语句,事务提交(COMMIT)之后才生效,可以使用ROLLBACK语句撤销未提交的事务删除的数据是否放入回滚段(ROLLBACK SEGMENT)否否是高水位是否下降是是,在宏观上表现为TRUNCATE操作后,表的大小变为初始化的大小否,在宏观上表现为DELETE后表的大小并不会因此而改变,所以,在对整个表进行全表扫描时