DDL DML DCL语句

转载,原文链接未知,发现了会加进来的,后面TCL部分和前面官方文档部分是我自己加的


官方文档:

DDL

Data Definition Language (DDL) statements are used to define the database structure or schema. Some examples:
  • CREATE - to create objects in the database
  • ALTER - alters the structure of the database
  • DROP - delete objects from the database
  • TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed
  • COMMENT - add comments to the data dictionary
  • RENAME - rename an object
DML

Data Manipulation Language (DML) statements are used for managing data within schema objects. Some examples:
  • SELECT - retrieve data from the a database
  • INSERT - insert data into a table
  • UPDATE - updates existing data within a table
  • DELETE - deletes all records from a table, the space for the records remain
  • MERGE - UPSERT operation (insert or update)
  • CALL - call a PL/SQL or Java subprogram
  • EXPLAIN PLAN - explain access path to data
  • LOCK TABLE - control concurrency
DCL

Data Control Language (DCL) statements. Some examples:
  • GRANT - gives user's access privileges to database
  • REVOKE - withdraw access privileges given with the GRANT command
TCL

Transaction Control (TCL) statements are used to manage the changes made by DML statements. It allows statements to be grouped together into logical transactions.
  • COMMIT - save work done
  • SAVEPOINT - identify a point in a transaction to which you can later roll back
  • ROLLBACK - restore database to original since the last COMMIT
  • SET TRANSACTION - Change transaction options like isolation level and what rollback segment to use

 



总体解释:

DML(data manipulation language):自动提交的数据库操作语言

它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样

DDL(data definition language):自动提交的数据库定义语言
主要的命令有
CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用

