如何高效系统学习 MySQL?

发布时间:2023-10-23 12:00

DevWeekly收集整理每周优质开发者内容,包括开源项目工具资源技术文章等方面,每周五首发于DevWeekly,欢迎大家Star并收藏!

MySQL这么简单还用得着学习?

有不少同学估计都有这种想法,“不就是增删改查一些简单操作吗?”

如果仅从使用者的角度做一些简单的查询和聚合,MySQL的确很简单。

但是,你能从头至尾配置一套生产环境的数据库环境吗?你可以设计出具有优秀扩展性的表模型吗?怎么样才可以实现大数据量的快速查询?

我认为,任何一个领域都有相应的专家,也都有一知半解的人,对于MySQL,虽然很多人觉得非常简单,但是要真正成为这个领域的专家同样有很高的难度。

有点扯远了,本文的目标不是面向高阶数据库专家的,本文旨在引导初学者入门、帮助对MySQL感兴趣的同学了解数据库全局链路。

配置SQL环境

现如今云服务使用越来越官方,很多同学在公司直接接触的都是rds(Relational Database Service),开箱即用,作为使用者不需要关注底层使用的到底是Oracle、Postgresql还是SQL Server,也不用关注运维和数据库安全。

但是,我认为亲自动手配置一套SQL环境会更加容易帮助我们对数据库的理解。

要想配置环境,我们首先需要下载MySQL服务客户端

我们可以根据自己的系统(MACOSX、Linux、Windows)下载对应的MySQL。

下载完之后,双击并安装该文件。需要设置一个密码,一定要记住这个密码,因为以后需要它来连接到MySQL实例。

如何高效系统学习 MySQL?_第1张图片

创建一个名为my.cnf的文件,并将以下内容放入其中,这需要给本地文件读取SQL数据库的权限。

[client]
port= 3306
[mysqld]
port= 3306
secure_file_priv=''
local-infile=1

打开系统偏好->MySQL,转到配置,选择my.cnf文件,然后点击Apply按钮。

如何高效系统学习 MySQL?_第2张图片

通过点击 在MySQL设置页面,可以 通过点击Start或者Stop来启动或者停止数据库。

如何高效系统学习 MySQL?_第3张图片

如果数据库服务正常运行,接下来就可以下载并安装[MySQL工作台](https://www.zhihu.com/question/MySQL :: Download MySQL Workbench),工作台可以用来编辑和查询数据,并以结构化的方式返回结果。

如何高效系统学习 MySQL?_第4张图片

现在打开MySQL工作台,通过它连接到SQL服务,你会看到类似下面的东西:

如何高效系统学习 MySQL?_第5张图片

你可以看到,本地实例连接已经事先为你设置好了。

现在,你只需要点击该连接,并使用我们之前为MySQL服务器设置的密码开始工作。

如何高效系统学习 MySQL?_第6张图片

连接之后,你就会看到是一个编辑界面,在这里你可以输入一些查询语句执行数据的查询。

如何高效系统学习 MySQL?_第7张图片

但是,目前我们还没有建表,也没有数据,所以,首先需要准备一些数据:

如何高效系统学习 MySQL?_第8张图片

手动建表太麻烦了,MySQL官网提供了一些数据样例用于学习,我们可以访问官网,下载Sakila电影数据库,然后解压。

接下来,回到MySQL工作台,依次点击文件>运行SQL脚本>选择位置sakila-db/sakila-schema.sql。

这样,就创建了表结构。

下一步,依次点击文件>运行SQL脚本>选择位置sakila-db/sakila-data.sql。

这样 ,就把数据导入到SQL服务了。

做完这些操作,你会看到侧边栏有一些数据库了:

如何高效系统学习 MySQL?_第9张图片

处理数据

现在,已经配置好环境并有了数据,接下来可以写一些查询。

你可以尝试使用Sakila样本数据库文档来详细了解Sakila数据库的模型,这是设计数据库表时非常重要的环节。

如何高效系统学习 MySQL?_第10张图片

现在,可以看一个基本的SQL语句:

SELECT  col1
        ,SUM(col2) AS col2sum
        ,AVG(col3) AS col3avg
FROM    table_name
WHERE   col4 = 'some_value'
GROUP BY col1
ORDER BY col2sum DESC;

在这个查询中,有4个核心要素:。

  • SELECT:要查询哪些列?这里我们查询col1,对col2进行SUM聚合,对col3进行AVG聚合。这里还通过使用as关键字给SUM(col2)起了一个别名
  • FROM:从哪个表中查询
  • WHERE:可以使用WHERE语句过滤数据
  • GROUP BY:所有不在聚合中的列都需要在GROUP BY,含义就是以哪些字段分组聚合
  • ORDER BY:根据col2sum排序

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号