当前位置: 首页 > news >正文

【MySQL】数据库基本知识

目录

一、 为什么要有数据库?

二、常见主流数据库

1.关系型数据库(SQL)

2.非关系型数据库(NoSQL)

三、MySQL基础

1.连接服务器

2. 服务器,数据库,表关系

3. 基本使用

4. 操作示例

5. MySQL架构

6. SQL分类

7. 存储引擎


一、 为什么要有数据库?

为什么不用文件存储数据算了,还弄个数据库呢?

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

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

针对上述问题,数据库诞生了,它能更有效的进行数据管理,数据库的知识水平也成了程序员的重要素质之一。

二、常见主流数据库

1.关系型数据库(SQL)

关系型数据库基于表格模型,支持 SQL 查询,适合结构化数据存储,强调数据一致性。

  • MySQL:开源免费的轻量型关系型数据库,兼容性强、部署维护简单。核心用于中小型应用、互联网项目,是 Web 开发的首选数据库之一。
  • PostgreSQL:功能全面的开源关系型数据库,支持复杂查询、JSON 数据类型和自定义扩展。稳定性和扩展性突出,适合企业级应用、数据仓库和科研场景。
  • Oracle:商业闭源的企业级关系型数据库,性能强劲、安全性高,支持大规模数据处理和高并发。常用于金融、政府、电信等核心业务系统,收费较高。
  • SQL Server:微软推出的商业关系型数据库,易用性强、与 Windows 生态深度兼容。适合.NET 技术栈的企业应用,在中小型企业中应用广泛。

2.非关系型数据库(NoSQL)

非关系型数据库不依赖表格模型,灵活易扩展,适合非结构化 / 半结构化数据,侧重高并发和海量数据存储。

  • MongoDB:文档型 NoSQL 数据库,以 JSON 格式存储数据,无需预设 schema。灵活度高、扩展便捷,适合电商商品管理、内容平台、物联网等场景。
  • Redis:内存型 NoSQL 数据库,读写速度极快,支持字符串、哈希、列表等多种数据结构。核心用作缓存、会话存储、消息队列,提升应用响应速度。
  • Cassandra:分布式列存储 NoSQL 数据库,高可用、高扩展,支持跨区域部署。适合海量数据存储(如日志、用户行为数据),能应对高并发写入场景。
  • Elasticsearch:搜索引擎型 NoSQL 数据库,基于 Lucene 构建,擅长全文检索和数据分析。常用于日志分析、商品搜索、舆情监控等需要快速查询的场景。

三、MySQL基础

MySQL是以,以下皆为Linux系统下的MySQL相关操作,安装方式网上已有很多教程,这里不再赘述。

1.连接服务器

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

相关选项含义:

  • mysql:MySQL 数据库的客户端程序,用于启动与 MySQL 服务器的交互终端(执行 SQL 语句、管理数据库等)。
  • -h 127.0.0.1:-h 是 --host 的缩写,用于指定要连接的 MySQL 服务器的主机地址或 IP。这里 127.0.0.1 是本地回环地址,表示连接本机的 MySQL 服务器(也可用 localhost 代替)。
  • -P 3306:-P 是 --port 的缩写(注意是大写 P,小写 p 是密码相关参数),用于指定 MySQL 服务器的端口号。这里 3306 是 MySQL 的默认端口(若服务器未修改默认端口,此参数可省略)。
  • -u root:-u 是 --user 的缩写,用于指定登录 MySQL 服务器的用户名。这里 root 是 MySQL 的超级管理员用户(拥有最高权限)。
  • -p:-p 是 --password 的缩写,用于指定登录密码。这里单独使用 -p 时,执行命令后会提示用户输入密码(输入时密码不显示,更安全);若写成 -p123456 则直接在命令中携带密码(不推荐,易泄露)。

成功安装MySQL并启动服务后,可以用上面的命令连接MySQL服务。

2. 服务器,数据库,表关系

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

数据库服务器、数据库和表的关系如下:

注:DB即database(数据库)

可以看到MySQL服务器中维护着各种数据库,数据库中维护着各种表,而客户端访问服务器对数据进行操作。

3. 基本使用

  • 创建数据库
create database hellomysql;
  • 使用数据库
use hellomysql;
  • 创建数据库表
create table student(id int,name varchar(32),gender varchar(2)
);
  • 表中插入数据
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
  • 查询表中的数据
select * from student;

4. 操作示例

如果使用非root用户创建database失败,可以登录root用户后使用以下命令为用户赋予权限:

GRANT CREATE ON *.* TO 'username'@'host';

也可以暂时使用root用户进行学习,后续我会讲解用户管理相关内容。

5. MySQL架构

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux Windows 、 Mac 和 Solaris 。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

6. SQL分类

  • DDLdata definition language数据定义语言,用来维护存储数据的结构
        代表指令: create, drop, alter
  • DMLdata manipulation language数据操纵语言,用来对数据进行操作
        代表指令: insert delete update
        DML中又单独分了一个 DQL ,数据查询语言,代表指令: select
  • DCLData Control Language数据控制语言,主要负责权限管理和事务
        代表指令: grant revoke commit

7. 存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。

可以通过该命令查看存储引擎:

show engines;

以下是 MySQL 主流存储引擎的核心特性对比表(基于 MySQL 8.0 及 2025 年最新实践):

