前言
数据库是一个开发程序员必须要具备的一项技能,本期开始我们学习目前世界上最流行的数据库 ---- MySQL,等学完了MySQL再去学习其他的如 oracle、mongoDB、redis等成本会小很多。
目录
[1.1 数据库的定义与本质](#1.1 数据库的定义与本质)
[1.2 数据的分类](#1.2 数据的分类)
[2.1 MySQL的本质](#2.1 MySQL的本质)
[2.2 连接服务器](#2.2 连接服务器)
[2.3 MySQL的使用案例](#2.3 MySQL的使用案例)
[2.4 服务器、数据库、表的关系](#2.4 服务器、数据库、表的关系)
[5.1 查看存储引擎](#5.1 查看存储引擎)
[5.2 存储引擎对比](#5.2 存储引擎对比)
一、什么是数据库
1.1 数据库的定义与本质
**数据库是一款对数据进行存储和管理的服务类软件。**它通过磁盘或内存,利用特定的数据结构和数据模型(如关系型、文档型、键值型)对数据进行组织和管理。
数据库的本质 提供了一套高效、可靠的 数据存取解决方案。
有了文件为啥还会有数据库?
文件虽然可以存储数据了,但是在数据的管理方面有明显的局限性。主要如下:
1、文件不利于数据的查询和管理
2、文件不利于存储海量的数据
3、文件在操作过程中存在安全问题
1.2 数据的分类
按照数据模型可以将数据库分为:关系型数据库和非关系型数据库
关系型数据库有:MySQL、Oracle、SQL Server等
-
MySQL:开源关系型数据库,广泛应用于Web应用和中小型系统。
-
Oracle:商业关系型数据库,功能强大,适用于大型企业和高并发场景。
-
SQL Server:微软的关系型数据库,与Windows平台集成紧密,适合企业级应用
非关系型数据库有:MongoDB、Redis、Neo4j等
-
文档型数据库:以文档(如JSON或BSON格式)存储数据,适合存储复杂、半结构化数据。
- MongoDB:流行的文档型数据库,支持动态查询和高扩展性,广泛用于Web应用。
-
键值型数据库:以键值对的形式存储数据,适合存储简单的、结构化程度较低的数据。
- Redis:高性能的键值存储数据库,常用于缓存、会话管理和实时数据处理。
-
图数据库:以图结构存储数据,适合处理复杂关系和网络数据。
- Neo4j:流行的图数据库,广泛用于社交网络分析、推荐系统等。
我们这里主要学习的就是世界上最受欢迎的数据库 ---- MySQL
二、MySQL的基本使用
2.1 MySQL的本质
在安装MySQL时会安装两个东西:mysql和 mysqld

这两个又是啥呢?其实要理解他两,我们得先理解MySQL整体是啥。
MySQL 本质是一套基于 CS 模式的 提供可靠的数据存取的 网络服务程序。
mysql 是数据库服务的 客户端。
mysqld 是数据库服务的 服务端。
2.2 连接服务器
在命令行输入如下指令:
bash
mysql -h host_ip -P host_port -u username -p
选项解释
- -h:指定登录部署了 mysql 服务的主机,如果不写 -h 127.0.0.1 则默认是连接本地;
- -P:指定要访问的端口号,如果不写 -P 3306 则默认是连接 3306 的端口号。
- -u:指定登录用户,默认为 root。
- -p:表示需要输入密码。
注意:因为当前这里没有进行用户的管理操作,所以登录时不用输密码,后期专门在用户管理的那一期处理,现在一开始先把MySQL用起来。
2.3 MySQL的使用案例
注意:
1、以下工作实际都是mysql(客户端)让mysqld(服务端)做的。
2、我们这里先是见一见MySQL的基本操作,后面会详细的介绍。
• 创建数据库
bash
create database db_name;

• 查看数据库
bash
show databases;

• 删除数据库
bash
drop database db_name;

• 使用数据库
bash
use db_name;

• 创建数据库表
bash
create table 表名(字段1 字段1类型, 字段2 字段2类型, 字段n 字段n 类型);

• 在表中插入数据
bash
insert into 表名(字段名1, 字段名2, ..., 字段n) values(值1, 值2..., 值n);

• 查询表中数据
bash
select * from 表名;
注意:这里是查询表中的所有数据。

2.4 服务器、数据库、表的关系
• 所谓安装数据库服务,只是在机器上安装一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对一个应用创建一个数据库
• 为了保存应用中的实体数据,一般会在数据库中创建多个表,以保存程序中实体的数据
• 数据库服务器,数据库和表,三者的关系如下:

三、MySQL架构
• MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行。
• 各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。
MySQL的架构整体分为三层:
第一层 (数据库连接池这层):在这一层 MySQL 的主要工作是分别,用户管理、鉴别用户的合法身份、保证安全。
第二层 (SQL 接口组件所在的这层):主要对客户端下达过来的 SQL 语句进行词法分析、语法分析、对 SQL 语句做一定程度优化。
第三层 (InnoDB 这层):有不同的存储引擎,接收从上层转化调优后的 SQL 语句,再对这些语句进行解释,访问指定的数据库或表结构。


四、SQL分类
• DDL(data defintion language)数据定义语言,用来维护存储数据的结构
达标指令:create、drop、alter
• DML(data manpulation language)数据操纵语言,用来对数据进行操作
代表指令:insert、delete、updata
DML中有单独分了一个DQL,数据查询语言,代表指令:select
• DCL(data control language)数据控制语言,主要负责权限管理和事务
代表指令:grant、revoke、commit
五、存储引擎
存储引擎是:数据库管理系统如何存储数据,如何为存储数据建立索引和如何更新、查询数据等技术的实现方法。(类似于OS的驱动层)
MySQL 的核心就是插件式的存储引擎,支持多种存储引擎。
5.1 查看存储引擎

5.2 存储引擎对比
• 在 MySQL 中最常见的存储引擎是 MyISAM 和 InnoDB,其中 InnoDB 占到了 80% 以上。
