MySQL
存储结构
MySQL是一个服务,一个 MySQL 服务可以管理多个数据库,一个数据库可以有多张表:
/*
MySQL服务:
└── 数据库: student
├── 表:frontend
│ ├── 列:id - 主键
│ ├── 列:course - 课程名称
│ └── 列:number - 课程人数
│
├── 表:golang
│ ├── 列:id - 主键
│ ├── 列:course - 课程名称
│ └── 列:number - 课程人数
│
└── 表:rust
├── 列:id - 主键
├── 列:course - 课程名称
└── 列:number - 课程人数
*/
一行数据就是一条数据记录,类似于 Excel 文档:
/*
表:frontend
+----+------------+---------+
| id | course | number | <-- 行数据:每行表示一条记录
+----+------------+---------+
| 1 | HTML | 25 | <-- 行数据:课程HTML,人数为25
| 2 | CSS | 30 | <-- 行数据:课程CSS,人数为30
| 3 | JavaScript | 35 | <-- 行数据:课程JavaScript,人数为35
+----+------------+---------+
表:golang
+----+------------+---------+
| id | course | number | <-- 行数据:每行表示一条记录
+----+------------+---------+
| 1 | Basics | 20 | <-- 行数据:课程Basics,人数为20
| 2 | Concurrency| 15 | <-- 行数据:课程Concurrency,人数为15
| 3 | WebDev | 10 | <-- 行数据:课程WebDev,人数为10
+----+------------+---------+
表:rust
+----+------------+---------+
| id | course | number | <-- 行数据:每行表示一条记录
+----+------------+---------+
| 1 | Ownership | 18 | <-- 行数据:课程Ownership,人数为18
| 2 | Traits | 12 | <-- 行数据:课程Traits,人数为12
| 3 | Async | 8 | <-- 行数据:课程Async,人数为8
+----+------------+---------+
*/
安装与连接
Mac 环境下可通过 homebrew 安装:
brew install mysql
可通过 下载地址 选择平台及安装进行可视化安装。
// mysql帮助手册
mysql --help
// 查看mysql版本
mysql --version
/*
-h 主机地址
-P 端口号
-u 用户名
-p 用户密码
如果MySQL服务器在本地,主机地址可以省略
如果服务器使用默认3306端口,端口号可以省略
*/
mysql -h 127.0.0.1 -P 3306 -u root -p root
mysql -u root -p root
// 密码采用暗文
mysql -u root -p
// 退出mysql
exit;
quit;
\q;
内置数据库
information_schema:保存关于 MySQL 服务器维护的所有其他数据库的信息,如数据库名、数据库的表、表字段的数据类型与访问权限等。mysql:MySQL 系统数据库,保存登录用户名、密码以及每个用户的权限等。performance_schhma:保存数据服务器性能的参数。sys:通过视图的形式把information_schema和performance_schhma结合起来,查询出更加让人容易理解的数据。
存储引擎
MySQL 有三种存储引擎:MyISAM、InnoDB、Memory。
MyISAM安全性低,不支持事务和外键,适合频繁插入和查询的应用。InnoDB默认的存储引擎,安全性高,支持事务和外键,适合对安全性、数据完整性要求较高的应用。Memory访问速度极快,但不会永久存储数据,适合对读写速度要求较高的应用。
创建一个数据库就会自动创建一个文件夹,在库里面创建一个表就会在指定的数据库文件夹中创建一个文件,创建表的时候自动创建的这个文件保存了这张表的结构。
InnoDB
如果表的存储引擎是 InnoDB,只要创建表就会自动创建一个文件,这个文件保存了这张表的结构,如果往表里面存数据,那么数据会被存储到上级目录的 ibdata1 文件中,如果存储的数据比较多,那么系统会自动创建 ibdata2、ibdata3 文件。
MyISAM
如果存储引擎是 MyISAM,那么只要创建表就会自动创建三个文件:
.sdi保存表的结构。.MYD保存表中存储的数据。.MYI保存表中的索引。
Memory
如果表的存储引擎是 Memory,那么只要创建表就会自动创建一个文件,这个文件保存了这张表的结构,此时不会像 InnoDB,MyISAM 将数据保存到文件中,而是直接保存到内存中。