网站查询域名ip解析,开发网站设计公司,wordpress前台主题切换,淘宝代运营公司最近与开发和运维讨论数据库账号及赋权问题时#xff0c;发现大家对DDL和DML两个概念并不了解。于是写一篇文章#xff0c;系统的整理一下在数据库领域中的DDL、DML、DQL、DCL的使用及区别。
通常#xff0c;数据库SQL语言共分为四大类#xff1a;数据定义语言DDL#xf…最近与开发和运维讨论数据库账号及赋权问题时发现大家对DDL和DML两个概念并不了解。于是写一篇文章系统的整理一下在数据库领域中的DDL、DML、DQL、DCL的使用及区别。
通常数据库SQL语言共分为四大类数据定义语言DDL数据操作语言DML数据查询语言DQL数据控制语言DCL。再加上事务控制语言TCL一个共5个。
下面我们就详细了解一下它们。
数据定义语言DDL
DDLData Definition Language是数据定义语言它用于定义或改变数据库或表的结构等初始化工作上。通常包括数据类型、表Table之间的关系以及数据库Database中的约束、索引、视图、存储过程、触发器等。
DDL命令通常用于创建数据库模式例如CREATE、ALTER、DROP、TRUNCATE、RENAME、COMMENT等。这些命令一旦执行就无法被撤销因为它们改变了数据库的结构。
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用来删除表中所有的行但不删除表本身。例如
TRUNCATE TABLE Students; --删除Students表中的所有数据但不删除表本身
RENAME用来重命名数据库或者表。例如
ALTER TABLE Students RENAME TO Pupils; --将Students表重命名为Pupils
COMMENT用来为数据库对象如表、列添加注释。例如
COMMENT ON COLUMN Students.Name IS Student Name; --在Students表的Name列上添加注释Student Name
以上是几种常见的DDL命令示例不同的数据库系统可能语法稍有不同使用时需要参考对应数据库的文档。
数据操作语言DML
DMLData Manipulation Language是数据操作语言用于管理和检索数据库中的数据。适用于对数据库中的数据进行一些简单操作比如增删改查表中的数据。
DML命令用于处理表中的记录例如INSERT(插入)、UPDATE更新、SELECT查询、DELETE删除等。这些命令不会影响数据库的结构而是直接作用于数据本身。如果执行了错误的操作可以通过回滚机制来取消这些操作。
需要注意的是DML命令不会自动提交而且是可以回滚操作。
常用的语句关键字有SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAIN PLAN、LOCK 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设置为19
DELETE从数据库中删除数据。例如
DELETE FROM Students
WHERE ID 1; --删除Students表中ID为1的数据
MERGE合并两张表或更改其中一张表的数据。例如
MERGE INTO Students AS Target
USING (SELECT ID, Name FROM Enrolled_Students) AS Source
ON Target.ID Source.ID
WHEN MATCHED THEN
UPDATE SET Name Source.Name
WHEN NOT MATCHED THEN
INSERT (ID, Name) VALUES (Source.ID, Source.Name); --更新已存在的记录或插入新的记录
CALL调用一个存储过程。例如
CALL Update_Students_Age(18); -- 调用名为“Update_Students_Age”的存储过程
EXPLAIN PLAN提供一条查询语句的执行计划。例如
EXPLAIN PLAN FOR SELECT * FROM Students; -- 显示查询所有学生数据的执行计划
LOCK TABLE对数据库表进行锁定以控制并发读写。例如
LOCK TABLE Students IN EXCLUSIVE MODE; -- 对Students表施加独占锁
以上是几种常见的DML命令示例不同的数据库系统可能语法稍有不同具体使用时需要参考对应数据库的文档。
数据控制语言DCL
DCLData Control Language数据控制语言主要用于控制用户对数据库的访问权限以及对数据的执行权限。常见的DCL语句包括GRANT、REVOKE等。
DCL主要包括两种SQL命令分别是GRANT和REVOKE。
GRANT该命令用于授予用户对数据库对象例如表格的访问权限。下面是一个例子
GRANT SELECT, INSERT, UPDATE ON Students TO user1;
在这个例子中给 user1 授予了对 Students 表进行 SELECT、INSERT 和 UPDATE 的权限。
REVOKE该命令用于撤回已经授予用户的某些权限。
下面是一个例子
REVOKE UPDATE ON Students FROM user1;
在这个例子中撤回了 user1 对 Students 表的 UPDATE 权限。
使用DCL数据库管理员可以精细化管理数据库的访问权限保护数据的安全性。
注意这些命令的具体语法和使用可能会根据使用的数据库系统而有所不同所以在实际使用时需要参考相应数据库的具体文档。
数据查询语言DQL
DQLData Query Language数据查询语言主要用来查询数据。实际上DQL在操作中主要体现为SQL的SELECT语句。
例如我们有一个学生表Students包括ID, 名字Name 年龄Age等字段
查询所有数据
SELECT * FROM Students;
这条命令会返回Students表中的所有行和列。
查询部分字段
SELECT Name, Age FROM Students;
这条命令仅返回Name和Age字段的数据。
对查询结果进行筛选
SELECT * FROM Students WHERE Age 18;
这条命令只返回年龄大于18的学生数据。
对查询结果进行排序
SELECT * FROM Students ORDER BY Age DESC;
这条命令将数据按照年龄降序排列后返回。
以上几个例子展示了最基本的数据查询操作但是实际上SELECT语句的用法和技巧还有很多例如聚合函数如COUNT、SUM、分组GROUP BY、连接JOIN等等。
事务控制语言TCL
TCL (Transaction Control Language) 是事务控制语言的简称主要用来管理和控制数据库中的事务Transaction以保证数据库操作的完整性和一致性。
TCL命令往往和DML数据操作语言命令一起使用以确保一系列的数据库操作要么全部成功要么全部不成功可回滚至操作前的状态。
TCL 主要包括以下几种命令
COMMIT用于提交事务将所有数据库修改保存到数据库中。
INSERT INTO Students (ID, Name, Age) VALUES (1, Tom, 18);
COMMIT; -- 提交事务将插入的数据保存到数据库中
ROLLBACK用于回滚事务撤销所有未经提交的数据库修改。
INSERT INTO Students (ID, Name, Age) VALUES (1, Tom, 18);
ROLLBACK; -- 回滚事务撤销上一条插入命令
SAVEPOINT为事务中的一系列操作设定保存点。设立保存点后可以选择只回滚到保存点的部分而不需要全部回滚。
SAVEPOINT SP1; -- 创建保存点 SP1
INSERT INTO Students (ID, Name, Age) VALUES (1, Tom, 18);
ROLLBACK TO SP1; -- 回滚至保存点 SP1不会撤销保存点后的操作
以上就是SQL中的TCL中的主要命令用于确保数据库的完整性和一致性。
小结
本篇文章以具体的SQL语句讲解了数据库SQL语言四大分类数据定义语言DDL数据操作语言DML数据查询语言DQL数据控制语言DCL同时也介绍了事务控制语言TCL。
针对不同的数据库具体的SQL可能有所不同但分类思想和功能基本相同。在上述英文缩写的记忆中建议通过英文原文特别是中间的英文字母来辅助记忆。