数据库语言分类DDL、DCL、DML详解
<p><strong>DML(Data Manipulation Language):</strong></p>
<p>
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言</p>
<p>
<strong>DDL(Data Definition Language):</strong></p>
<p>
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用</p>
<p>
<strong>DCL(Data Control Language): </strong></p>
<p>
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL</p>
<p>
<strong>详细解释:</strong></p>
<p>
一、DDL is Data Definition Language statements. Some examples:数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightersql" id="highlighter_661261">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="sql keyword">CREATE</code> <code class="sql plain">- </code><code class="sql keyword">to</code> <code class="sql keyword">create</code> <code class="sql plain">objects </code><code class="sql color1">in</code> <code class="sql plain">the </code><code class="sql keyword">database</code> <code class="sql plain">创建</code>
</div>
<div class="line number2 index1 alt1">
<code class="sql keyword">ALTER</code> <code class="sql plain">- alters the structure </code><code class="sql keyword">of</code> <code class="sql plain">the </code><code class="sql keyword">database</code> <code class="sql plain">修改</code>
</div>
<div class="line number3 index2 alt2">
<code class="sql keyword">DROP</code> <code class="sql plain">- </code><code class="sql keyword">delete</code> <code class="sql plain">objects </code><code class="sql keyword">from</code> <code class="sql plain">the </code><code class="sql keyword">database</code> <code class="sql plain">删除</code>
</div>
<div class="line number4 index3 alt1">
<code class="sql keyword">TRUNCATE</code> <code class="sql plain">- remove </code><code class="sql color1">all</code> <code class="sql plain">records </code><code class="sql keyword">from</code> <code class="sql plain">a </code><code class="sql keyword">table</code><code class="sql plain">, including </code><code class="sql color1">all</code> <code class="sql plain">spaces allocated </code><code class="sql keyword">for</code> <code class="sql plain">the records are removed</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
TRUNCATE TABLE 。</p>
<p>
下面是对Truncate语句在MSSQLServer2000中用法和原理的说明:</p>
<p>
Truncate table 表名 速度快,而且效率高,因为:</p>
<p>
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。</p>
<p>
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。</p>
<p>
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。</p>
<p>
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。</p>
<p>
TRUNCATE TABLE 不能用于参与了索引视图的表。</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightersql" id="highlighter_913098">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="sql plain">COMMENT - </code><code class="sql keyword">add</code> <code class="sql plain">comments </code><code class="sql keyword">to</code> <code class="sql plain">the data dictionary 注释</code>
</div>
<div class="line number2 index1 alt1">
<code class="sql keyword">GRANT</code> <code class="sql plain">- gives </code><code class="sql color2">user</code><code class="sql plain">'s access </code><code class="sql keyword">privileges</code> <code class="sql keyword">to</code> <code class="sql keyword">database</code> <code class="sql plain">授权</code>
</div>
<div class="line number3 index2 alt2">
<code class="sql keyword">REVOKE</code> <code class="sql plain">- withdraw access </code><code class="sql keyword">privileges</code> <code class="sql plain">given </code><code class="sql keyword">with</code> <code class="sql plain">the </code><code class="sql keyword">GRANT</code> <code class="sql plain">command 收回已经授予的权限</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
二、DML is Data Manipulation Language statements. Some examples:数据操作语言,SQL中处理数据等操作统称为数据操纵语言</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightersql" id="highlighter_334533">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="sql keyword">SELECT</code> <code class="sql plain">- retrieve data </code><code class="sql keyword">from</code> <code class="sql plain">the a </code><code class="sql keyword">database</code> <code class="sql plain">查询</code>
</div>
<div class="line number2 index1 alt1">
<code class="sql keyword">INSERT</code> <code class="sql plain">- </code><code class="sql keyword">insert</code> <code class="sql plain">data </code><code class="sql keyword">into</code> <code class="sql plain">a </code><code class="sql keyword">table</code> <code class="sql plain">添加</code>
</div>
<div class="line number3 index2 alt2">
<code class="sql keyword">UPDATE</code> <code class="sql plain">- updates existing data within a </code><code class="sql keyword">table</code> <code class="sql plain">更新</code>
</div>
<div class="line number4 index3 alt1">
<code class="sql keyword">DELETE</code> <code class="sql plain">- deletes </code><code class="sql color1">all</code> <code class="sql plain">records </code><code class="sql keyword">from</code> <code class="sql plain">a </code><code class="sql keyword">table</code><code class="sql plain">, the </code><code class="sql color2">space</code> <code class="sql keyword">for</code> <code class="sql plain">the records remain 删除</code>
</div>
<div class="line number5 index4 alt2">
<code class="sql plain">CALL - call a PL/SQL </code><code class="sql color1">or</code> <code class="sql plain">Java subprogram</code>
</div>
<div class="line number6 index5 alt1">
<code class="sql plain">EXPLAIN PLAN - explain access path </code><code class="sql keyword">to</code> <code class="sql plain">data</code>
</div>
<div class="line number7 index6 alt2">
<code class="sql plain">Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。</code>
</div>
<div class="line number8 index7 alt1">
<code class="sql plain">LOCK </code><code class="sql keyword">TABLE</code> <code class="sql plain">- control concurrency 锁,用于控制并发</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
三、DCL is Data Control Language statements. Some examples:数据控制语言,用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等</p>
<div class="jb51code">
<div>
<div class="syntaxhighlightersql" id="highlighter_729925">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="sql keyword">COMMIT</code> <code class="sql plain">- save </code><code class="sql keyword">work</code> <code class="sql plain">done 提交</code>
</div>
<div class="line number2 index1 alt1">
<code class="sql plain">SAVEPOINT - identify a point </code><code class="sql color1">in</code> <code class="sql plain">a </code><code class="sql keyword">transaction</code> <code class="sql keyword">to</code> <code class="sql plain">which you can later roll back 保存点</code>
</div>
<div class="line number3 index2 alt2">
<code class="sql keyword">ROLLBACK</code> <code class="sql plain">- restore </code><code class="sql keyword">database</code> <code class="sql keyword">to</code> <code class="sql plain">original since the </code><code class="sql keyword">last</code> <code class="sql keyword">COMMIT</code> <code class="sql plain">回滚</code>
</div>
<div class="line number4 index3 alt1">
<code class="sql keyword">SET</code> <code class="sql keyword">TRANSACTION</code> <code class="sql plain">- Change </code><code class="sql keyword">transaction</code> <code class="sql plain">options </code><code class="sql color1">like</code> <code class="sql plain">what </code><code class="sql keyword">rollback</code> <code class="sql plain">segment </code><code class="sql keyword">to</code> <code class="sql plain">use 设置当前事务的特性,它对后面的事务没有影响.</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>总结</strong></p>
<p>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接</p>
<p>
原文链接:https://blog.csdn.net/xlgen157387/article/details/48393381</p>
頁:
[1]