键盘敲烂,月薪过万作业不做,等于没学
当前系列: SQL 修改讲义

历史和特点

1996年:MySQL由Monty团队发布。

说明:相较于Oracle(1979年)和SQL Server(1989年),MySQL真的非常年轻。

2000年:MySQL采用GPL许可协议开源;命名存储引擎MyISAM

2001年,集成存储引擎InnoDB,支持外键事务

说明:mysql是引擎独立的。把mysql比喻成一辆车,引擎就是它的发动机,而mysql这辆车的发动机是可以自由更换的。目前最常用(默认)的引擎就是InnoDB。

2005年10月,发布了里程碑的MySQL 5.0,加入了游标,存储过程触发器视图和事务的支持。

说明:这是mysql比肩三大主流关系型数据库的起点

2008年1月Sun公司收购MySQL AB

说明:mysql发展进入快车道

2009年4月20日Oracle公司收购Sun公司,推出了付费的商业版,但承诺社区版继续开源免费

说明:开源世界仍然对Oracle保持警惕,所以维护着基于mysql的MariaDB

在国内的流行

早期都是中小型网站使用(LAMP,Linux+Apache+mysql+PHP),大型网站一般是Java+Oracle。

直到淘宝横空出世,开展了一次轰轰烈烈的去Oracle运动,将所有数据库更换成mysql,证明了:

  • mysql(集群)能够应对高并发大流量的负荷
  • 数据库应该回归其本色,不需要花里胡哨的存储过程/触发器……


下载和安装

官网社区版下载地址:https://dev.mysql.com/downloads/

注意除了MySQL Community Server,还有:

安装MySQL Server时注意:

  • 默认包含shell/workbench/connector等
  • 选择登录密码验证方式
  • 记住初始用户名(root)和密码
  • MySQL在windows上以服务的方式运行,设置/记住服务名

安装完成后,我们需要检查:

  • MySql服务是否开启,设置服务的启动方式。
  • Shell安装成功
  • Workbench安装成功

MySQL所有操作均可在cmd窗口/Shell完成。但是,一般我们还是使用Workbench等可视化工具进行操作。

演示:创建连接(用户名root,密码自定,默认端口号3306),进入Workbench操作界面


workbench

进入workbench界面之后左侧有一个navigator,其中两个tab:

  • Administration:可以查看整个mysql服务器运行状态
  • Schema:显示所有的数据库(schema)

但是一点击Server Status就报错,给你一个

下马威

但实际上这个错误和报错信息提及的OS风马牛不相及。它实际上是一个字符集问题,解决方案是:

将C:\Program Files\MySQL\MySQL Workbench 8.0\workbench\os_utils.py中的encoding由utf-8:

process = subprocess.Popen(command, stdin = subprocess.PIPE, encoding="utf-8", stdout = 

改成gbk:

process = subprocess.Popen(command, stdin = subprocess.PIPE, encoding="gbk", stdout = 

参考:使用mysql workbench点击server status的错误提示,这是为什么呢?

但问题是,人家是怎么知道这个问题是由\workbench\os_utils.py下面的utf-8编码设置引起的呢?

#试一试#:在log中搜索error,看看能查到什么?

#体会#:查看log文件的作用


建库

切换到schma,可以看到系统数据库sys。

要建自定义的数据库,需要点击上面按钮:

然后根据提示填写数据库名称,

以及(如果需要的话)使用的字符集Charset和字符比较/排序规则Collation:

点击下面的Apply按钮,就会弹出生成数据库的SQL语句:

CREATE SCHEMA `17bang` ;

继续Aplly,就会生成数据库。

在之后的开发中,有可能无法这样在workbench中手动设置charset和collation(比如使用EF建库建表),最方便的办法就是修改my.ini的文件,重新指定默认值:

default-character-set=utf8mb4
character-set-server=utf8mb4

my.ini是mysql的配置文件,一般在这两个路径下找:

  • C:\Program Files\MySQL\MySQL Server 8.0\bin 
  • C:\ProgramData\MySQL\MySQL Server 5.7

数据库文件

切换回Administration,点击Status And System Variables,在System Variables中搜索datadir,就能找到数据库文件存放位置目录:

进入该目录,就能看到:一个数据库对应一个同名文件夹,此时文件夹还是空的,因为数据库中还没有任何表。

Status和System Variables都来源于mysql的配置文件(该文件存放位置一般在数据库文件上一层)

  • Windows:my.ini(演示Notepad++打开,查看datadir等值)
  • Linux:my.cnf
mysql的健康运行、性能优化等重度依赖于其配置,比如:cache/slow query等


建表

展开数据库,可以看到一个空的Tables,右键Create Table。然后就可以按提示添加:表名、列名和类型(INT/VARCHAR等,后文详述)……

注意这只是在构建表结构(表头/列)。点击Apply之后一样会弹出相应的SQL语句,再次Apply,就会在数据库下生成表:

在表上右键右键

就可以查看表里的“行内容”。此时表是空的,可以鼠标直接点击,将其变成可编辑状态

然后填入相应的数据。最后Apply,永久的保存到数据库。

在行上右键,还可以删除(Delete)行数据等。

表文件

mysql 8.0以上版本,一个表就一个同名.ibd文件。

演示:数据库文件夹下查看。


其他

表查看

表上右键:Table Inspector

以后还可以查看:Index、Foreign Keys等。

表更改

表上右键:Alter Table

表删除

表上右键:Drop Table 

数据库删除

数据库上右键:Drop Schema 

演示:.ibd文件和文件夹消失


Query窗口

后面我们就要学习SQL语句了。

SQL语句要写在Query窗口中,Query窗口可以这样打开:

注意窗口中的SQL语句会在“当前/默认”数据库上执行。

数据库上右键:Set As Default Schema,或者直接鼠标双击,可以将其设置为默认(会加粗显示)。

Safe Update

workbench默认禁止我们执行(非Key约束的)Update和Delete操作。

演示Update之后:

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.  To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.000 sec所以需要按提示修改默认设置:


学习笔记
源栈学历
大多数人,都低估了编程学习的难度,而高估了自己的学习能力和毅力。

作业

觉得很 ,不要忘记分享哟!

任何问题,都可以直接加 QQ群:273534701

在当前系列 SQL 中继续学习:

多快好省!前端后端,线上线下,名师精讲

  • 先学习,后付费;
  • 不满意,不要钱。
  • 编程培训班,我就选源栈

更多了解 加:

QQ群:273534701

答疑解惑,远程debug……

B站 源栈-小九 的直播间

写代码要保持微笑 (๑•̀ㅂ•́)و✧

公众号:源栈一起帮

二维码