【MySQL学习】认识MySQL数据库

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
简介: 【MySQL学习】认识MySQL数据库

一、什么是数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库作为最重要的基础软件,是确保计算机系统稳定运行的基石。


数据库的概念实际包括两层意思:

  1. 数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。
  2. 数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。

虽然存储数据也可以使用文件,但是利用文件保存数据存在以下缺点:

  • 文件的安全性问题
  • 文件不利于数据的查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中不方便控制

因此为了解决数据的存储和管理问题,设计出来更加利于管理数据的数据库,它能够有效的管理数据。同时对数据库的掌握水平也是衡量一个程序员水平的重要指标

二、主流数据库

  • SQL Server:Microsoft 公司推出的关系型数据库管理系统,具有使用方便可伸缩性好与相关软件集成程度高等优点。
  • Oracle:甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务,对简单的SQL处理效果好。
  • PostgreSQL:是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。
  • SQLite:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2:是一个Java编写的关系型数据库,它可以被嵌入Java应用程序中使用,或者作为一个单独的数据库服务器运行。

三、MySQL数据库的基本使用

3.1 MySQL的安装

3.2 MySQL服务器管理

启动服务器:

systemctl start mysqld

重启服务器:

systemctl restart mysqld

关闭服务器:

systemctl stop mysqld

设置服务器随系统启动:

systemctl enable mysqld

3.3 连接MySQL服务器

mysql -h 127.0.0.1 -P 3306 -u root -p

说明:

  • -h:指定主机地址,如果没有则默认的本地地址
  • -P:指定MySQL服务器的端口号,如果没有则默认为3306
  • -u:指定登录MySQL的用户
  • -p:指定通过密码登录

3.4 MySQL服务器,数据库与表之间的关系

  1. 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  2. 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

MySQL服务器,数据库与表之间的关系图如下:

3.5 使用案例

  • 创建数据库
create database db_test;
  • 使用数据库
use
 db_test;
  • 创建数据库表
create table student(
  id int,
  name varchar(32),
  gender varchar(2)
);
  • 表中插入数据
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
  • 查询表中的数据
select * from student;


3.6 数据存储

数据逻辑存储:

当使用select * from student语句进行查询的时候,我们会发现数据好像是存放在一张表结构当中的,这其实就是数据的逻辑存储。

数据实际存储:

MySQL创建的数据库和各种表结构实际都是文件的形式存放到磁盘上的,通过MySQL的配置文件/etc/mu.cnf就可以找到数据库中数据实际的存储路径:

可以发现,数据实际上是默认存放在/var/lib/mysql目录下的,可以发现该目录中存放这许多数据库相关的文件:

其中db_test就是刚才创建的数据库,实际在文件系统中也表现为一个目录。继续查看该目录:

其中db.opt文件实际上是指明当前数据库的默认字符编码以及字符校验规则

student.frm文件存放的是表结构数据,student.ibd文件存放的是表的内容以及索引数据。它们都是以二进制的方式进行存放的,因此只有使用MySQL数据库才能查看到实际的内容。

表结构:

表内容:

四、MySQL架构

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。


MySQL架构主要分为四层:

1.连接层

主要提供与MySQL服务器的连接的支持,支持Java,C,Python等连接MySQL服务器。

2.服务层

服务层是MySQL的核心,主要包括系统管理和控制工具、连接池、SQL接口、解析器、查询优化器、缓存六个部分。

  1. 系统管理和控制工具:例如备份恢复、安全管理、集群管理等。
  2. 连接池:负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接。
  3. SQL接口:用于接收客户端发出的各种SQL命令,并且返回用户需要的查询结果,比如DML,DDL,存储过程,触发器,视图等。
  4. 解析器:负责将SQL请求转换成一个SQL解析树,然后根据MySQL的规则校验SQL是否合法。
  5. 查询优化器:当解析树通过解析器语法检查之后,将交由优化器转化成执行计划与存储引擎层交互。
  6. 缓存:缓存机制是由一系列小缓存组成,比如表缓存,记录缓存,权限缓存,引擎缓存等。如果查询缓存有命中的结果,则直接返回缓存的数据。