DCL(Data Control Language):
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(
grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL

TCL(Transaction Control Language):

是数据库事务控制语言,包括COMMIT,ROLLBACK,SAVEPOINT行,主要是控制事务提交、回滚以及设立事务存档点


详细解释:
一、DDL is Data Definition Language statements. Some examples:数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 
      1.CREATE - to create objects in the database   创建 
      2.ALTER - alters the structure of the database   修改 
      3.DROP - delete objects from the database   删除 
      4.TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed 
      TRUNCATE TABLE [Table Name]。 
  下面是对Truncate语句在MSSQLServer2000中用法和原理的说明: 
  Truncate table 表名 速度快,而且效率高,因为: 
  TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 
  DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。 
  TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。 
  对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。 
  TRANCATE后高水线回归原点,DELETE则保持原样。  

  TRUNCATE TABLE 不能用于参与了索引视图的表。 
       5.COMMENT - add comments to the data dictionary 注释 

二、DML is Data Manipulation Language statements. Some examples:数据操作语言,SQL中处理数据等操作统称为数据操纵语言 
       1.SELECT - retrieve data from the a database 查询 
       2.INSERT - insert data into a table 添加 

   3.UPDATE - updates existing data within a table 更新 
       4.DELETE - deletes all records from a table, the space for the records remain 删除 
       5.CALL - call a PL/SQL or Java subprogram 调用(存储过程等)
       6.EXPLAIN PLAN - explain access path to data 
       Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。 
       7.LOCK TABLE - control concurrency 锁,用于控制并发

三、DCL is Data Control Language statements. Some examples:数据控制语言,用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等 

       1.GRANT - gives user's access privileges to database 授权 
       2.REVOKE - withdraw access privileges given with the GRANT command   收回已经授予的权限

四、TCL is Transaction Control Language,主要用来控制DML语句产生的变化事务,可以批量控制DML语句执行

 1.COMMIT - save work done 提交 
     2.SAVEPOINT - identify a point in a transaction to which you can later roll back 保存点 
     3.ROLLBACK - restore database to original since the last COMMIT   回滚 
     4.SET TRANSACTION - Change transaction options like what rollback segment to use   设置当前事务的特性,它对后面的事务没有影响

1、一条transaction起始于一条dml语句,结束的时机是:(1:键入rollback,返回到dml语句的起始状态;
2:用户显示的执行commit 3:使用ddl语句dcl语句(数据控制语句,如授权grant、撤销revoke),
事务自动提交,再也无法rollback 4:当用户正常断开连接时,transaction会自动提交;非正常断开连接,
transaction自动回滚)

2、事务处理控制命令有:
COMMIT
SAVEPOINT
ROLLBACK
<think>好的,我现在需要帮助用户理解数据库DDLDMLDCL、DQL和TCL的定义及其区别。首先,我应该回顾用户提供的引用内容,确保准确涵盖每个术语。用户提到五个类别,其中TCL在引用中也有部分涉及,比如引用5提到了DDL操作是隐性提交的,不能回滚,这可能和TCL相关。 首先,我需要逐个定义每个术语,并引用正确的来源。比如,DDL是数据定义语言,涉及创建、修改和删除数据库对象,如CREATE、ALTER、DROP,这在引用1、2、3、4、5中都有提到。DML是数据操作语言,包括INSERT、UPDATE、DELETE,引用1、3、4、5都提到。DCL是数据控制语言,如GRANT和REVOKE,引用1、3、5。DQL是数据查询语言,主要是SELECT,引用1、3、4。TCL可能涉及事务控制,如COMMIT和ROLLBACK,引用2和5提到TCL,但需要确认用户提供的引用是否有足够信息。 接下来要区分它们的区别。根据引用4,DDLDML的主要区别在于DDL操作数据库对象结构,而DML操作表内数据。DCL负责权限,DQL负责查询。TCL处理事务,如提交和回滚。需要注意的是,用户提到的引用中,引用2和5提到了TCL,但可能信息较少,需要结合一般数据库知识补充。 然后,考虑如何结构化回答。按每个术语的定义和常见语句列表,然后对比它们的区别。可能需要表格来清晰展示。同时,用户要求生成相关问题,所以最后要添加相关问题部分。 需要检查是否有遗漏,比如TCL是否被正确涵盖。根据引用5,TCL可能未被详细讨论,但用户的问题明确提到TCL,所以需要补充其定义,即使引用信息有限,可能需要结合外部知识,但根据指示应尽可能使用提供的引用。引用5提到DDL操作是隐性提交,不能回滚,这可能与TCL有关,但需要明确TCL的定义,如COMMIT、ROLLBACK、SAVEPOINT,这可能不在引用中,但用户的问题需要回答,所以可能需要适当说明。 最后,确保回答符合格式要求:使用中文,数学公式正确,引用标识正确,相关问题生成。需要确认所有引用标记正确对应,例如引用[^1]、[^2]等是否正确关联到用户提供的引用内容。</think>### 数据库DDLDMLDCL、DQL、TCL的定义与区别 #### 1. **DDL(数据定义语言)** 用于定义数据库结构和对象(如表、索引、视图等)。 - **常见语句**:`CREATE`(创建)、`ALTER`(修改)、`DROP`(删除)、`TRUNCATE`(清空表)[^1][^2][^5]。 - **特点**: - 操作对象是数据库结构,而非数据本身。 - DDL语句执行后会自动提交(隐性提交),无法回滚[^5][^4]。 #### 2. **DML(数据操作语言)** 用于对数据库中的数据进行增删改操作。 - **常见语句**:`INSERT`(插入)、`UPDATE`(更新)、`DELETE`(删除)[^1][^3][^4]。 - **特点**: - 操作对象是表中的数据,不影响表结构。 - 需要显式提交(如`COMMIT`)或回滚(如`ROLLBACK`)[^4][^5]。 #### 3. **DQL(数据查询语言)** 用于从数据库中检索数据。 - **核心语句**:`SELECT`(查询)[^1][^4]。 - **特点**: - 仅用于数据查询,不修改数据或结构。 - 支持复杂操作,如聚合函数、分组、排序等[^5]。 #### 4. **DCL(数据控制语言)** 用于管理数据库访问权限和安全控制。 - **常见语句**:`GRANT`(授权)、`REVOKE`(撤销权限)[^1][^3]。 - **特点**: - 控制用户对数据库对象的操作权限。 - 通常由数据库管理员(DBA)使用[^3][^4]。 #### 5. **TCL(事务控制语言)** 用于管理数据库事务的提交与回滚。 - **常见语句**:`COMMIT`(提交事务)、`ROLLBACK`(回滚事务)、`SAVEPOINT`(设置保存点)[^2][^5]。 - **特点**: - 与事务逻辑相关,确保数据一致性。 - DML操作需要配合TCL实现事务的最终生效或撤销[^5]。 --- ### **核心区别对比** | 类别 | 作用范围 | 常见语句 | 是否可回滚 | 操作对象 | |------|--------------------|--------------------------------------|------------|----------------| | DDL | 定义数据库结构 | `CREATE`, `ALTER`, `DROP` | 否[^5] | 表、索引等对象 | | DML | 操作数据 | `INSERT`, `UPDATE`, `DELETE` | 是[^4] | 表中的数据 | | DQL | 查询数据 | `SELECT` | 不涉及 | 数据检索 | | DCL | 权限控制 | `GRANT`, `REVOKE` | 否 | 用户权限 | | TCL | 事务控制 | `COMMIT`, `ROLLBACK` | 是 | 事务逻辑 | --- ### **示例说明** - **DDL示例**: ```sql CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(50)); ``` - **DML示例**: ```sql INSERT INTO students VALUES (1, 'Alice'); ``` - **DCL示例**: ```sql GRANT SELECT ON students TO user1; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值