数据库简单来讲就是一堆互相关联的数据,最基础的数据组成了表(table),也是我们经常看到的一张Excel的sheet。

Mysql的安装

Mysql安装注意

首先去MySQL的官网下载,版本5.6以上即可,安装的过程不打算进行细说,谷歌有很多的教程。这里给大家分享下我踩过的坑。

刚开始大家把下载好的程序,直接一路选择默认。但是填写Root用户密码时,一定要牢记密码

剩下的照样可以一路选择默认。

安装GUI

在GUI界面上操作MySQL,Mac用户推荐SequealPro,Win用户推荐WorkBench,同样的是去MySQL的官网下载。

数据的导入

接下来所使用的数据是来秦路老师所提供,点击文末福利即可获得。

在数据的导入过程有几点需要留意下

尽量使系统的编码格式和文件的编码格式是相同的,比如说文件是utf-8格式,系统也要选择utf-8格式,否则数据中的中文将是乱码。

设置各字段的数据类型时,系统会帮我们自动选上,改不改都是可以的。int代表整数数值,varchar代表字符串(中文英文标点符号这类),括号里面的数字是允许存储字节,一般不需修改,但是对于某些数据字节较大的,相应的也要增大括号中的数字。

正式开始

对于数据的处理,从数据的筛选、数据分组聚合、时间类数据的处理,数据的清洗

先来看下我们的数据

SELECT * FROM data.analyst; #"*"代表的是所有的列

#data是数据库相当于一个excel文件,annlyst是数据表相当于sheet

其实这是一份各个城市的数据分析相关职位数据

根据判断条件查询数据

查询所有上海城市的职位数据

select * from data.analyst where city="上海"; #where 用于条件判断。

查询城市为上海,职位为数据分析师的数据

select * from data.analyst where city="上海" and positionName="数据分析师";

#使用and进行多条件查询

查找城市为上海,或者职位名称是数据分析师的数据

select * from data.analyst where city="上海" or positionName="数据分析师";

4.查找出上海的数据分析师或者是北京的产品经理

select * from data.analyst where (city="上海"and positionName="数据分析师")or (city="北京"and positionName="分析师助理");

#有括号时,先对括号进行判断

5.查询北京上海广州深圳南京城市的数据

select * from data.analyst where city in ("北京","上海","广州","深圳","南京");

筛选字段类型为数值时

其实,当我们遇到字段数据类型是数值时,也可以使用符号> 、>=、< 、<=、!= 进行逻辑判断,!= 指的是不等于,等价于 <> 。

select * from data.analyst where companyId>10000;

# 筛选出companyId大于10000所有职位数据

当要想筛选谋区间的数值时

select * from data.analyst where companyId between 10000 and 12000;

#between and 包括数值两端的边界

7.查找positionName列包含数据分析字样的数据

select * from data.analyst where positionName like "%数据分析%";

# %代表的是通配符,"%数据分析%"表示的是无所谓[数据分析]前面后面是什么内容;

#"%数据分析"表示的是无所谓数据分析前面的内容是什么;

#"数据分析%"表示的是无所谓数据分析后面的内容是什么;

其中还有一个比较重要的语法是not,在逻辑上代表逆转,常见的有not in、not like、not null等,用这样的语法可以实现删除某些数据的效果。

分组

常用的是group by语法,它是将数据按组或是维度来划分,并且分类后常常会利用某些函数再形成聚合

查看有多少个城市

select * from data.analyst group by city; #按照城市来进行分组

现在有多少个城市轻而易举的获得了。

查看分别有多少个城市分为一组

select city,count('count') from data.analyst group by city;

3.查看每个城市拥有的职位数

select city,count(distinct(positionId)) as pos from data.analyst group by city;

#distinct(),去重函数,去除重复的数据。

#count(distinct(positionId)) as pos意思是把count(distinct(positionId))这个新形成的列进行重命名为pos

4.多维的形式的数据聚合

