阅读导航
- 引言
- 一、什么是数据库
- 二、MySQL基本使用
-
- [1. 连接服务器](#1. 连接服务器)
- [2. 服务器,数据库,表关系](#2. 服务器,数据库,表关系)
- [3. MySQL架构](#3. MySQL架构)
- [4. SQL分类](#4. SQL分类)
- 三、存储引擎
-
- [1. 基本概念](#1. 基本概念)
- [2. 查看存储引擎](#2. 查看存储引擎)
- [3. 存储引擎对比](#3. 存储引擎对比)
引言
踏上MySQL的征途,让我们从数据库的基础知识启航,一同探索构建高效数据存储与检索的奥秘。本文将作为我们深入MySQL世界的起点,揭开数据库管理的神秘面纱,为后续的创作与实践奠定坚实的基础。
一、什么是数据库
数据库顾名思义就是存储数据的,你是不是跟我有一样的疑问:存储数据用文件就可以了,为什么还要弄个数据库?
虽然文件系统是存储数据的一种基本方式,但它在面对复杂数据管理需求时存在诸多局限性。具体来说,文件存储数据存在以下几个显著的不足:
-
安全性问题:文件系统的权限管理相对简单,难以提供细粒度的数据访问控制,增加了数据泄露或被非法访问的风险。
-
查询与管理不便:随着数据量的增长,使用文件来检索特定信息变得低效且复杂。数据库系统则通过索引、查询优化等技术,极大提升了数据检索的速度和准确性,同时提供了丰富的数据管理工具,便于数据的管理和维护。
-
扩展性受限:文件系统在处理海量数据时,不仅性能会显著下降,而且难以有效地进行数据的备份、恢复和迁移。数据库系统则通过分布式存储、数据分片等机制,支持海量数据的存储和处理,同时保证了数据的可用性和可扩展性。
-
程序集成难度大:文件在程序中直接操作不仅繁琐,而且容易出错。数据库系统提供了统一的接口(如SQL语言),简化了数据访问的逻辑,降低了程序出错的风险,并提高了开发效率。
为了克服文件存储的这些缺点,数据库应运而生。数据库不仅可以将数据存储于磁盘等持久化介质上,还可以利用内存来加速数据的访问和处理。数据库的设计初衷就是更高效、更安全、更灵活地管理数据,它的出现极大地推动了信息技术的发展。
因此,掌握数据库技术,特别是像MySQL这样的主流数据库系统,已经成为衡量一个程序员技术水平的重要指标之一。
二、MySQL基本使用
1. 连接服务器
bash
mysql -h 127.0.0.1 -P 3306 -u root -p
-
-h 127.0.0.1
:这个选项指定了要连接的MySQL服务器的主机地址。127.0.0.1
是一个特殊的IP地址,代表本地计算机(也称作回环地址或localhost)。如果你想要连接到网络上的另一台服务器,你需要将127.0.0.1
替换为那台服务器的IP地址或域名。(PS:如果没有写-h 127.0.0.1
默认是连接本地) -
-P 3306
:这个选项用于指定MySQL服务器监听的端口号。如果MySQL服务器正在使用非默认端口,你需要通过-P
选项来指定正确的端口号。(PS:如果没有写-P 3306
默认是连接3306端口号) -
-u root
:这个选项用于指定连接数据库时所使用的用户名。 -
-p
:这个选项告诉MySQL命令行客户端提示用户输入密码。
成功连接服务器以后就可以通过SQL语句来进行数据库的后续操作了,这些相关知识后续博主会详细介绍,感兴趣的话可以关注一波不错过。
2. 服务器,数据库,表关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
- 数据库服务器、数据库和表的关系如下:
3. MySQL架构
从MySQL的架构图,我们可以看出MySQL的架构自顶向下大致可以分为网络连接层、数据库服务层、存储引擎层和系统文件层四大部分。
⭕详细介绍可以看:一文搞懂MySQL体系架构
4. SQL分类
-
DDL 是数据定义语言,它主要用于定义或修改数据库的结构 。通过这些指令,我们可以创建新的数据库、表、视图等对象,也可以删除或修改已存在的这些对象。DDL中的代表性指令包括
CREATE
(用于创建新对象)、DROP
(用于删除对象)、以及ALTER
(用于修改对象的结构)。 -
DML 是数据操纵语言,它允许用户对数据库中的数据进行增、删、改等操作 。DML的主要目的是处理存储在数据库中的数据,而不涉及数据结构的修改。其中的代表性指令有
INSERT
(用于向表中插入新数据)、DELETE
(用于从表中删除数据)、以及UPDATE
(用于修改表中的数据)。- 在DML中,还单独划分出了DQL 作为数据查询语言 ,它专门用于从数据库中检索或查询数据。DQL的核心指令是
SELECT
,它允许用户根据各种条件从数据库表中选择并返回数据。
- 在DML中,还单独划分出了DQL 作为数据查询语言 ,它专门用于从数据库中检索或查询数据。DQL的核心指令是
-
DCL 是数据控制语言,它主要负责数据库的安全性和完整性管理,包括权限控制和事务管理 。通过DCL,数据库管理员可以为用户或角色授予或撤销对数据库对象的访问权限,以及控制事务的提交或回滚。DCL中的代表性指令有
GRANT
(用于授予权限)、REVOKE
(用于撤销权限)、以及COMMIT
(用于提交事务)。
三、存储引擎
1. 基本概念
存储引擎是数据库管理系统(DBMS)中用于实现数据存储、索引构建、数据更新与查询等核心功能的技术组件。它定义了数据库如何物理地存储数据在底层存储设备上,包括数据的组织方式、索引机制以及数据操作(如插入、删除、更新和查询)的执行策略。不同的存储引擎可能采用不同的数据结构、算法和优化技术,以满足不同的性能、可靠性、一致性和可扩展性需求。因此,选择适合的存储引擎对于数据库系统的整体性能和效率至关重要。
📌MySQL的核心就是插件式存储引擎,支持多种存储引擎
2. 查看存储引擎
查看指令:
bash
show engines;
3. 存储引擎对比
特性/数据库引擎 | MyISAM | BDB | Memory | InnoDB |
---|---|---|---|---|
Transactions (commit, rollback etc.) | 否 | 是 | 否 | 是 |
Locking Granularity | 表 | 页 | 行 | 行 |
MVCC/Snapshot Read | 否 | 否 | 否 | 是 |
Geospatial Support | 未知 | 未知 | 未知 | 是 |
B-Tree Indexes | 是 | 是 | 是 | 是 |
Hash Indexes | 否 | 否 | 是 | 否 |
Full Text Search Index | 否 | 否 | 否 | 是 |
Clustered Index | 否 | 否 | 否 | 是 |
Data Caches | 未知 | 未知 | 未知 | 是 |
Index Caches | 未知 | 未知 | 未知 | 是 |
Compressed Data (via function) | 否 | 否 | 是 | 否 |
Encrypted Data (via function) | 否 | 否 | 是 | 否 |
Storage Cost (space used) | 低 | N/A | 高 | 非常 |
Memory Cost | 中等 | 未知 | 未知 | 未知 |
Bulk Insert Speed | 未知 | 未知 | 未知 | 是 |
Cluster Database Support | 否 | 否 | 否 | 是 |
Replication Support | 否 | 否 | 否 | 是 |
Foreign Key Support | 否 | 未知 | 否 | 是 |
Backup/Point-in-Time Recovery | 否 | 未知 | 未知 | 是 |