永洪社区

标题: MySQL,从入门到熟练 [打印本页]

作者: 冰镇糯米糍    时间: 2017-9-6 17:37
标题: MySQL,从入门到熟练
本帖最后由 冰镇糯米糍 于 2017-9-6 17:42 编辑

MySQL,从入门到熟练

       本文是如何快速成为数据分析师的第十篇教程,如果想要了解写作初衷,可以先行阅读七周指南。温馨提示:如果您已经熟悉数据库,大可不必再看这篇文章,或只挑选部分。
       在《写给新人的数据库指南》,我们已经成功的安装数据库,并且导入数据,今天进入MySQL的实战练习。SQL是数据库的查询语言,语法结构简单,相信本文会让你从入门到熟练。
       掌握SQL后,不论你是产品经理、运营人员或者数据分析师,都会让你分析的能力边界无限拓展。别犹豫了,赶快上车吧!
       以下的语句都在SequelPro的Query页面运行,其他操作页面不会有太大差异。标点符号必须为英文,这是新人很容易犯的错误。
       SQL最小化的查询结构如下:
select column from table
       table是我们的表名,column是我们想要查询的字段/列,column可以用 * 代替,指代全部字段,意为从table表查询所有数据。
       where 是基础查询语法,用于条件判断。
select * from DataAnalyst
       where city = '上海'
       上图是最简化的查询语句,将所有城市为上海的职位数据过滤出来。我们也可以用 and 进行多条件判断。
select * from DataAnalyst
where city = '上海' and positionName = '数据分析师'
       or 语句则是或的关系
select * from DataAnalyst
       where city = '上海' or positionName = '数据分析师'
       查找城市为上海,或者职位名称是数据分析师的数据,它们是并集。
当我们涉及到非常复杂的与或逻辑判断,应该怎么办?比如即满足条件AB,又要满足条件C,或者是满足条件DE。此时需要用括号明确逻辑判断的优先级。
       select * from DataAnalyst
       where (city = '上海' and positionName = '数据分析师')
          or (city = '北京' and positionName = '数据产品经理')
       这条语句的含义是查找出上海的数据分析师或者是北京的产品经理。当有括号时,会优先进行括号内的判断,当有多个括号时,对最内层括号先进行判断,然后依次往外。
接下来的问题来了,当我们要查询多个条件,比如北京上海广州深圳南京这些城市,难道一个个用and关联起来?这太麻烦了,我们可以使用 in 。
select * from DataAnalyst
       where city in ('北京','上海','广州','深圳','南京')
       当我们遇到字段数据类型是数值时,也可以使用符号> 、>=、< 、<=、!= 进行逻辑判断,!= 指的是不等于,等价于 <> 。
select * from DataAnalyst
       where companyId >= 10000
       上例是筛选出公司ID >= 10000的职位,为数值时,不需要像字符串一样加引号。
       当我们需要取区间数值时,使用 between and
       select * from DataAnalyst
       where companyId between 10000 and 20000
       between and 包括数值两端的边界,等同于 companyId >=10000 and companyId <= 20000。
       如果要模糊查找,能用like。
select * from DataAnalyst
       where positionName like '%数据分析%'
       语句的含义是在positionName列查找包含「数据分析」字段的数据,%代表的是通配符,含义是无所谓「数据分析」前面后面是什么内容。如果是 '数据分析%' ,则代表字段必须以数据分析开头,无所谓后面是什么。
       除了上面所讲,还有一个常用的语法是not,代表逻辑的逆转,常见not in、not like、not null等。
       接下来我们学习group by,它是数据分析中常见的语法,目的是将数据按组/维度划分。类似于Excel中的数据透视表,我们以city为例。
select * from DataAnalyst
group by city
   
   (, 下载次数: 46)