select city,workYear,count(distinct(positionId)) as poi from data.analyst group by city,workYear;

group by后添加多个字段,并通过聚合函数就会形成多维形式的数据聚合

其中聚合函数count,max,min,sum,avg等函数

5.if函数和group by 的结合使用

如果要是计算数据的占比,使用if函数比较方便;筛选出电子商务领域的分析师数据

select if (positionName like "%d电子商务%",1,0) from data.analyst;

筛选出不同城市的职位数量和不同城市的电子商务行业的职位数量

select city,count(distinct(positionAdvantage)),(if (positionName like "%d电子商务%",positionId,0))from data.analyst group by city

这里再添加一个条件,数据分析师岗位数量在500以上的城市有哪些

select city,count(distinct(positionId)),(if (positionName like "%d电子商务%",positionId,0))

from data.analyst group by city having count(distinct(positionId))>20

使用having语句,是对聚合后的数据结果进行过滤。

用order by语句,使结果能够呈现一定的顺序

select city,count(distinct(positionId)) as count,(if (positionName like "%d电子商务%",positionId,0))

from data.analyst group by city having count(distinct(positionId))>20 order by count desc;

时间的处理

1.now()返回当前的日期和时间

select now()#返回当前日期和时间

2.date() 返回日期

select date(now());

3 .week函数获得当前第几周

select week(now());

其实表示时间的函数还有month,quarter,year,day,hour,minute大都是类似的。

数据的清洗

将会使用到的函数有left,right,mid,locate(),substr(字符串,从哪里开始截,截取的长度),这些函数大都与Excel中的函数相似就不再多说了,下面说下清洗的思路以及代码

因为此表中的薪资大多为7k-9k之类的,如果这样我们没有对工资进行比较,所以我们把这类的薪资换算成平均薪资。

1.先获取工资的下线

select salary ,left(salary,locate('k',salary)-1) as bottomsalary from data.analyst;

2.获取工资的上线

select salary ,substr(salary,locate('-',salary)+1,length(salary)-locate('-',salary)-1) as topsalary from data.analyst where salary not like "%以上%";

3.计算不同城市不同工作年限的平均薪资

select city,workyear,round(avg((topsalary+bottomsalary)/2))as avgsalary from (select substr(salary,locate('-',salary)+1,length(salary)-locate('-',salary)-1) as topsalary ,left(salary,locate('k',salary)-1) as bottomsalary,workyear ,city from data.analyst where salary not like "%以上%" )as t1 group by city,workyear order by city, avgsalary;

使用join关联表

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的,在表中,每个主键的值都是唯一的,(其实主键没有太多的实际意义)。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。这也很像excel中的vlookup函数起到得而作用一样,但是join的使用会更加的高级,有下面几种形式的使用:

JOIN和Inner Join: 如果表中有至少一个匹配,则返回行

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行

关于这一部分大家应该多多操作,我想这部分在以后的工作中肯定会是经常用到的,因为时间原因这部分内容就不细说了,可以参考W3School上的案例。现在随着自己计划的一步步进行,竟然有些恐慌了,真的学的越多感觉欠缺的越多,为了找工作先最少得而必要知识。想想站在未来的角度来看,肯定是能够找到工作的,或许工作还不错,这样一想结果非常明确了,只是过程需要自己来经历,这样一想焦灼是完全没有必要的。

