文章目录
前言
SQL语句主要分为四大类,在数据库中各司其职。DDL数据定义语言,主要用于定义和管理数据库与数据表结构,可完成创建、修改、删除库表等操作,搭建整体数据存储框架。DML数据操纵语言,负责对表内数据进行日常操作,实现数据的新增、修改与删除,维护业务数据内容。DQL数据查询语言是使用频率最高的语句,专门用来精准查询、筛选、统计数据库中的数据,满足数据查看与数据分析需求。DCL数据控制语言用于管理用户访问权限,分配和收回操作权限,同时管控事务提交与回滚,保障数据库数据安全、访问规范与数据完整性,共同保障数据库稳定有序运行。
一、数据查询语言(DQL, Data Query Language)
DQL即数据查询语言,是以SELECT语句为核心的SQL语句类别,是数据库日常使用中运用最频繁的语言。它无需改动数据库结构与原有数据,仅负责从数据表中按照指定条件提取、筛选、排序、聚合所需数据。能够灵活实现单表查询、多表联查、条件过滤、分组统计、限制结果条数等各类数据读取操作,广泛应用于后台数据展示、业务数据统计、信息检索、报表生成等场景。DQL只做数据读取,不会对数据库内原有数据造成任何修改,操作安全便捷,是用户获取数据库信息、实现数据交互与数据分析最核心的语言。
核心作用:从数据库中查询 / 检索数据(仅读取,不修改数据),是最常用的 SQL 类别。
核心关键字:SELECT(核心)、FROM、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT、JOIN 等。
SELECT:查询核心关键字,用于指定要查询显示的字段,可查询单个字段、多个字段或全部字段。
FROM:指定数据来源,后面紧跟需要查询的数据表名称,确定查询哪张表的数据。
WHERE:条件筛选关键字,用来设置查询条件,过滤出符合要求的数据行。
GROUP BY:分组查询,将查询结果按照指定字段进行分组,常配合聚合函数使用。
HAVING:分组后筛选,对分组完成后的结果再次进行条件过滤,作用于分组数据。
ORDER BY:排序关键字,可将查询结果按照指定字段升序或降序排列展示。
LIMIT:限制查询条数,用来控制最终输出的数据行数,常用于分页查询。
JOIN:多表连接关键字,实现多张数据表联合查询,关联不同表中的关联字段获取整合数据。
我们在Navicat Premium软件打开之后,鼠标右击查询后选择新建查询,就可以输入内容进行查询了。
在我们完成操作后,回到表内,右击鼠标选择刷新,就可以显示出我们改动后的表了。

SELECT name, age
FROM student
WHERE age > 19
ORDER BY age DESC
LIMIT 10;
解析:
-- 第1行
SELECT name, age
指定查询要返回的字段。这里表示要从表中取出 name(姓名)和 age(年龄)这两列数据。
-- 第2行
FROM student
指定数据的来源表。这里表示要从名为 student 的表中查询数据。
-- 第3行
WHERE age > 19
对数据进行条件筛选,只保留满足条件的行。这里表示只查询 age 字段值大于 19 的学生记录。
-- 第4行
ORDER BY age DESC
对筛选后的结果进行排序。ORDER BY 表示按指定字段排序,age 是排序依据,DESC 表示降序(从大到小)排列。
-- 第5行
LIMIT 10;
限制查询结果的行数,只返回前 N 条数据。这里表示最多返回 10 条记录。

二、数据操作语言(DML, Data Manipulation Language)
核心作用:操作(增 / 删 / 改)数据库中的数据(仅修改数据内容,不改变表结构)。
核心关键字:INSERT(新增)、UPDATE(修改)、DELETE(删除)、MERGE(合并,部分数据库支持)。
-- 新增一条用户记录
INSERT INTO student (name, age,id) VALUES ('张三份', 25, '20250402');

-- 修改用户名称
UPDATE student SET name = '周杰伦' WHERE id = 20250402;

-- 删除年龄小于20的用户
DELETE FROM student WHERE age < 20;

提醒:删除一定要加 WHERE,否则会清空全表。
三、数据定义语言(DDL, Data Definition Language)
核心作用:定义 / 修改 / 删除数据库对象(表、索引、视图、触发器、数据库等)的结构,操作会直接生效(无需事务提交)。
核心关键字:CREATE(创建)、ALTER(修改)、DROP(删除)、TRUNCATE(清空表,属于 DDL 而非 DML)、RENAME(重命名)。
-- 创建用户表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
phone VARCHAR(20) UNIQUE
);

-- 给用户表新增email字段
ALTER TABLE users ADD COLUMN email VARCHAR(100);

-- 删除用户表
DROP TABLE users;
代码执行完后,我们对表进行刷新,就可以看到代码执行结果。

四、数据控制语言(DCL, Data Control Language)
核心作用:管理数据库的权限和事务,控制用户对数据库的访问权限、事务提交 / 回滚等。
核心关键字:GRANT(授权)、REVOKE(撤销权限)、COMMIT(提交事务)、ROLLBACK(回滚事务)、SAVEPOINT(保存点)、SET TRANSACTION(设置事务属性)。
1.创建用户时密码需符合安全策略
CREATE USER 创建用户时,密码不能过于简单,MySQL 会校验密码复杂度,否则会报错;% 表示允许所有 IP 访问,生产环境需限制为指定 IP,提升安全性。
-- 创建用户
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
2.授权必须精准匹配用户与主机地址
GRANT 语句中用户标识(test@localhost)必须与创建用户时一致,否则授权无效;权限分配遵循最小原则,仅授予业务必需的权限。
-- 授予用户test对users表的查询/插入权限
GRANT SELECT, INSERT ON users TO 'test'@'localhost';
3.撤销权限要与授权完全对应
REVOKE 只能撤销已授予的权限,且对象、用户、主机需和授权时保持一致,撤销后无需手动提交即可生效。
-- 撤销test用户的插入权限
REVOKE INSERT ON users FROM 'test'@'localhost';
4.COMMIT 会永久保存数据修改
COMMIT 用于确认 INSERT/UPDATE/DELETE 操作,执行后数据修改永久生效,无法再通过回滚恢复,执行前需确认操作正确。
-- 提交事务(确认DML操作)
COMMIT;
5.ROLLBACK 仅能撤销未提交的操作
ROLLBACK 只能恢复未执行 COMMIT 的数据修改,一旦事务提交,回滚无效;事务执行异常时及时回滚,保证数据一致性。
-- 回滚事务(撤销未提交的DML操作)
ROLLBACK;
总结
`
文末总结
综上所述,SQL语言共分为DQL、DML、DDL、DCL四大类别,各司其职分工明确。数据查询语言用于读取检索数据,不会改动原有内容,是日常使用频率最高的语句;数据操作语言负责对表内数据进行新增、修改与删除,仅变更数据内容;数据定义语言主要搭建和调整数据库与数据表结构,完成建表、改表、删表等基础搭建工作;数据控制语言侧重管理用户操作权限与事务管理,保障数据库使用安全与数据完整。在Navicat等数据库工具中熟练运用四类SQL语句,遵循书写规范与操作注意事项,合理使用各类关键字,谨慎执行修改、删除、权限分配等高风险操作,能够高效完成数据库的数据查询、数据维护、结构搭建与安全管理等全部基础操作。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/m0_66822255/article/details/161144321




