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):存放索引信息文
相关推荐
二十雨辰5 分钟前
[Java]-JVM面试题
java·开发语言·jvm
2601_962181968 分钟前
Redis Redis介绍、安装 - Redis客户端
数据库·redis·postman
cfm_29149 分钟前
ConcurrentHashMap 线程安全机制与 JDK 1.8 演进
java·开发语言·安全
tqs_1234515 分钟前
值传递与引用传递
java·开发语言·python
一直C23 分钟前
Linux系统编程|信号进阶 + SystemV IPC(消息队列、共享内存)
linux·c语言·开发语言·算法·青少年编程·vim
小王C语言37 分钟前
QT 基础:QT SDK 下载、配置、新建项目、项目代码解释
开发语言·qt
2601_962062941 小时前
Spring Boot入门——Spring Boot项目的创建
java·数据库·spring boot
葡萄成熟时 !1 小时前
泛型知识笔记
开发语言·笔记·python
冰暮流星1 小时前
mysql之外键约束
数据库·mysql
茶栀(*´I`*)1 小时前
数据库零基础入门指南:从基本概念到 SQL 实战
数据库·sql