MySQL 作为一款关系型数据库管理系统,主要用于数据存储、数据管理和数据查询等,以下是具体介绍:
数据存储与管理
- 数据组织:可以将数据以表格的形式进行存储,每个表格由行和列组成,就像日常生活中的表格一样,行代表- 具体的记录,列代表不同的字段。例如,在一个存储用户信息的表格中,列可能包括用户 ID、姓名、年龄、邮箱等,每一行则对应一个具体的用户记录。
- 数据类型支持:支持多种数据类型,如整数、浮点数、字符串、日期时间等。这使得它能够适应各种不同类型数据的存储需求。比如,存储用户年龄可以使用整数类型,存储用户的简介可以使用字符串类型,存储用户的注册时间可以使用日期时间类型。
- 数据完整性约束:通过定义主键、外键、唯一键、非空约束等,确保数据的准确性和一致性。比如,在用户表中,可以将用户 ID 定义为主键,保证每个用户都有唯一的标识;将邮箱字段设置为唯一键,确保每个邮箱地址只被使用一次。
- 数据备份与恢复:提供了多种数据备份和恢复的方法和工具,如可以使用mysqldump命令将数据库中的数据导出为 SQL 文件,在需要时再通过命令将数据导入到数据库中,实现数据的备份和恢复,保障数据的安全性和可用性。
数据查询与操作
- 数据查询:使用 SQL(结构化查询语言)来实现对数据的查询操作。用户可以通过编写简单或复杂的 SQL 语句,从数据库中获取所需的数据。例如,要查询年龄大于 18 岁的用户信息,可以使用SELECT * FROM users WHERE age
18;这样的 SQL 语句。
- 数据插入、更新和删除:能够通过 SQL 语句进行数据的插入、更新和删除操作。比如,要插入一条新的用户记录,可以使用INSERT INTO users (name, age, email) VALUES (‘张三’, 20,
‘zhangsan@example.com’);语句;要更新用户的信息,可以使用UPDATE users SET age = 21
WHERE name = ‘张三’;语句;要删除一条用户记录,可以使用DELETE FROM users WHERE name =
‘张三’;语句。- 数据聚合与分析:支持对数据进行聚合操作,如计算总和、平均值、最大值、最小值等,还可以进行分组、排序等操作,方便进行数据分析。例如,要计算每个年龄段的用户数量,可以使用SELECT
age, COUNT(*) FROM users GROUP BY age;语句。多用户与并发处理
- 多用户支持:允许多个用户同时连接到数据库,并进行各自的操作,每个用户可以根据自己的权限进行数据的查询、插入、更新等操作。比如,在一个企业的业务系统中,不同的员工可以根据自己的工作职责,同时访问和操作数据库中的数据。
- 并发控制:能够处理多个用户同时对数据库进行操作的情况,通过锁机制等技术来确保数据的一致性和完整性。例如,当多个用户同时对一条记录进行更新操作时,MySQL
会通过行级锁或表级锁等方式,保证在同一时间只有一个用户能够成功更新数据,避免数据冲突。与其他应用集成
- Web 应用集成:与各种 Web 开发技术和框架紧密结合,如 PHP、Python 的 Django 和 Flask 框架、Java 的 Spring 框架等。在 Web 应用中,MySQL
通常作为后端数据库,用于存储用户注册信息、文章内容、评论数据等,与前端的网页界面和后端的业务逻辑代码协同工作,为用户提供完整的 Web
服务。- 企业级应用集成:可以与企业级应用系统,如 ERP(企业资源计划)、CRM(客户关系管理)、OA(办公自动化)等进行集成,为这些系统提供数据存储和管理支持,帮助企业实现业务流程的信息化和自动化。
一、数据库是什么
文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
数据库存储介质:
- 磁盘
- 内存
为了解决上述问题,专家们设计出更加利于管理数据的东西 —— 数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。
mysql是数据库服务的客户端
mysqld是数据库服务的服务端
二、主流数据库
关系型数据库
- MySQL:如前文所述,是开源免费的数据库,性能卓越、可靠性高、跨平台性好,适用于 Web 应用、企业级应用等多种场景,在中小型项目中应用广泛。
- Oracle:由 Oracle 公司开发,以功能强大、稳定性高、安全性强著称,提供了全面的数据管理和分析功能,支持大规模的数据处理和高并发访问,在大型企业、金融机构等对数据可靠性和安全性要求极高的领域应用广泛。
- SQL Server:是微软推出的关系型数据库管理系统,与 Windows 操作系统紧密集成,安装和使用较为方便,功能丰富,性能稳定,在 Windows 环境下的企业级应用中使用较多。
- PostgreSQL:是一种开源的关系型数据库,以其强大的功能、高度的可扩展性和标准兼容性而闻名。它支持复杂的 SQL 特性和多种数据类型,适用于对数据处理要求较高的科研、金融等领域。
非关系型数据库
- MongoDB:是一种流行的文档型数据库,以 BSON(Binary JSON)格式存储数据,具有高度的灵活性和可扩展性,适用于处理非结构化和半结构化数据,如 Web 应用中的用户生成内容、日志数据等,在互联网行业、移动应用开发等领域应用广泛。
- Redis:是一款内存数据库,具有超高的读写速度,主要用于缓存、消息队列、实时数据处理等场景。它支持多种数据结构,如字符串、哈希表、列表、集合等,能够快速地进行数据的存储和读取,提高应用的性能和响应速度。
- Cassandra:是一个分布式的 NoSQL 数据库,具有高度的可扩展性和容错性,能够处理大规模的结构化和半结构化数据,适用于需要处理海量数据和高并发读写的场景,如互联网公司的用户行为数据、物联网数据存储等。
HBase:是基于 Hadoop 的列存储数据库,主要用于存储和处理大规模的非结构化和半结构化数据,适用于大数据处理和分析场景,常与 Hadoop 生态系统中的其他组件一起使用,如 MapReduce、Hive 等,用于构建大数据处理平台。
图数据库
- Neo4j:是一个开源的图数据库管理系统,以图结构存储和处理数据,节点和关系可以包含属性,能够高效地处理复杂的关系数据,适用于社交网络分析、知识图谱、推荐系统等领域,能够快速地查询和遍历图中的数据,发现数据之间的关联关系。
三、初步了解使用
连接服务器
mysql -h 127.0.0.1 -p 3306 -u root -p
-h表示指明部署了mysql服务的主机
-p表示我们要访问的端口号
-u表示我们要登录的用户
-p指明我们要输入密码
没写-h 127.0.0.1表示默认是连接本地
没写-p 3306 表示默认连接的3306端口号
服务器、数据库、表关系
mysql是数据库服务的客户端
mysqld是数据库服务的服务端
mysql是一套给用户提供数据存取服务的网络程序
数据库一般是指,在磁盘或者在内存中存储的特定结构组织的数据。
一般的文件提供了数据存储的功能,但是文件并没有提供非常好的数据管理能力。
数据库的本质是对数据内容存储的一套解决方案,用户提供数据与要求,数据库直接给结果。
所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据
建立数据库,本质就是Linux的一个目录
在数据库内建表,本质就是在Linux下数据库目录下的一个文件。
数据库本质也是文件,只不过这些文件不由用户直接操作,而是数据库服务帮我们进行操作
MySQL的存储逻辑
四、MySQL架构
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
连接层:
处于最上层,主要负责处理客户端的连接请求,使用 TCP/IP 协议与客户端通信。具体工作包括建立连接(从线程池中分配线程与客户端连接 )、身份验证(依据用户名、客户端主机地址和密码进行鉴权)和安全管理(按用户权限限制操作)。
服务层(SQL 层)是 MySQL 的核心部分,包含诸多组件:
- 系统管理组件:提供丰富的数据库管理功能,如备份恢复、安全管理、复制管理、集群管理以及分区、分库、分表管理和元数据管理等。
- SQL 接口:接收用户的 SQL 命令,处理数据操作语言(DML)和数据定义语言(DDL),还包括存储过程、视图、触发器等功能的处理 。
- SQL 解析器:对 SQL 语句进行词法分析、语义分析,生成语法树,并检查语法是否正确。若缓存中有对应的语句,则直接返回结果,不再进行后续操作。
查询优化器:对解析后的 SQL 语句进行优化,比如选择合适的索引、确定数据读取方式和表的连接顺序等,以生成最优的执行计划。 - 缓存:包含全局和引擎特定的缓存,如查询缓存、表缓存、记录缓存、key 缓存、权限缓存等。若查询缓存命中,可直接获取数据,提升查询效率。
存储引擎层:负责数据的存储与读取,是 MySQL 的特色所在,采用插件式架构。不同存储引擎有各自的优缺点和适用场景,常见的如:
- InnoDB:MySQL 5.5 版本之后的默认存储引擎,支持事务处理、行级锁和外键约束,数据和索引可存储在共享表空间或独立表空间,适用于对数据一致性要求高的场景,如电商交易、银行转账等。
- MyISAM:不支持事务和外键,访问速度快,数据和索引分开存储,适合以查询和插入操作为主,对事务完整性要求不高的场景,如博客系统、新闻网站。
- MEMORY:将数据存储在内存中,数据处理速度快,但服务关闭后数据会丢失,适合临时数据存储和缓存。
存储层:
主要将数据存储在运行于裸设备的文件系统上,并与存储引擎交互。涉及多种物理文件,如 redolog(重做日志)、undolog(回滚日志)、binlog(二进制日志)、errorlog(错误日志)、querylog(查询日志)、slowlog(慢查询日志) 、data(数据文件)、index(索引文件)等 ,不同存储引擎的文件存储格式和组织方式有所不同。
4.1 存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎
查看存储引擎
show engines
五、SQL分类
- DDL【data definition language】 数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter - DML【data manipulation language】 数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令: select - DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,comm