MySQL大小写规则与存储引擎详解

目录

MySQL在Linux下数据库名、表名、列名、别名大小写规则

SQL编写建议:

默认数据库里都是什么内容?

(1)mysql

(2)information_schema

(3)performance_schema

(4)sys

表在系统文件中的表示

InnoDB存储引擎模式

MyISAM存储引擎模式

小结


MySQL在Linux下数据库名、表名、列名、别名大小写规则

  • 数据库名、表名、表的别名、变量名严格区分大小写;
  • 关键字、函数名在SQL中不区分大小写;
  • **列名(或者字段名)与列的别名(或字段别名)**在所有的情况下都忽略大小写。

MySQL在Windows的环境下全都不区分大小写。

SQL编写建议:

  • 关键字和函数名全部大写;
  • 数据库名、表名、表的别名、字段名、字段别名全部小写;
  • SQL语句必须以分号结尾。

默认数据库里都是什么内容?

查看当前计算机的数据库:SHOW DATABASES;

除了第一个用户自定义的dbtest1之外,还存在剩余的四个默认系统数据库

(1)mysql

MySQL系统自带的核心数据库,存储用户账户以及权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息。

(2)information_schema

该数据库保存着MySQL服务器维护的其余数据库的信息,例如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息不是真实的用户数据,是一些描述性信息,也称之为"元数据"。在其中还提供了一些以innodb_sys开头的表,用于表示内部系统表。

(3)performance_schema

主要保存MySQL服务器运行过程中的一些状态信息,可以用来监控MySQL服务的各类性能指标。

(4)sys

通过视图的形式将(2)与(3)结合起来,帮助系统管理员与开发人员监控MySQL的技术性能。

表在系统文件中的表示

InnoDB存储引擎模式

表中数据与索引

①系统表空间

默认情况,InnoDB会在数据目录下创建一个名为ibdata1、大小为12M的文件,这就是系统表空间在文件系统上的表示(他是一个自扩展文件,根据实际自己增加文件大小)

②独立表空间

InnoDB在之后的版本中不把各个表的数据存储到系统表空间中,而是为每个表都建立独立表空间(有多少个表就有多少个独立表空间),如上的emp1.ibd文件就会存储emp1表中的数据、索引以及描述表结构的文件(在5.7版本之前会有一个独立的文件.frm存储)。

③系统表空间与独立表空间的设置

可以指定使用系统表空间还是独立表空间来存储数据,该功能由innodb_file_per_table控制。

复制代码
innodb_file_per_table=0  # 0:代表使用系统表空间; 1:代表使用独立表空间

MyISAM存储引擎模式

先创建一个使用MyISAM存储引擎的表(InnoDB是默认引擎)

sql 复制代码
CREATE TABLE `student_myisam` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(64) DEFAULT NULL,
`age` int DEFAULT NULL,
`sex` varchar(2) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=MYISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3;

在MyISAM中的索引都是二级索引,该存储引擎的数据和索引分开存放。

小结

举例: 数据库a,表b

1、如果表b采用 InnoDB,data\a中会产生1个或者2个文件:

  • b.frm :描述表结构文件,字段长度等
  • 如果采用系统表空间模式的,数据信息和索引信息都存储在 ibdata1中
  • 如果采用 独立表空间存储模式,data\a中还会产生b.ibd 文件(存储数据信息和索引信息)

此外:

① MySQL5.7 中会在data/a的目录下生成 db.opt 文件用于保存数据库的相关配置。比如:字符集、比较 规则。而MySQL8.0不再提供db.opt文件。

② MySQL8.0中不再单独提供b.frm,而是合并在b.ibd文件中。

2、如果表b采用 MyISAM,data\a中会产生3个文件:

  • MySQL5.7 中: b.frm :描述表结构文件,字段长度等。

MySQL8.0 中 b.xxx.sdi :描述表结构文件,字段长度等

  • b.MYD (MYData):数据信息文件,存储数据信息(如果采用独立表存储模式)
  • b.MYI (MYIndex):存放索引信息文
相关推荐
CoovallyAIHub2 小时前
Sensors 2026 | 从无人机拍摄到跑道缺陷地图,机场巡检全流程自动化——Zadar机场全跑道验证
数据库·架构·github
错把套路当深情2 小时前
Java 全方向开发技术栈指南
java·开发语言
殷紫川2 小时前
MySQL 锁等待与死锁根治全攻略:从底层原理到 innodb status 精准定位实战
mysql
前端郭德纲2 小时前
JavaScript Object.freeze() 详解
开发语言·javascript·ecmascript
MaCa .BaKa2 小时前
44-校园二手交易系统(小程序)
java·spring boot·mysql·小程序·maven·intellij-idea·mybatis
ada0_ada13 小时前
qt模块学习记录
开发语言·qt·学习
无小道3 小时前
Mysql——索引
mysql·索引·搜索
炸炸鱼.3 小时前
PostgreSQL 日常维护速查手册
数据库·oracle
liulilittle3 小时前
C++ 无锁编程:单停多发送场景高性能方案
服务器·开发语言·c++·高性能·无锁·原子