夜猫子的知识栈 夜猫子的知识栈
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夜猫子

前端练习生
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Node基础

  • 《MySQL》学习笔记

    • Navicat for MySQL
    • SQL语法
    • 查询操作
    • 数据统计
    • 高级查询
    • 内置函数
    • 数据修改
    • 表的操作
    • 列的属性
    • 多表查询
    • 视图
    • 索引
    • 存储程序
    • 游标
    • 事务
    • 安全管理
    • 数据备份
    • 其他内容
      • 系统数据库
        • mysql 数据库
        • information_schema
        • performance_schema
        • sys 数据库
      • 分页查询
        • 基本语法
        • 示例
        • 第一页数据(第1到第10条记录)
        • 第二页数据(第11到第20条记录)
        • 使用变量简化分页逻辑
      • 表的设计
  • Midway

  • Nest

  • 其他

  • 服务端
  • 《MySQL》学习笔记
夜猫子
2024-02-02
目录

其他内容

# 其他内容

# 系统数据库

对于MySQL来说,它自带的系统数据库共有以下4个。

  1. mysql
  2. performance_schema
  3. information_schema
  4. sys

# mysql 数据库

这是最重要的系统数据库之一,它包含了用户账户、权限、角色以及与安全相关的其他信息。

  • 用户表 (user): 存储了所有用户的登录信息(如用户名、密码)和全局权限。
  • 权限表 (db, tables_priv, columns_priv, procs_priv): 分别存储数据库级、表级、列级和存储过程/函数级的权限设置。
  • 其他表: 包括存储插件信息(plugin)、服务器端帮助文档(help_category, help_topic)等。

# information_schema

这是一个虚拟数据库,提供了访问数据库元数据的方法。它不存储实际的数据,而是通过视图的方式提供关于数据库对象的信息,比如表、列、索引等。

  • Tables: 提供了有关数据库中所有表的信息。
  • Columns: 列出了所有表中的列及其属性。
  • Key_Column_Usage: 描述了键之间的关系,包括外键约束。

# performance_schema

用于监控MySQL服务器的性能,收集统计信息,帮助诊断性能瓶颈。从MySQL 5.5版本开始引入,需要手动启用相关功能。

  • 包含了各种表,用于追踪服务器执行的语句、锁等待、文件I/O操作等。

# sys 数据库

sys 数据库是一个综合性的数据库,它简化了对performance_schema中数据的访问,并提供了易于理解的报告。它在MySQL 5.7及更高版本中可用。

  • 提供了一系列视图、存储过程和函数,使得性能调优和故障排除更加直观和简单。

注意

  • 不要随意修改:除非你非常清楚自己在做什么,否则不应直接修改mysql, information_schema, performance_schema或sys数据库中的内容。错误的修改可能会导致数据库无法正常工作。
  • 备份重要数据:定期备份mysql数据库以防止意外丢失用户和权限数据。
  • 使用专用工具进行管理:对于性能监控和故障排除,建议使用专门设计的工具或脚本,而不是直接操作performance_schema或sys数据库。

# 分页查询

在MySQL中,我们可以使用“limit m, n”的语法来实现分页查询。

在MySQL中,分页查询通常用于从大量数据中提取特定范围的数据。这可以通过LIMIT和OFFSET子句来实现。

# 基本语法

分页查询的基本语法如下:

sql

浅色版本

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name
LIMIT offset, row_count;
1
2
3
4
5

或者更常用的形式是分开写LIMIT和OFFSET:

sql

浅色版本

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name
LIMIT row_count OFFSET offset;
1
2
3
4
5
  • offset: 起始点,表示从第几条记录开始获取数据(注意:第一条记录的偏移量为0)。
  • row_count: 获取的记录数。

# 示例

假设我们有一个名为employees的表,并希望以每页显示10条记录的方式查看数据。

# 第一页数据(第1到第10条记录)

SELECT * FROM employees
ORDER BY employee_id
LIMIT 10 OFFSET 0;
1
2
3

或简写为:

SELECT * FROM employees
ORDER BY employee_id
LIMIT 10;
1
2
3

# 第二页数据(第11到第20条记录)

SELECT * FROM employees
ORDER BY employee_id
LIMIT 10 OFFSET 10;
1
2
3

# 使用变量简化分页逻辑

如果你正在开发一个应用,可能需要动态地计算offset值。可以使用编程语言中的循环或条件语句来计算它,比如在PHP中:

$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$limit = 10; // 每页显示的记录数
$offset = ($page - 1) * $limit;

$query = "SELECT * FROM employees ORDER BY employee_id LIMIT $limit OFFSET $offset";
1
2
3
4
5

# 表的设计

补充一些常用的小技巧,这样可以让我们设计一个更好的表,主要包括以下5个方面:

  1. 对于一个表的主键来说,我们一般是使用自动递增的值,而不是手动插入值。
  2. 如果一个字段只有两种取值,比如“男”或“女”、“是”或“否”,比较好的做法是使用tinyint(1),而不是使用varchar等类型。当然,你使用varchar等类型也是没有问题的。
  3. 如果想要保存图片,我们一般不会将图片保存到数据库中,否则会占用大量的空间。一般是使用这样的做法:将图片上传到服务器,然后数据库保存的是图片的地址(URL)。
  4. 对于一篇文章来说,数据库一般保存的是包含该文章的HTML代码,也叫做“富文本”。一般我们会使用富文本编辑器编辑内容,然后获取对应的HTML代码,最后再将该HTML代码保存到数据库中。
  5. 设计表时,所有表和字段都应该添加对应的注释。这个好习惯一定要养成,这样可以使得后期维护起来更加轻松简单。
编辑 (opens new window)
上次更新: 2025/3/12 17:54:26
数据备份
Midway基础

← 数据备份 Midway基础→

最近更新
01
IoC 解决了什么痛点问题?
03-10
02
如何调试 Nest 项目
03-10
03
Provider注入对象
03-10
更多文章>
Copyright © 2019-2025 Study | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式