一篇文章,彻底理解数据库操作语言:DDL、DML、DCL、TCL

本篇文章以具体的SQL语句讲解了数据库SQL语言四大分类(数据定义语言DDL,数据操作语言DML,数据查询语言DQL,数据控制语言DCL) , 同时也介绍了事务控制语言TCL 。最近与开发和运维讨论数据库账号及赋权问题时,发现大家对DDL和DML两个概念并不了解 。于是写一篇文章 , 系统的整理一下在数据库领域中的DDL、DML、DQL、DCL的使用及区别 。
通常,数据库SQL语言共分为四大类:数据定义语言DDL,数据操作语言DML,数据查询语言DQL , 数据控制语言DCL 。再加上事务控制语言TCL,一个共5个 。
下面,我们就详细了解一下它们 。
数据定义语言DDLDDL(Data Definition Language)是数据定义语言,它用于定义或改变数据库或表的结构等初始化工作上 。通常,包括数据类型、表(Table)之间的关系以及数据库(Database)中的约束、索引、视图、存储过程、触发器等 。
DDL命令通常用于创建数据库模式,例如CREATEALTERDROPTRUNCATERENAMECOMMENT等 。这些命令一旦执行,就无法被撤销,因为它们改变了数据库的结构 。
DDL常见命令及使用CREATE:用来创建数据库、表、索引等对象 。例如:
CREATE DATABASE testDB;--创建一个名为testDB的数据库CREATE TABLE Students (ID INT, Name TEXT);--创建一个名为Students的表,包含ID和Name两个字段ALTER:用来修改已存在的数据库对象 。例如,
ALTER TABLE Students ADD Grade INT;--在Students表中添加一个名为Grade的字段ALTER TABLE Students DROP COLUMN Grade;--在Students表中删除名为Grade的字段DROP:用来删除整个数据库或者数据库中的表 。例如 , 
DROP DATABASE testDB;--删除名为testDB的数据库DROP TABLE Students;--删除Students表TRUNCATE:用来删除表中所有的行,但不删除表本身 。例如,
【一篇文章,彻底理解数据库操作语言:DDL、DML、DCL、TCL】TRUNCATE TABLE Students;--删除Students表中的所有数据,但不删除表本身RENAME:用来重命名数据库或者表 。例如,
ALTER TABLE Students RENAME TO Pupils;--将Students表重命名为PupilsCOMMENT:用来为数据库对象如表、列添加注释 。例如,
COMMENT ON COLUMN Students.Name IS 'Student Name';--在Students表的Name列上添加注释'Student Name'以上是几种常见的DDL命令示例,不同的数据库系统可能语法稍有不同,使用时需要参考对应数据库的文档 。
数据操作语言DMLDML(Data Manipulation Language)是数据操作语言,用于管理和检索数据库中的数据 。适用于对数据库中的数据进行一些简单操作,比如增删改查表中的数据 。
DML命令用于处理表中的记录,例如INSERT(插入)、UPDATE(更新)、SELECT(查询)、DELETE(删除)等 。这些命令不会影响数据库的结构,而是直接作用于数据本身 。如果执行了错误的操作,可以通过回滚机制来取消这些操作 。
需要注意的是,DML命令不会自动提交,而且是可以回滚操作 。
常用的语句关键字有:SELECTINSERTUPDATEDELETEMERGECALLEXPLAIN PLANLOCK TABLE
DML常见命令及使用以下的例子基于 SQL 语言:
SELECT:从数据库中检索数据 。例如 , 
SELECT * FROM Students;--选择Students表中的所有数据SELECT Name, Grade FROM Students;--选择Students表中的Name和Grade数据INSERT:在表中插入新的数据 。例如,
INSERT INTO Students (ID, Name, Age)VALUES (1, 'Tom', 18);--在Students表中插入一条新的数据UPDATE:更新数据库表中的数据 。例如,
UPDATE Students SET Age = 19 WHERE ID = 1;--将Students表中ID为1的记录的Age设置为19DELETE:从数据库中删除数据 。例如,
DELETE FROM StudentsWHERE ID = 1;--删除Students表中ID为1的数据MERGE:合并两张表或更改其中一张表的数据 。例如,
MERGE INTO Students AS TargetUSING (SELECT ID, Name FROM Enrolled_Students) AS SourceON Target.ID = Source.IDWHEN MATCHED THEN UPDATE SET Name = Source.Name WHEN NOT MATCHED THEN INSERT (ID, Name) VALUES (Source.ID, Source.Name); --更新已存在的记录或插入新的记录CALL:调用一个存储过程 。例如 , 


推荐阅读