《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

相关推荐
杰克尼2 小时前
苍穹外卖--day08
java·数据库·spring boot·mybatis·notepad++
xyyaihxl2 小时前
【MySQL】复合查询
数据库·mysql
m0_716667072 小时前
NumPy入门:高性能科学计算的基础
jvm·数据库·python
enmouhuadou2 小时前
快速运行matlab仿真方法
开发语言·matlab
lierenvip2 小时前
SQL 建表语句详解
java·数据库·sql
zuguangboy2 小时前
【Oracle-无效的参数绑定】DateTimeOffset映射TIMESTAMP WITH LOCAL TIME ZONE踩坑记
数据库·oracle
未来龙皇小蓝2 小时前
【MySQL-索引调优】02:单列索引
数据库·mysql·性能优化
m0_706653232 小时前
使用C-Free进行浮点变量的四则运算指南
c语言·开发语言
剑锋所指,所向披靡!3 小时前
MySQL数据的增删改查
java·数据库·mysql