【MySQL】认识MySQL

🔥个人主页🔥:孤寂大仙V
🌈收录专栏🌈:MySQL
🔖流水不争,争的是滔滔不


在这里插入图片描述

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤寂大仙v

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值