特性InnoDB(默认)MyISAMMemoryArchiveNDB ClusterColumnStoreRocksDB
事务支持✅ ACID 兼容 + 分布式事务(X/Open XA)❌ 非事务型❌ 无事务支持❌ 非事务型✅ 分布式事务(弱一致性)dev.mysql.com❌ 非事务型❌ 仅支持单行事务
锁粒度✅ 行级锁 + MVCC(高并发)❌ 表级锁(读多写少场景)❌ 表级锁(内存操作)✅ 行级锁(仅插入时)✅ 行级锁(自动分片)dev.mysql.com❌ 表级锁(批量操作)✅ 行级锁(基于 LSM-Tree)
索引类型聚簇 B + 树索引(主键索引存储数据) + 全文索引(MySQL 5.6+) + 空间索引非聚簇 B + 树索引 + 全文索引(原生支持)Hash/BTree(等值查询快,范围查询慢)❌ 不支持索引(全表扫描)哈希索引 + BTree(分布式索引)dev.mysql.com列存储索引(OLAP 优化)LSM-Tree(写入优化,随机读弱)
数据持久化✅ 磁盘存储 + 事务日志(Redo/Undo)✅ 磁盘存储(.frm/.MYD/.MYI)❌ 内存存储(重启丢失) + 可选持久化内存(PMEM 技术)✅ 磁盘存储(压缩格式.arz)✅ 分布式磁盘存储(多副本)dev.mysql.com✅ 磁盘存储(列式压缩)✅ 磁盘存储(LSM-Tree 结构)
存储容量64TB(单表)256TB(云存储扩展)2TB(内存限制)理论无上限(压缩比 10-15:1)64TB(集群)dev.mysql.com1PB(列式存储压缩)无明确上限(依赖磁盘)
适用场景通用场景(金融、电商、订单),高并发读写 + 事务强一致性读多写少(日志分析、报表) + 全文检索临时数据、缓存(如购物车、实时统计) + 内存充足场景历史数据归档(日志、监控数据) + 写入密集分布式高可用(金融交易、电信) + 自动故障转移dev.mysql.com数据仓库、实时分析(OLAP) + 列查询优化写入密集型(物联网、时序数据) + 高吞吐量
典型性能随机写:3 万 TPS,顺序读:50 万 QPS随机读:5 万 TPS,插入:1 万 TPS内存操作:微秒级响应插入:10 万 TPS,查询:全表扫描慢分布式读:20 万 QPS,写:15 万 TPSdev.mysql.com列查询:比 InnoDB 快 10 倍写入:20 万 QPS,随机读:1 万 QPS
其他特性外键约束 + 自适应哈希索引 + 压缩表(InnoDB 8.1+)压缩表(只读) + 快速表修复固定长度行存储 + 内存碎片优化数据压缩(zlib) + 仅支持 INSERT/SELECT自动分片 + 多活架构 + 跨云部署实时聚合(SUM/COUNT) + 冷热数据分离冷热数据分层 + 低延迟写入

说明:

  1. InnoDB 的主导地位:自 MySQL 5.5 起成为默认引擎,功能持续增强(如分布式事务、空间索引),覆盖 90% 以上生产场景。
  2. MyISAM 的现状:仍支持但逐步被边缘化,系统表已不再使用,未来可能被移除。
  3. Memory 的新特性:2025 年新增持久化内存(PMEM)支持,可通过硬件实现数据落盘但成本较高。
  4. 新兴引擎趋势:ColumnStore 和 RocksDB 在特定场景(OLAP、物联网)表现突出,但需根据业务需求评估兼容性。
  5. 云原生支持:InnoDB 和 NDB 原生支持 K8s 集成,Memory 和 ColumnStore 可容器化部署。
http://www.dtcms.com/a/589979.html

相关文章:

  • 连云港网站关键字优化如何网络营销环境分析包括哪些内容
  • 网站建设语言都有什么广东外贸网站推广
  • 临沂建网站公司网站切图是指什么
  • 不用写代码做网站软件飞狐小说网站建设
  • wdcp拒绝访问网站企业网站本身应该就是企业( )的一部分
  • 子数组|状态机dp
  • 家居网站建设如何自己公司网站维护
  • Spring Boot 3+Spring AI 打造旅游智能体!集成阿里云通义千问,多轮对话 + 搜索 + PDF 生成撑全流程
  • 西安网站设计制作一般多少钱新媒体营销的发展趋势
  • 手机T0智能算法交易个人开通指南
  • 卢沟桥网站建设互联网舆情报告
  • 4.2 Boost 库工具类 ignore_unused 的使用
  • 智能驾驶域控(ADCU)方案介绍
  • 关于我们的python日记本
  • 电子商城网站开发购物车网站联盟怎么做
  • 10、webgl 基本概念 + 坐标系统 + 立方体
  • 网站建设 类东莞网站建设方案外包
  • 小孩子和大人做的网站公司网站域名com好还是cn好
  • PostgreSQL 分区表实战:亿级订单表按时间拆分,查询提速 100 倍
  • 数字孪生如何落地
  • 4.1.8【2014统考真题】
  • 查询域名网站淮安淮阴网站建设
  • 智慧校园综合管理平台源码
  • 用Python识别图片中的文字(Tesseract OCR)
  • nvidia驱动安装(openEuler上安装T4驱动)
  • 网站开发 自学网上商城系统
  • 网站设计公司 中山搜狐三季度营收多少
  • 编程范式综论:从思维哲学到程序形态简论
  • 将C++对象暴露给QML两种的方法:注册为QML类型和设置为根上下文属性
  • SlaugFL论文阅读学习