3.存储引擎层

存储引擎负责MySQL中的数据存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,可插拔。服务器中的查询存储引擎通过接口与存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异,现在有多种存储引擎,各有各种特点,常见的是MyISAM和InnoDB。

4.系统文件层

系统文件层主要负责将数据和日志存储的文件系统上,并完成与存储引擎层的交互,是文件的物理存储层。主要包括日志文件,数据文件,配置文件,pid文件,socket文件等。

五、SQL分类

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL语句可分为以下三类:

  • DDL(Data Definition Language)数据定义语言,用来维护存储数据的结构。比如create语句、drop语句、alter语句等。
  • DML(Data Manipulation Language)数据操作语言,用来对数据进行操作。比如insert语句、delete语句、update语句等。
  • DCL(Data Control Language)数据控制语言,主要负责权限管理和事务。比如grant语句、revoke语句、commit语句。

说明以下,DML中又单独分了一个DQL(Data Query Language)数据查询语言,比如select语句、from语句、where语句等。

六、存储引擎

6.1 定义

存储引擎就是数据库管理系统如何存储数据、如何为存储的数据建立索引、如何更新数据、如何查询数据等技术的实现方法,MySQL中的存储引擎是插件式的存储引擎,它可以支持多种存储引擎。

6.2 查看存储引擎

通过show engines语句可以查看MySQL支持的存储引擎。比如:

其中MySQL底层默认使用的存储引擎是InnoDB,该存储引擎支持事务、行级锁、外键等。

6.3 存储引擎对比


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
存储 关系型数据库 MySQL
探索MySQL:关系型数据库的基石
MySQL,作为全球最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于各种Web应用、企业级应用和数据仓库中
|
6天前
|
关系型数据库 MySQL 网络安全
Mysql 数据库主从复制
在MySQL主从复制环境中,配置了两台虚拟机:主VM拥有IP1,从VM有IP2。主VM的`my.cnf`设置server-id为1,启用二进制日志;从VM设置server-id为2,开启GTID模式。通过`find`命令查找配置文件,编辑`my.cnf`,在主服务器上创建复制用户,记录二进制日志信息,然后锁定表并备份数据。备份文件通过SCP传输到从服务器,恢复数据并配置复制源,启动复制。检查复制状态确认运行正常。最后解锁表,完成主从同步,新用户在从库中自动更新。
915 6
Mysql 数据库主从复制
|
7天前
|
缓存 运维 关系型数据库
数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。
|
3天前
|
SQL 关系型数据库 MySQL
学习mysql中使用inner join,left join 等
学习mysql中使用inner join,left join 等
|
6天前
|
关系型数据库 数据库 RDS
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
29 0
|
10天前
|
XML 关系型数据库 MySQL
支付系统----微信支付19---集成MyBatis-plus,数据库驱动对应的依赖版本设置问题,5没版本没有cj这个依赖,mysql驱动默认的是版本8,这里是一个父类,数据库都有,写个父类,继承就行
支付系统----微信支付19---集成MyBatis-plus,数据库驱动对应的依赖版本设置问题,5没版本没有cj这个依赖,mysql驱动默认的是版本8,这里是一个父类,数据库都有,写个父类,继承就行
|
10天前
|
Java 关系型数据库 MySQL
使用MySQL JDBC连接数据库
使用MySQL JDBC连接数据库
|
12天前
|
XML Java 关系型数据库
Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了
Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了
|
12天前
|
关系型数据库 MySQL 数据库
关系型数据库mysql数据增量恢复
【7月更文挑战第3天】
126 2
|
12天前
|
关系型数据库 MySQL Shell
关系型数据库mysql数据完全恢复
【7月更文挑战第3天】
83 2