Skip to content

Latest commit

 

History

History
71 lines (43 loc) · 4.73 KB

与mysql零距离接触.md

File metadata and controls

71 lines (43 loc) · 4.73 KB

《与 mysql 零距离接触》视频教程学习记录

视频地址 https://www.imooc.com/learn/122 ,推荐 mysql 初学者进行学习,教程讲解的非常全面。

前言

大约在 4、5 年之前,经常使用微软的 sqlserver 数据库,现在已经好久不用了。不过近期工作需要,又要重新熟悉一下 mysql 数据库,重温一下数据库的基本使用。

本地安装 mysql

windows 下的安装我没有关注,猜测应该是傻瓜式的引导界面。mac os 下安装 mysql ,使用 homebrew 安装特别简单。

  • 安装 homebrew ,参考官网 https://brew.sh/ 即可
  • homebrew 默认情况下下载和更新比较慢,需要替换镜像源。推荐使用清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/
  • 运行 brew install mysql ,很快就能安装完成
  • 运行 mysql.server start ,即可启动 mysql 服务
  • 可运行ps aux | grep mysql,查看 mysql 是否在运行中
  • 运行 mysql -uroot -p 即可登录,密码不用输,直接回车即可。登录成功之后就可运行 mysql 命令了,例如select 100;
  • 运行 exit 可退出 mysql 命令行环境
  • 运行 mysql.server stop 可关闭 mysql 服务

可以选择 cli 的客户端,也可以选择图形化的客户端,sql 玩的不是很溜就用 phpmyadmin 就行了。

存储引擎

就如浏览器有渲染引擎,JS 有引擎一样,数据库也是有存储引擎的,不同存储引擎也是有一定的差异和特点,但是日常的简单使用不用深究。mysql 的存储引擎可选的有:

  • InnoDB
  • MyISAM
  • MEMORY
  • Archive

存储引擎这么高大上的东西,它需要解决的肯定也是比较高大上的问题。例如索引、同步、事务、备份等,这些都是一个数据库的底层基础问题。如果我们日常使用没有到极致的话,基本不用关心这些存储引擎的差异。

数据类型

日常使用中,需要关心的数据类型有:数字、日期、字符。各个数据类型的展示和解释很容易在网上查到,例如 http://www.runoob.com/mysql/mysql-data-types.html ,这就不再抄写了。需要注意的几点有:

  • 关于数字类型中“字节”的解释:1 个字节,即 1 byte ,等于 8 bit ,即 8 个二进制空间,能存储的最大数字转换为 10 进制就是 2^8 即 256 。
  • 关于日期类型:考虑到多时区的问题,数据库中一般不会存储时间,而是直接存储数字,然后通过算法计算出该市区的具体时间。

操作数据表

视频中讲解到的有创建数据表、查看数据表及其结构,这些都可以通过图形客户端鼠标操作即可实现,暂时没必要记命令。还有数据表的插入、查询,主键和约束等,这些都是之前已经用过的,比较熟悉。

约束

最常用的就是外键约束,此前是经常使用的功能,现在算是重新回顾一下。视频中讲解了如何用命令创建外键约束,以及约束之后的关联关系。查了一下,用 phpmyadmin 做这个也特别简单,鼠标操作即可 https://blog.csdn.net/timo1160139211/article/details/60570639

另外,外键约束是关系型数据库中非常重要的概念,之所以叫“关系型”,就是因为有外键的关联,否则多个表就无法关联起来了。

数据查询

就是增删改查,insert delete update select 这些命令,比较简单。这里我重点看了使用group byhaving进行分组,还有limit限制性查询。limit貌似在之前使用的 sqlserver 中没有这个命令。

常用函数

视频中讲到了处理字符串、数字和日期的函数,就是一些 API ,比较好理解。还讲解了比较常用的聚合函数,例如平局值、计数、最大最小值、求和等,都是日常项目中常用的。

总结

本课程比较简单入门级,只能算是对数据库基本操作的回顾。后续如果有深入使用的需求,还是得买一本书仔细研究一下。

其他

  • 未看的内容:第一部分是子查询和连接(inner join, out join),这些之前写 sqlserver 时都用过,只不过目前还用不到,就先不看。第二部分是自定义函数和存储过程,也是目前暂时用不到,就先不看。
  • 事务:视频中没讲,不过这块却是数据库最重要、最核心的内容之一。
  • 数据库性能优化:server 端面试经常会被问到这个问题,作为前端只了解一点基本操作,如加索引。
  • 大型数据:分表、分库之类的操作还不了解。
  • ORM,即 Object Relational Mapping ,就是通过面向对象的操作方式来操作数据库,不用再手写增删改查的 sql 语句了。目前工作中使用的是 waterline