sql 全称结构化查询语言,是专门用来和关系型数据库交互的标准编程语言,核心功能覆盖数据库对象管理,数据增删改查,数据权限控制,事务管理,数据统计分析,主流的 MySQL Oracle sqlite3 SQL Server 都支持这套标准语法,它属于声明式语言,和 C Java 这类过程式语言不一样,写 sql 的时候只需要描述想要获取什么数据,不需要一步步写循环判断的执行流程,数据库引擎自己决定最优执行方案,sql 按照功能可以划分成多个大类,日常开发数据分析运维岗位都会高频使用,不管是网站后台,仓储系统,报表统计,嵌入式本地数据库,都依靠 sql 完成数据操作,理解 sql 语言具有的各项功能,是学习数据库的基础前提。
sql 语言分类与核心功能清单
数据查询语言 DQL
核心就是 select 语句,用来检索数据表里面的数据,支持条件筛选排序分组聚合多表联查子查询,是日常使用频率最高的功能,可以完成单表查询,多表关联查询,统计报表,模糊搜索,分页查询等各类数据提取需求。
数据操纵语言 DML
负责对表里已经存在的数据做修改,包含 insert 插入新数据,update 更新已有数据,delete 删除数据,这三类语句用来维护表内业务数据,不会修改数据表本身的结构。
数据定义语言 DDL
用来创建修改删除数据库和表结构,包含 create 创建库或者表,alter 修改表字段索引约束,drop 删除表或者数据库,truncate 清空整张表数据同时保留表结构,DDL 操作一般是不可逆,执行前需要谨慎。
数据控制语言 DCL
用来做账号和权限管理,包含 grant 授权,revoke 回收权限,可以控制不同用户能不能查询修改删除数据库,适合多用户企业数据库的安全管控。
事务控制语言 TCL
用来管理数据库事务,包含 begin 开启事务,commit 提交事务,rollback 回滚事务,保障一组数据库操作要么全部成功,要么全部失败,满足 ACID 特性,防止出现数据半截更新的异常状态。
功能分类对照表
| 分类 | 英文缩写 | 核心语句 | 主要作用 |
|---|---|---|---|
| 数据查询语言 | DQL | select | 检索查询数据 |
| 数据操纵语言 | DML | insert update delete | 表内数据增改删 |
| 数据定义语言 | DDL | create alter drop truncate | 库表结构管理 |
| 数据控制语言 | DCL | grant revoke | 账号权限管控 |
| 事务控制语言 | TCL | commit rollback | 事务提交回滚 |
深度功能扩展说明
约束管理功能
sql 支持主键约束,唯一约束,非空约束,外键约束,检查约束,在建表或者修改表的时候添加,从数据库层面保证数据完整性,避免重复空值,脏数据入库。
索引功能
sql 支持创建删除索引,索引可以提升 select 查询速度,但是会降低 insert update delete 写入效率,是数据库性能优化非常重要的功能。
视图功能
视图是基于 select 查询生成的虚拟表,本身不存储真实数据,可以简化复杂多表联查语句,同时可以隐藏敏感字段,起到一定数据保护作用。
存储过程与函数
部分数据库支持存储过程自定义函数,可以把多段 sql 封装成程序块,支持变量判断循环,适合重复执行的复杂业务逻辑,注意 sqlite3 对存储过程支持比较弱。
聚合统计功能
内置 count sum avg max min 聚合函数,搭配 group by 分组,完成数据汇总统计,是报表业务的核心能力。
学习 sql 语言功能的操作步骤
第一步 先区分五大类 sql,分清 DQL DML DDL DCL TCL 各自用途,不要混淆修改表结构和修改表数据的语句
第二步 优先学习 DQL 查询,这是最核心内容,掌握 where order by group by having join 联查
第三步 学习 DML 增删改,重点记住 update delete 不加 where 的风险
第四步 学习 DDL 建表修改表,熟悉字段类型主键外键约束
第五步 学习 TCL 事务,理解批量操作开启事务提升性能和回滚机制
第六步 了解 DCL 权限,还有索引视图这些扩展功能,根据自己使用的数据库确认是否支持
整体总结,sql 语言具有查询,数据增改删,库表结构定义,权限控制,事务管理五大核心功能,属于声明式数据库标准语言,不同数据库在高级特性比如存储过程全外连接上会有少量语法差异,但是基础五大类功能全部兼容,掌握这套功能体系之后,就可以独立完成数据库日常维护,业务开发,数据统计相关工作。
【常见问题】
问题 1 sql 语言具有的 DQL 主要作用是什么
回答 1 sql 语言具有的 DQL 也就是数据查询语言,核心就是 select 语句,用来检索数据表数据,支持筛选分组多表联查,是 sql 语言具有功能里面使用最多的部分。
问题 2 sql 语言具有 DDL 和 DML 有什么区别
回答 1 sql 语言具有的 DDL 是修改库表结构,DML 是修改表里面的数据,这是 sql 语言具有功能分类里面最容易混淆的两个模块。
问题 3 sql 语言具有事务控制功能有什么意义
回答 1 sql 语言具有事务控制 TCL 功能,可以实现 commit 提交和 rollback 回滚,保证一组 sql 操作原子性,这是 sql 语言具有功能里面保障数据一致性的重要能力。
问题 4 sqlite3 里面 sql 语言具有全部功能都支持吗
回答 1 sqlite3 基础 DQL DML DDL TCL 功能都支持,但是 DCL 权限以及存储过程这类高级功能支持不完善,学习 sql 语言具有功能的时候要注意这个跨库差异。
【免责申明】
本文内容仅作为 SQL 基础知识学习参考,不同数据库厂商对标准 sql 扩展特性支持程度存在差异,具体语法细节请以对应数据库官方文档为准,相关业务操作请提前测试。


