《MySQL数据库基础》1. 数据库基础

💡Yupureki:个人主页

✨个人专栏:《C++》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》


🌸Yupureki🌸的简介:


目录

[1. 数据库基础](#1. 数据库基础)

[1.1 什么是数据库?](#1.1 什么是数据库?)

[1.2 为什么需要数据库?](#1.2 为什么需要数据库?)

[1.3 主流数据库](#1.3 主流数据库)

[2. 使用数据库](#2. 使用数据库)

[2.1 连接服务器](#2.1 连接服务器)

[2.2 服务器,数据库,表之间的关系](#2.2 服务器,数据库,表之间的关系)

[2.3 使用案例](#2.3 使用案例)

[3. 数据库引擎](#3. 数据库引擎)

[3.1 数据引擎概念](#3.1 数据引擎概念)

[3.2 常见的 MySQL 数据库引擎](#3.2 常见的 MySQL 数据库引擎)


1. 数据库基础

1.1 什么是数据库?

简单来说,数据库 是一个有组织的数据集合,它以电子方式存储在计算机系统中,并且可以被方便、高效地访问、管理和更新。

你可以把它想象成一个超级智能的电子仓库

  • 传统文件系统 就像一堆散落在仓库地面上的文件盒,标签混乱,找东西全靠人工翻找,而且一个人拿走了,别人就看不了。

  • 数据库 则像一个配备了专业管理员、索引系统、安全门禁和自动检索机器的现代化仓库。数据被分门别类、整齐地摆放在架子上,你可以通过复杂的条件快速找到需要的数据,多人可以同时访问而不会互相干扰,还能确保数据的安全和完整。

数据库的核心是数据库管理系统(DBMS,Database Management System),它是一个软件,充当用户(或应用程序)和数据库之间的接口,负责所有数据的存储、检索、更新、安全控制等操作。

1.2 为什么需要数据库?

存储数据用文件就可以了,为什么还要弄个数据库?

文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

数据库存储介质:

  • 磁盘
  • 内存

为了解决上述问题,专家们设计出更加利于管理数据的东西--数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。

1.3 主流数据库

关系型数据库 (Relational Database)这是目前最主流、最成熟的数据库类型。它将数据组织成我们熟悉的二维表格 形式(行和列),表与表之间可以通过共同的字段(如ID)建立关系 。它们使用SQL(结构化查询语言) 进行数据操作。

  • 特点 :强调数据一致性、完整性、支持复杂查询(如多表连接)。

  • 适用场景:金融系统(银行转账)、企业管理系统(ERP、CRM)、电商网站(订单、库存管理)等对数据准确性要求极高的场景。

主流产品:

  1. Oracle:由甲骨文公司开发,功能极其强大,性能卓越,安全性高,是大型企业级应用的首选,但价格昂贵。

  2. MySQL:开源免费(也有商业版),性能好,社区活跃,是互联网公司最流行的选择之一,常与PHP、Python配合开发Web应用。现属甲骨文公司旗下。

  3. Microsoft SQL Server:微软公司开发,与Windows生态、.NET开发语言集成度高,图形化管理界面友好,深受使用微软技术栈的企业青睐。

  4. PostgreSQL:功能强大的开源对象-关系型数据库,以其对SQL标准的高度兼容性、丰富的扩展性和稳定性著称,被誉为"开发者最爱",近年来发展迅猛。

  5. SQLite:一个轻量级的、嵌入式的数据库,它就是一个文件,无需安装和配置,广泛用于移动应用(如Android、iOS)和桌面软件的本地存储。

而我们一般使用的是MySQL,本系列博客也是主要讲解MySQL

2. 使用数据库

2.1 连接服务器

mysql -h 127.0.0.1 -P 3306 -u root -p

  • -h:后面跟要登陆MySQL主机的ip地址
  • -P:后面跟MySQL服务器的端口号
  • -u:后面跟要登陆的账户
  • -p:表明要输入密码

注意:

一开始以root账号登陆MySQL时是不需要输入密码的,但是到后面要设置密码

登陆后:

2.2 服务器,数据库,表之间的关系

  • MySQL 服务器(Server)

    指的是运行着的 MySQL 数据库管理系统(DBMS)实例 。它是一个后台进程(或一组进程),是一个服务器(MySQLD) ,负责监听客户端(MySQL)的连接请求、处理 SQL 语句、管理内存、控制并发访问、保证数据安全等。

  • 数据库(Database)

    在 MySQL 中,数据库是一个 逻辑容器 ,用于组织和管理相关的数据对象(如表、视图、存储过程、函数等)。

    每个数据库拥有独立的命名空间,不同数据库中的表可以重名而互不影响。

    在 MySQL 中,"数据库"和"模式(Schema)"是等价的概念(CREATE DATABASECREATE SCHEMA 效果相同)。

  • 表(Table)

    表是数据库中存储数据的 基本结构 。它由行(记录)和列(字段)组成,每一列都有特定的数据类型和约束。

    数据最终是以行记录的形式存储在表中。一个数据库通常包含多张表,每张表负责存储某一类实体的数据(例如用户表、订单表)。

关系图:

2.3 使用案例

查看数据库

show databases;

创建数据库

create database 数据库名字;

使用数据库

use 数据库名字;

在数据库中创建表

create table 表名字(

......(数据类型)

);

查看表

show tables;

向表中插入数据

insert into 表名字 (表数据类型.......) values (具体值);

查看表的数据

select * from 表名字;

3. 数据库引擎

3.1 数据引擎概念

数据库引擎(也称为存储引擎)是数据库管理系统(DBMS)中负责数据存储、检索、更新和管理的核心软件模块。它定义了数据在磁盘或内存中的存储方式、索引结构、事务支持、锁定机制以及并发控制等底层实现细节。

在 MySQL 中,采用了插件式存储引擎架构,这意味着你可以根据不同的业务需求,为表选择不同的存储引擎,甚至动态加载新的引擎。

3.2 常见的 MySQL 数据库引擎

引擎名称 主要特点 适用场景
InnoDB 默认引擎,支持事务(ACID)、行级锁、外键、崩溃恢复。 需要高并发、事务完整性、数据一致性要求高的系统(如电商、金融)。
MyISAM 不支持事务,表级锁,读取速度快,占用空间小。 以查询为主、极少更新、不需要事务支持的应用(如数据仓库、日志记录)。
MEMORY 数据全部存储在内存中,读写极快,但重启后数据丢失。 临时表、缓存、会话管理等对速度要求极高且可丢失的数据。
CSV 数据以逗号分隔的文本文件存储,便于与其他应用交换数据。 数据导入/导出、与电子表格软件交互。
Archive 仅支持插入和查询(不支持更新/删除),使用 zlib 压缩,节省空间。 日志归档、历史数据存储。
Blackhole 写入的数据会被丢弃,但会正常记录 binlog,常用于复制架构中的分发器。 数据复制过滤、性能测试。
Federated 不存储数据,远程访问其他 MySQL 服务器的表。 分布式查询、数据整合。
Merge 将多个 MyISAM 表合并为一个逻辑表。 数据分区、归档查询。
NDB (Cluster) 内存集群引擎,支持高可用、分布式、无共享架构。 电信、实时应用等高可用、高吞吐场景。

注意 :不同 MySQL 版本和发行版支持的引擎可能略有差异,可通过 SHOW ENGINES 查看当前环境支持的所有引擎。

一般MySQL中绝大多数场景用的引擎都是InnoDB

相关推荐
CodeMartain16 小时前
Redis为什么快?
数据库·redis·缓存
Anastasiozzzz18 小时前
深入研究RAG: 在线阶段-查询&问答
数据库·人工智能·ai·embedding
她说..21 小时前
Java 对象相关高频面试题
java·开发语言·spring·java-ee
wd5i8kA8i21 小时前
自研多线程 SSH 极速文件传输助手(附 GitHub 源码)
运维·ssh·github
watson_pillow21 小时前
c++ 协程的初步理解
开发语言·c++
庞轩px21 小时前
深入理解 sleep() 与 wait():从基础到监视器队列
java·开发语言·线程··wait·sleep·监视器
卤炖阑尾炎21 小时前
基于 MySQL 主主复制 + HAProxy+Keepalived 构建高可用集群实战
数据库·mysql
Dxy123931021621 小时前
MySQL 如何高效删除大量数据:策略与最佳实践
数据库·mysql·oracle
徐小夕21 小时前
我用 AI 撸了个开源"万能预览器":浏览器直接打开 Office、CAD 和 3D 模型
前端·vue.js·github
故事和你9121 小时前
洛谷-算法1-2-排序2
开发语言·数据结构·c++·算法·动态规划·图论