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):存放索引信息文
相关推荐
raindayinrain9 分钟前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的18 分钟前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao24 分钟前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
学逆向的1 小时前
C 局部静态变量
c语言·开发语言·网络安全
小徐不徐说1 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
大都督会赢的2 小时前
C++第一节课
开发语言·c++
“AI国潮设计-小江”2 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
小王C语言2 小时前
Qt常用控件:容器类控件,标题分组框、标签页(浏览器标签)
开发语言·qt
论文复现现场2 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
我是唐青枫3 小时前
Kotlin Delegation 委托详解
开发语言·kotlin