MySQL数据库基础

目录

1.数据库的基本概念

2.主流数据库

3.基本使用

3.1连接服务器

3.2服务器管理

3.3服务器,数据库,表关系

3.4使用案例

3.5数据逻辑存储

4.MySQL框架

5.SQL分类

6.存储引擎

6.1存储引擎概念

6.2查看存储引擎

6.3存储引擎对比


1.数据库的基本概念

(1)数据库概念:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,是长期存储在计算机内、有组织、可共享的大量数据的集合。

(2)存储数据文件就可以了,那为什么需要数据库呢?

文件存储数据存在以下主要不足:

  • 安全性隐患较突出
  • 数据查询和管理效率较低
  • 难以应对海量数据存储需求
  • 在程序中的控制操作不够便捷

为解决这些问题,专家们开发了数据库这一工具,它能更高效地进行数据管理。

(3)数据存储介质:磁盘与内存

(4)数据库系统由服务器端和客户端两部分组成。MySQL服务器本质上是一个网络服务程序,当使用mysql命令连接时,实际上是客户端向服务器发起连接请求。成功建立连接后,客户端会将用户输入的SQL语句发送给服务器端,服务器则根据收到的SQL指令执行相应的数据操作。

  1. MySQL 是数据库服务的客户端程序

  2. mysqld 是数据库服务的服务器端程序

  3. MySQL 本质上是一个基于 C/S(客户端/服务器)架构的网络服务

2.主流数据库

主流数据库概述

下面列举一些主流的数据库:

SQL Server

微软开发的数据库产品,深受.NET程序员青睐,适合中大型项目开发。

Oracle

甲骨文公司推出的企业级数据库,擅长处理大型项目和复杂业务逻辑,但并发性能通常不如MySQL。

MySQL

全球最流行的开源数据库(现属甲骨文公司),具有出色的并发性能,广泛应用于电商、社交网络和论坛等领域。其优势在于简单SQL查询的高效处理,但对复杂业务支持较弱。

PostgreSQL

由加州大学伯克利分校开发的关系型数据库,完全开源免费(包括私用、商用和学术研究),允许自由修改和分发。

SQLite

轻量级关系型数据库,完全兼容ACID特性。其设计目标是为嵌入式系统服务,整个数据库以小型C库形式存在,内存占用极低(仅需几百KB),已广泛应用于各种嵌入式产品。

H2

使用Java开发的嵌入式数据库,本质上是一个可直接集成到应用程序中的类库。

3.基本使用

3.1连接服务器

连接参数说明:

-h:指定MySQL服务器主机地址

-p:设置访问端口号(可通过参数变量配置,默认3306)

-u:指定登录用户名

-p:输入登录密码

注意:若不指定 -h 127.0.0.1 参数,系统默认连接本地地址。

若未设置 -P 3306 参数,系统默认使用 3306 端口。

3.2服务器管理

输入 quit 命令可退出 MySQL 服务器连接

要重启 MySQL 服务器,可以使用命令:systemctl restart mysqld

也可以分两步操作:

  1. 停止服务:systemctl stop mysqld
  2. 启动服务:systemctl start mysqld

3.3服务器,数据库,表关系

安装数据库服务器实际上是在计算机上部署一个数据库管理系统(DBMS)。该系统能够同时管理多个数据库,开发人员通常为每个应用程序单独创建一个数据库。

在具体应用中,数据库通过建立多个数据表来存储实体信息。

数据库服务器、数据库与数据表之间的关系可概括为:

上图说明:

DB:数据库

Client:MySQL客户端

MySQL:MySQL服务端

3.4使用案例

1.创建数据库

执行show databases;命令后,可以看到新增的helloworld数据库已出现在列表中。

2.使用数据库

3.创建数据库表(我们可以理解为cd到对应的数据库目录当中)

4.表中插入数据

5.查询表中的数据

3.5数据逻辑存储

表格数据采用二维结构呈现,包含行和列两种维度。示例如下:

4.MySQL框架

MySQL 是一款高度可移植的数据库系统,支持包括 Unix/Linux、Windows、Mac 和 Solaris 在内的主流操作系统。尽管不同系统在底层实现上存在差异,但 MySQL 能够确保其物理体系结构在各平台间保持高度一致。

从图中可以看出,MySQL的架构主要分为以下四层:

  1. 连接层(Connection Layer)
  • 负责处理客户端连接请求
  • 包含连接池、身份验证等功能
  • 典型应用场景:数据库连接管理、用户权限验证
  • 示例:当Java应用通过JDBC连接MySQL时,首先会经过这一层进行账号验证
  1. 服务层(Server Layer)
  • 核心功能层,包含查询解析、优化、执行等
  • 主要组件:
    • 查询解析器(SQL Parser)
    • 查询优化器(Optimizer)
    • 缓存(Cache)
  • 处理流程示例:SELECT语句首先被解析为语法树,然后优化器选择最优执行计划
  1. 存储引擎层(Storage Engine Layer)
  • 负责数据的存储和提取
  • 支持多种存储引擎(InnoDB、MyISAM等)
  • 关键功能:
    • 事务处理(ACID)
    • 锁机制
    • 索引实现
  • 应用场景:InnoDB适合需要事务支持的OLTP系统
  1. 文件系统层(File System Layer)
  • 实际数据存储层
  • 包括:
    • 数据文件(.ibd)
    • 日志文件(redo log)
    • 配置文件
  • 典型文件示例:
    • ibdata1: 系统表空间文件
    • ib_logfile0: 重做日志文件

各层之间通过定义良好的接口进行通信,这种分层架构使得MySQL具有很好的扩展性和灵活性。

5.SQL分类

DDL(数据定义语言)

用于定义和维护数据库结构

常用指令:CREATE, DROP, ALTER

DML(数据操纵语言)

用于操作数据库中的数据

常用指令:INSERT, DELETE, UPDATE

DQL(数据查询语言)

DML 的子分类,专门用于数据查询

核心指令:SELECT

DCL(数据控制语言)

负责权限管理和事务控制

常用指令:GRANT, REVOKE, COMMIT

6.存储引擎

6.1存储引擎概念

什么是存储引擎呢?

数据存储引擎是数据库管理系统的核心组件,它负责实现数据的物理存储、索引构建以及数据更新和查询等功能。

6.2查看存储引擎

执行SHOW ENGINES;命令可查看当前数据库支持的存储引擎列表。

6.3存储引擎对比