mysql凡人入门_SQL入门学习相关推荐

  1. mysql数据库应用_MySQL数据库应用 从入门到精通 学习笔记

    以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库 查看所有数据库:SHOW DATABASES 创建数据库:CREATE DA ...

  2. activity(流程引擎)从零入门到实战学习

    activity(流程引擎)从零入门到实战学习 1.什么是流程引擎? 2.为什么需要学习流程引擎? 3.为什么选择activiti? 本编文章将详细介绍什么是流程引擎,为什么学习,以及为什么选择act ...

  3. Java 从入门到高级学习路线

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Java 从入门到高级学习路线 <一>1.Jvm 部分 Jvm 内存模型.Jvm 内存结 ...

  4. MySQL高可用--MGR入门(4)异常恢复

    点击蓝字 关注我们 前文阅读: 1.MySQL高可用--MGR入门(1)单主/多主模式搭建 2.MySQL高可用--MGR入门(2)组复制监控常用相关表 3.MySQL高可用--MGR入门(3)单主/ ...

  5. MySQL高可用--MGR入门(3)单主/多主模式切换

    点击蓝字 关注我们 前文阅读: 1.MySQL高可用--MGR入门(1)单主/多主模式搭建 2.MySQL高可用--MGR入门(2)组复制监控常用相关表 实验演示规划:(3台虚拟机,MySQL版本为8 ...

  6. ClickHouse-尚硅谷(1. 入门-概述)学习笔记

    下一篇:(2. 入门-安装)学习笔记 文章目录 1. ClickHouse 概述 2. ClickHouse 的特点 2.1 列式存储 2.2 DBMS 的功能 2.3 多样化引擎 2.4 高吞吐写入 ...

  7. 视频教程-MySQL数据库应用快速入门培训课程-MySQL

    MySQL数据库应用快速入门培训课程 5年JAVA 开发经验,2年系统架构经验,PMP项目管理资格认证,ACP 项目管理认证,工作过程同时参与性能.自动化测试工作,负责测试部门的测试架构,项目服务器运 ...

  8. 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL

    19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有node/ja ...

  9. MySQL零基础从入门到精通(函数篇)

    MySQL零基础从入门到精通(函数篇) 在MySQL中,为了提高代码重用性和隐藏实现细节,MySQL提供了很多函数.函数可以理解为别人封装好的模板代码. 分类 聚合函数 数学函数 字符串函数 日期函数 ...

最新文章

  1. Shiny平台构建与R包开发(四)——按钮与响应事件
  2. 修复bug的12个关键步骤:
  3. push failed in WebIDE
  4. LALR(1)语法分析生成器--xbytes
  5. 常州新北区华为云_常州高新区召开大数据时代健康产业创新大会
  6. 计算机不能代替人类英语,英语作文 谈谈计算机1我们已进入了计算机时代2计算机有许多优点3计算机不能代替人类...
  7. Marlin 溫度感應器 數值轉換對應表
  8. 计算机视觉(CV)前沿国际国内期刊与会议
  9. php 上楼梯问题 递归,算法:爬楼梯问题中的递归
  10. 软考中级职称 软件工程师 学习知识点记录
  11. 我看大学培训机构--大学生到底要不要参加培训机构 一个参加培训的大学生的真实感受
  12. python3 pdf下载无加密_如何实现使用python将pdf文档加密?
  13. OpenGL颜色渐变
  14. android中handle的用法
  15. 计算机教育的改革论文,中职学校计算机教育现状及改革论文
  16. 区分: 间宾直宾(双宾语) 宾补(复合宾语)
  17. 测径仪系统全新升级解决线材的量径问题
  18. MySQL处理插入过程中主键或唯一键重复值的解决办法
  19. 物联网应用开发与传统软件开发的区别
  20. 更新adfs的证书_ADFS服务证书更新介绍

热门文章

  1. 3D画图软件测试自学,【2人回答】我想学习3D画图 请大家推荐几款好入门的软件-3D溜溜网...
  2. win10-microsoft store卸载了怎么安装回来
  3. 前车之鉴!考研过来人各科备考失误大总结
  4. B站Q4财报解读与业务分析
  5. OpenCV——边缘检测原理
  6. tmux命令-快速开始
  7. 记一次Android Studio的Enable VT-x in your BIOS问题解决
  8. 即时通讯源码,社交软件开发
  9. 用什么软件抓cd音轨音质最好_什么是音乐制作以及工作流程?
  10. 【北亚数据恢复】异常断电导致linux服务器无法启动,数据库损坏的数据恢复