上一篇我们完成了 Linux 系统的系统学习,掌握了数据项目的服务器环境基础;本篇我们聚焦数据持久化存储的核心载体 —— 数据库,它是结构化业务数据、算法训练元数据最主流的存储方案,熟练掌握数据库概念与 SQL 逻辑,是开展统计分析、数据挖掘工作的必备能力。
一、数据库相关概述
1.1 数据库基础定义
数据库是长期存储在计算机内、有组织、可实现多用户共享的数据集合。 和传统文件存储相比,文件形式的数据很难支持多用户精细化协同管理,而数据库可以实现结构化的数据规整存放,支持多人同时访问读写,还能维护多张数据表之间的关联约束,保障数据的一致性、安全性,适配规模化的数据处理需求。
1.2 数据库两大主流分类
关系型数据库 特征是采用二维行列表格的形式存储数据,表与表之间可以建立严谨的关联关系,技术体系成熟稳定,适合结构化业务数据存储,常见产品有 MySQL、Oracle、DB2、SQL Server 等。
非关系型数据库 不局限于二维表格结构,以键值对、文档等更灵活的形式存储数据,横向拓展能力更强,适配高并发、海量非结构化数据场景,常见产品有 Redis、MongoDB 等。
1.3 业务实体的三类关联关系
现实业务场景里,数据实体之间存在固定的对应模式:
一对一:两个实体严格一一绑定,例如一家企业仅对应一位法定代表人;
一对多:一个主实体可以对应多条子实体数据,例如一个班级包含多名学生、一个部门下辖多名员工;
多对多:两个实体可以互相匹配多条数据,例如学生和选修课,一名学生能选多门课程,一门课程也能被多名学生选修。
二、MySQL 数据库环境搭建
2.1 服务端安装的两种方案
官方安装包手动部署:可以自主调整服务各项配置参数,适合有运维基础、需要精细化定制环境的场景;
集成化面板一键安装:自动化完成基础配置环节,降低新手的部署门槛,快速搭建可用的数据库服务。
2.2 命令行访问登录方式
本地环境可以采用明文填写身份信息、隐藏密码密文填写两种方式登录本地 MySQL 服务;如果要访问远程服务器上的数据库,需要补充填写远程主机地址、开放端口、合法账号信息完成远程登录;日常运维也可以通过系统进程工具查看 MySQL 服务的运行状态,判断服务是否正常启动。
2.3 可视化管理工具
除了原生命令行操作,还可以使用带图形界面的可视化工具管理数据库,比如 DataGrip、PyCharm 内置的数据库面板,这类工具可以通过点击操作完成建库、建表、数据查询、结构修改全流程工作,大幅降低日常操作的学习成本。
三、SQL 语句基础规范与四大分类
3.1 SQL 四大功能划分
SQL 是操作关系型数据库的标准化语言,按照职能分为四大类别:
DDL 数据定义语言:负责数据库、数据表的结构管控,完成创建、删除、修改库表架构这类底层结构操作;
DML 数据操纵语言:直接管控表内存储的业务数据,实现数据新增、删除、内容更新;
DQL 数据查询语言:从数据表中提取目标数据,是数据统计、分析环节使用频率最高的分类;
DCL 数据控制语言:负责账号权限管控,完成权限授予、权限回收这类运维安全操作。
3.2 SQL 通用编写特性
语句既可以单行写完,也可以拆分多行排布,提升复杂语句的可读性;
语句关键字大小写不敏感,大写、小写写法的执行效果完全一致;
支持单行、多行两种注释格式,用来标注逻辑说明、备注内容;
可以合理使用缩进、换行优化排版,让多层嵌套的逻辑更易阅读维护。
四、细分场景 SQL 操作逻辑详解
4.1 数据库(库级)全生命周期管理
针对数据库本身可以完成全套管理操作:创建全新的数据库、删除闲置废弃的数据库、修改已有数据库的配置参数、查看当前服务器内所有已创建的数据库,同时可以切换指定数据库,将它设置为后续所有操作的默认操作对象。
4.2 数据表(表级)结构管理
针对库内的数据表,支持灵活的结构调整能力:创建符合业务字段规则的新数据表、删除不再使用的数据表、对已有数据表重命名;还能精细化调整表结构,比如新增数据列、移除冗余列、修改已有列的名称、数据类型、约束规则等。
4.3 表内数据增删改管理
对表内业务数据可完成三类基础变更:向表内单条或批量新增数据、按精准条件删除无效数据、按限定范围更新已有数据内容;其中删除、更新操作必须严格设置筛选边界,避免误操作改动整张表的全部数据。
4.4 数据查询核心体系(数据分析重点)
4.4.1 单表查询技巧
可以完成基础字段筛选、重复结果去重;搭配聚合统计函数实现计数、求和、最大值、最小值、平均值这类常规统计计算;区分两类筛选逻辑:先按条件过滤原始明细数据再分组统计、先完成分组统计再对分组结果做二次筛选;同时支持分页设置,控制单次接口返回的数据行数,适配大批量数据分批读取的场景。
4.4.2 多表关联查询方案
针对存在关联关系的多张数据表,有多种连接模式适配不同统计需求:
交叉连接:返回两张表所有数据两两组合的笛卡尔积结果;
内连接:仅返回两张表能匹配上关联条件的交集数据;
左外连接:以左表的全部数据为基准,匹配右表符合条件的内容,左表无匹配项的字段会保留空值;
右外连接:以右表的全部数据为基准,匹配左表符合条件的内容,右表无匹配项的字段会保留空值;
全外连接:合并两张表所有匹配、不匹配的全部数据,一般可以通过两次左右连接的结果合并去重实现效果。
4.4.3 窗口函数进阶统计能力
普通分组统计会把同组多行数据合并为单行输出,而窗口函数可以在完成数据分组划分的同时,保留原始明细的每一行记录,在每行数据后同步输出分组统计、组内排序的结果,适配复杂的精细化统计场景。 窗口函数分为两大方向:
聚合类窗口函数:复用计数、求和、最值这类常规聚合能力,配合分组规则,在分组内完成统计计算;
排序类窗口函数:实现分组内的名次排序,支持生成连续行号、跳跃排名、连续排名等多种排序逻辑; 还可以搭配分区划分、排序规则,实现多层级的精细化统计拆分。