MySQL数据库(1) 基础介绍
专栏链接:【点击转跳】
文章目录
1. 什么是数据库
存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据内容的查询和管理能力
- 文件不利于存储海量数据
- 文件在程序中控制不方便
数据库存储介质:
- 磁盘
- 内存
为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。
我们安装的mysql,是mysql数据库的客户端:

而mysqld( d则是daemon,表示守护进程和sshd类似 ) 就是mysql的服务器端:

所以我们的mysql本质是一种网络服务;是一种基于TCP协议的CS(客户服务端)模式的一种网络服务;是一套给我们提供数据存取服务的网络程序。

⚠️:在口语中,我们有个数据库的叫法,一般指的是:在磁盘或者内存中存储的特定结构组织的数据 —— 将来在磁盘上存储的一套数据库方案。
所以综上,数据库的本质:就是对数据内容存储的一套解决方案,你给我字段或者要求,数据库则负责处理好给结果!
2. 基本使用
2.1 连接服务器
这条命令用于连接 MySQL 数据库:
mysql -h 127.0.0.1 -P 3306 -u root -p
mysql:启动 MySQL 命令行客户端。-h 127.0.0.1:指定数据库服务器地址。127.0.0.1表示本机。-P 3306:指定服务器端口,MySQL 默认端口通常是3306。这里的P是大写。-u root:指明登录的具体用户,这里是使用root用户登录( MySQL 里的超级管理员账号,数据库最高权限用户 )。-p:指明你需要输入该用户的密码(密码不会显示在屏幕上),没有设置密码该选项可以忽略。
连接成功后会进入 MySQL 提示符,通常是 mysql>,之后就可以输入 SQL 语句,例如 SHOW DATABASES; 查看数据库列表。

⚠️:如果没有写 -h 127.0.0.1 默认是连接本地,如果没有写 -P 3306 默认是连接3306端口号
直接输入
quit就能退出
2.2 服务器,数据库,表关系
- 所谓
安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。 - 为保存应用中实体的数据,一般会在数据库中创建多个
表,以保存程序中实体的数据。 - 数据库服务器、数据库和表的关系如下:

2.3 使用案例
- 创建数据库:
create database 库的名字;
我这里创建一个
hellowrold的数据库
此时在/var/lib/mysql路径下我们发现多了个目录:
而且是目录的形式:
所以创建一个数据库,本质就是Linux下的一个目录
- 选择(或者使用)特定数据库:
use helloworld;

- 创建数据库表
create table student(
id int,
name varchar(32),
gender varchar(2)
);
此时我们就将这个表建立好了

此时我们发现在/var/lib/mysql/helloworld路径下面多了个文件:

所以在数据库内建表,本质就是在Linux下创建对应的文件。
- 表中插入数据:
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;

问题:所以这些工作是谁做的?
答:mysqld服务帮我们做的,其实数据库本质也是文件!!只不过这些文件并不由程序员直接操作,而是由数据库帮助我们操作。

2.4 数据逻辑存储

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

mysql客户端没什么好说的,服务端分三层:
- 第一层 链接池(
Connection Pool): 当有链接访问服务端时,用来对链接进行管理和认证,保证数据的安全。 - 第二层 类似编译器: 对
sql语句进行分析,转化成第三层看得懂的指令 - 第三层 存储引擎: 有不同种类的存储引擎(
因为数据的类型不同,所采用的存储方案不同,针对不同场景可以选择使用不同引擎),上层下达指令后,对指令进行解释,然后去访问指定数据库和表结构,对数据进行增删查改(其实上三层本质都属于用户层) - 图片上的第四层,则是
mysql依赖的最底层的文件系统(linux的是ext4),然后mysql通过该系统将数据以二进制的方式存储到特定的目录下!( 属于系统层 )
所以Mysql依然是一个文件系统,不过是基于OS文件系统之上的一套存储解决方案。
5. SQL语句分类
DDL【data definition language】数据定义语言,用来维护存储数据的结构
代表指令:create, drop, alterDML【data manipulation language】数据操纵语言,用来对数据进行操作
代表指令:insert, delete, updateDML中又单独分了一个DQL,数据查询语言,代表指令:select
DCL【Data Control Language】数据控制语言,主要负责权限管理和事务
代表指令:grant, revoke, commit
6. 存储引擎
6.1 存储引擎定义
存储引擎是: 数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的具体实现方法,说人话就是,在mysql中真正具体做事情的。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
6.2 查看存储引擎
show engines;

6.3 存储引擎对比

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐






所有评论(0)