MySQL--数据库基础

数据库概念

简单来说,数据库 ​ 是一个有组织、可长期存储在计算机内、可共享、统一管理的数据集合 。你可以把它想象成一个电子化的文件柜,但功能要强大得多。管理数据库的软件称为数据库管理系统 ,我们常说的 DBMS,比如 MySQL、Oracle、SQL Server、PostgreSQL 等。

数据库优点

相比传统的文件存储,数据库解决了以下核心问题:

持久化:数据不会因为程序关闭而丢失。

高效存取:能快速地从海量数据中查询、更新信息。

数据共享与安全:多用户可安全并发访问,并有权限控制。

数据一致性:通过事务等机制,保证数据的准确和完整。

减少冗余:好的设计可以避免数据重复存储。

数据库主要类型

关系型数据库

核心概念:基于"关系模型",数据以二维表的形式组织。

关键术语:

表:存储数据的主体,如"学生表"、"课程表"。

行/记录:表中的一条数据,代表一个实体。

列/字段:表的属性,如"学号"、"姓名"。

主键:唯一标识一条记录的字段。

外键:建立表与表之间关联的字段。

优点:数据结构清晰,支持复杂的查询和事务处理,数据一致性高。

缺点:在处理海量、非结构化或高并发读写时,扩展性可能受限。

代表产品:MySQL, PostgreSQL, Oracle, SQL Server。

非关系型数据库

核心概念:不局限于固定的表结构,设计灵活,针对不同的应用场景有不同的数据模型。

主要类型:

文档型:数据存储类似 JSON 文档。代表:MongoDB, CouchDB

键值型:简单的键-值对存储。代表:Redis, Memcached

列存储型:按列族存储数据,适合大数据分析。代表:HBase, Cassandra

图数据库:用节点和边存储关系数据。代表:Neo4j

优点:schema灵活,易于水平扩展,读写性能高。

缺点:通常不支持复杂的跨文档/集合的事务和关联查询。

基本使用

连接服务器

复制代码
mysql -h 127.0.0.1 -P 3306 -u root -p

注意: 如果没有写-h 127.0.0.1 默认是连接本地,如果没有写-P 3306 默认是连接3306端口号。

服务器、数据库、表关系

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

概念 计算机世界 图书馆比喻 说明
服务器 一台运行数据库软件的物理 / 虚拟计算机 整个图书馆大楼 提供存放和管理的物理 / 逻辑空间
数据库 数据库管理系统中的一个逻辑数据容器 图书馆中的一个专题书库(如 "计算机科学书库"、"文学书库") 按主题或应用划分的逻辑单元
数据库中存储数据的二维结构 书库中的一个具体书架(如 "编程语言书架"、"小说书架") 存储具体同类数据的结构
行 / 记录 表中的一行数据 书架上的一本具体的书 一个独立的实体 / 对象
列 / 字段 表中的一列属性 书的一个属性(如书名、作者、ISBN 号) 实体的属性 / 特征

使用案例

创建数据库

复制代码
create database helloworld;

使用数据库

复制代码
use helloworld;

创建数据库表

复制代码
create table student(
    id int,
    name varchar(32),
    gender varchar(2)
};

表中插入数据

复制代码
insert into student(id,name,gender) values(1,'张三','男');

查询表中数据

复制代码
select * from student;

存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

MySQL的核心就是插件式存储引擎,支持多种存储引擎。

特性 InnoDB MyISAM MEMORY ARCHIVE
事务支持 ✅ 支持 (ACID) ❌ 不支持 ❌ 不支持 ❌ 不支持
锁的粒度 行级锁 表级锁 表级锁 行级锁
外键约束 ✅ 支持 ❌ 不支持 ❌ 不支持 ❌ 不支持
数据恢复 支持崩溃后安全恢复 恢复能力弱 数据丢失 不支持
存储限制 64TB 256TB 受内存限制 无明确限制
存储文件 .frm (结构) + .ibd (数据 & 索引) .frm + .MYD (数据) + .MYI (索引) 仅内存 .frm + .arz
MVCC ✅ 支持(高并发基石) ❌ 不支持 ❌ 不支持 ❌ 不支持
全文索引 ✅ MySQL 5.6+ 支持 ✅ 支持 ❌ 不支持 ❌ 不支持
适用场景 默认选择,OLTP 只读 / 读多写少,OLAP 临时表 / 缓存 日志 / 归档
InnoDB

MySQL 5.5 之后默认的存储引擎。除非有特殊需求,否则永远使用 InnoDB。

核心特性:

事务安全:完全支持 ACID 特性,是 OLTP 应用的基础。

行级锁:只锁住需要修改的行,极大提高并发写性能。

外键约束:保证数据的一致性和完整性。

MVCC:多版本并发控制,读写不互斥,是高性能高并发的基础。

聚集索引 :数据文件本身(.ibd)就是主键索引的 B+ 树,数据按主键顺序物理存储。因此 InnoDB 必须有主键,且主键查询极快。

支持热备份:可以通过工具在线备份而不锁表。

MyISAM

MySQL 5.5 之前的默认引擎,现已不推荐在新项目中使用。

核心特性:

表级锁:任何写操作都会锁住整张表,并发性能差。

不支持事务:崩溃后数据可能不一致。

非聚集索引 :索引和数据是分开的(.MYI 和 .MYD 文件),索引保存的是数据行的地址指针

压缩表:对于不常修改的数据,可压缩存储,节省空间。

全文索引:早期版本中只有 MyISAM 支持全文索引。

致命缺点

(1)写操作会锁定全表,在写并发高的场景下是性能杀手。

(2)崩溃后数据恢复困难。

相关推荐
粉嘟小飞妹儿2 小时前
mysql如何通过防火墙保护MySQL权限_MySQL网络层安全配置
jvm·数据库·python
2301_803538952 小时前
如何高效批量删除SQL数据_使用脚本分段删除降低压力
jvm·数据库·python
老苏畅谈运维2 小时前
服务器重启后数据库无法打开,记一次ORA-00600 [2252]故障修复记
数据库·oracle
2401_897190552 小时前
MySQL升级导致排序规则变化怎么处理_更新Collation配置
jvm·数据库·python
zhangchaoxies2 小时前
uni-app怎么动态生成二维码 uni-app利用插件生成分享码方法【技巧】
jvm·数据库·python
2402_854808372 小时前
如何在可视化编辑器中回滚错误的结构修改_通过事务或备份快速恢复元数据
jvm·数据库·python
粉嘟小飞妹儿2 小时前
c++如何监控指定文件夹内文件的新增与删除事件记录【实战】
jvm·数据库·python
小高Baby@2 小时前
CGO_ENABLED=0 导致 SQLite 驱动初始化失败
数据库·sql·golang·ai编程
数厘2 小时前
2.19 sql限制查询(LIMIT、分页查询实现)
数据库·sql·oracle