MySQL学习一:数据库基础

60 阅读5分钟

注意:这里所使用的数据库都是MySql

1、什么是数据库

首先,要聊数据库,那么,数据库是什么肯定是需要讲清楚的。

我们在自己的 Linux 上所安装的 MySql 里面包含了两个:mysqlmysqld


eg:

root@LAPTOP-UVPN73B8:~# which mysql
/usr/bin/mysql
root@LAPTOP-UVPN73B8:~# which mysqld
/usr/sbin/mysqld

(以我的 Linux 为例)


mysql:这个 mysql 就是我们使用的客户端。

mysqld:这个 mysqld 就是客户端所对应的服务端。

数据库:数据库就是用户通过 mysql 向服务端发送请求,然后,服务端在硬盘 / 内存中产生用于存储数据的特殊结构的文件。——简单来说,数据库就是硬盘 / 内存中一种用于存储数据的特殊结构的文件(一种二进制文件)。


eg

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| helloworld         |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

屏幕截图 2025-09-09 212039.png 借助这个例子我们就可以知道数据库其实就是一个文件夹(DB)。


Extra:

​ 为什么要用数据库,而不直接使用文件呢?文件夹不是已经可以用来存储数据吗?

​ 我们可以假设一种场景:有一个文件里面存储着十亿个 ip 地址,而我们上司要求我们在这十亿个 ip 地址中找到所有 120 开头的 ip 地址,这时候我们程序员还需要进行二次编码,然后才能够完成这个任务;而假如我们使用的是数据库来存储数据的,那么这时候我们只需要向客户端发送请求,然后客户端会直接向服务端发送相对应的请求,服务端再对这个请求进行相对应的处理,然后就能完成任务,这样就可以提高程序员的工作效率了。

2、数据库的登录基本选项

-h:后面跟上指定的 ip 地址就能够登上相对应主机的数据库了。

-P:后面跟上指定的 port 端口号就能够登上对应端口号上的数据库了。

-u:后面跟上指定的用户名就能够登上该数据库下的对应用户账号了。

-p:后面跟上对应的密码就能直接登上数据库的对应用户帐号了。——这也是可以将账号对应密码进行回显登录的方法。

:在登录数据库的时候和登录 Linux 的用户账号时一样,正常密码是不会回显的。

3、服务器,数据库,表的关系

下面,我使用一张图来直接展示这几个之间的关系。

屏幕截图 2025-09-09 213834.png


eg:

我们平常使用浏览器的时候会产生对应的数据,例如:浏览记录,收藏,标签页。此时,在该浏览器对对应的数据库中就是产生了对应的表,比如表一存储浏览记录,表二存储收藏,表三存储标签页。

所以数据库本质是对应的文件夹以及相应的子文件。

4、使用案例

创建数据库

mysql> create database helloworld;
Query OK, 1 row affected (0.01 sec)

展示所有的数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| helloworld         |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

使用数据库

mysql> use helloworld;
Database changed

创建表格

mysql> create table students(
    -> name varchar(32),
    -> age int,
    -> gender varchar(2)
    -> );
Query OK, 0 rows affected (0.06 sec)

对表格插入数据

mysql> insert into students(name, age, gender) values ("张三", 20, "男");
Query OK, 1 row affected (0.01 sec)

mysql> insert into students(name, age, gender) values ("李四", 20, "男");
Query OK, 1 row affected (0.01 sec)

mysql> insert into students(name, age, gender) values ("王五", 20, "男");
Query OK, 1 row affected (0.01 sec)

mysql> insert into students(name, age, gender) values ("赵六", 20, "男");
Query OK, 1 row affected (0.02 sec)

展示表格中的数据

mysql> select * from students;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 张三   |   20 ||
| 李四   |   20 ||
| 王五   |   20 ||
| 赵六   |   20 ||
+--------+------+--------+
4 rows in set (0.00 sec)

在这里,有点像链表中的物理结构和逻辑结构的感觉,而这里所展示出来的就是逻辑结构。

5、MySQL架构

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、

Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体

系结构的一致性。

下面我将借助这张图对 MySQL 的架构进行简单的讲解。

屏幕截图 2025-09-09 221308.png

首先,第一层就是服务器进行连接和安全性检验。

然后,第二层就是类似于编译器对命令进行语法和词法分析。

最后,第三层就是选择对应的存储引擎。

这三层就相当于计算机体系结构中的用户层 / 网络协议中的应用层。


查看 MySQL 对应的存储引擎的指令

show engines;

屏幕截图 2025-09-09 221847.png


第三层下面的就是对应的 硬盘 / 内存 存储。

这一层就相当于计算机体系结构中的 OS 层。

6、SQL 的种类(了解一下即可)

  • DDL【data definition language】 数据定义语言,用来维护存储数据的结构

代表指令: create, drop, alter

  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作

代表指令: insert,delete,update

  • DML中又单独分了一个DQL,数据查询语言,代表指令: select

  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务

代表指令: grant,revoke,commit

7、存储引擎对比

屏幕截图 2025-09-09 222558.png 存储引擎我就聊两个:MyISAM,InnoDB。

MyISAM 的并发程度比较高,适合存储大型文件。

而 InnoDB 的使用场景很多,80%的场景可以使用 InnoDB 存储文件。