前言
数据库:简单来说,存放数据、管理数据的仓库,即数据库。它与生活当中的图书馆是类似的,图书馆可以用来存放图书、管理图书、检索图书等操作。
数据库划分为两大类:
- 传统的关系型数据库(RDBMS) – 通过表与表之间、行与列之间的关系进行数据的存储,类似 EXCEL 。以 MySQL、oracle、Sql Server、DB2 等为代表。虽然关系型数据库被称为传统的数据库,但其实现代的 SQL 已经可以处理 json、数组、对象等非结构化数据或半结构化数据,关系型数据库也在跟上时代的步伐。
-
非关系型数据库(NOSQL,NoSQL = Not Only SQL)– 以 Redis、mongodb为代表。人们根据使用场景的不同,又将 NoSQL 做了四大类的划分:
- KV 型 NoSQL(Key-Value Store) – KV 即 key-value,以存储键值对的形式的非关系型数据库。Redis 就是其中的代表之一。这一类数据库的数据基于内存,在数据的读写速度上非常地快。
- 列式型 NoSQL(Wide-Column Store) – 在大数据领域中使用较多,以 Hbase 为典型代表之一。关系型数据库管理系统的数据是以一行一行的形式进行存储,可理解为 行式存储,其在物理磁盘上即占用连续的扇区,当拥有海量的数据时,这是一个致命伤。而采用列式存储进行查询时,只有指定的列的数据才会被读取,而不是整列。这一类数据库的特点是——查找速度快、可扩展性强、更容易分布式扩展。
- 文档型 NoSQL(Document Store) – 所有的数据都存储在文档中,格式为 JSON 或 xml。ES(Elastic search)就是典型的代表之一,它存储数据的格式为 json,倒排索引数据结构实现的全文检索;MongoDB 也是典型的代表之一。通常而言,文档型 NoSQL 在许多方面借鉴了关系型数据库管理系统,换言之,如果你对关系型数据库管理系统非常了解,上手文档型 NoSQL 也是非常容易的。
- 图式型 NoSQL(Graph Store) – 该类通常使用图形节点进行表示。
术语
DB:database,数据库
DBMS(database management system,数据库管理系统):它是一个软件或引擎,用来执行 SQL 语言,对数据库里的数据进行操作与访问,使用到的是 SQL 语言(Structure Query Language,结构化查询语言)。
DBA(Database Administrator):数据库管理员,属于运维下面的一个分支岗位
CRUD:针对关系型数据库的增删改查,即 create(增)、delete(删)、update(改)、Retrieve(检索),取首字母的简称。
SQL:就相当于为数据库指定的一套标准语言,绝大部分都通用,有些则有细微的差别,例如 Oracle 用的是 PL-SQL,Sql Server 则用的是T-SQL。
结构化数据:数据遵守格式、长度等标准规范,且能用二维的表格进行呈现与表示。关系型数据库管理系统就是一个典型例子。
非结构化数据:数据结构不完整或不规范,不方便使用二维表格进行呈现与表示。比如邮件、日志、图片、音频、视频等。
半结构化数据:前两者的结合,比如 xml、html、json 等。
SQL 语言标准划分
主要从两个维度进行划分:
-
国际标准 – 由 ANSI/ISO 制定,相关信息如下表所示:
版本 核心特性 意义 SQL-86 (1986年) 首个官方标准 奠定 SQL 基础语法 SQL-89 扩展完整性约束 对初版的轻微修订 SQL-92 (SQL2) 引入连接操作、子查询、视图 被广泛采用的里程碑版 SQL:1999 (SQL3,也称 SQL-99) 支持递归查询、触发器、面向对象特性 首个分模块发布的标准 SQL:2003 增加窗口函数、序列生成器 强化分析能力 SQL:2008 增强窗口函数、支持TRUNCATE 优化事务控制 SQL:2011 支持时态数据管理 历史数据追踪能力 SQL:2016 原生JSON支持、行模式识别 适应非结构化数据处理 SQL:2019 多维数组支持、SQL 路径表达式 扩展复杂数据类型操作 SQL:2023 最新标准(2023年发布) 持续增强功能 绝大多数的数据库完全支持 SQL-92 的核心规范,但对后续标准的支持则呈现选择性,这就需要使用者查阅官方网站的文档。例如 MySQL 5.x 仅部分实现 SQL:2003 窗口函数,但在 MySQL 8.x 中则完全支持。
-
厂商标准 – 各厂商在标准 SQL 基础上添加专属扩展语法,例如 Oracle 的 PL-SQL,Sql Server 的 T-SQL。厂商添加非标准的私有扩展语法在行业中是非常普遍的。
功能分类
人们根据 SQL 语言发挥功能的不同,又有了功能分类:
- DDL(Data Definition Language) – 数据定义语言,主要定义库与表等这些对象。
- DML(Data Manipulation Language) – 数据操作语言,主要指的是
insert
、update
、delete
这些关键字 - DQL(Data Query Language) – 数据查询语言,主要指的是
select
关键字 - DCL(Data Control Language) – 数据控制语言
- TCL(Transaction Control Language) – 事务控制语言
请注意!SQL 版本 ≠ 功能分类
MySQL 分类
许可类型分类
- MySQL Community Server – 开源免费版本,遵循 GPL 协议。
- MySQL Enterprise Edition – 商业付费版本,提供企业级扩展功能。
- MySQL Cluster – 分布式数据库解决方案(商业或社区版)。
版本分类
主要有三大版本:
-
MySQL 5.x 系列 – 已结束主流支持的历史版本。
- 5.0(2005年)
- 5.1(2008年)
- 5.5(2010年)
- 5.6(2013年)
- 5.7(2015年)
-
MySQL 8.x 系列 – 当前主流支持版本。次要版本主要有:
- 8.0(2018)
- 8.1-8.3 – bug 修复
- 8.4(2024) – 首次推出 LTS 版,LTS 是建议生产环境下的使用版本
-
MySQL 9.x 系列 – 创新版本,类似尝鲜版本。尝鲜版本也具有生产环境的品质,只不过生命周期比较短而已。
预期的发布图如下:
相关参阅 —— https://endoflife.date/mysql
