目录
MySQL在Linux下数据库名、表名、列名、别名大小写规则
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):存放索引信息文