SQL查询语句基于MYSQL学习笔记
SQL查询语句基于MYSQL学习笔记
本例是基于mysql的SQL语句查询,在mysqlworkbench进行。
模糊查询:like 和 分组:group by
模糊查询:
SELECT * from data.dataanalyst
where secondType like '%开发%'
// 通配符'%'是指多个字符,而另一种'_'指一个字符。
// 多条件查询,其中and比or优先级要高,如不能很好判断,建议使用括号
where (city = '上海'
and education='本科')
or workYear='3-5年'
分组:
select city,count(1) from data.dataanalyst
group by city
// 在data.dataanalyst中查询city,count(1),并根据city进行分组
having count(positionId)>= 200
//判断count(positionId)>= 200,只返回大于200的计数
组合用法:
select
city,
count(1) as total,
// as 进行别名设置
count(if(industryField like '%电子商务%',industryField,null)) as emarket,
count(if(industryField like '%电子商务%',industryField,null))/count(1)
from data.dataanalyst
group by city
having count(if(industryField like '%电子商务%',industryField,null)) >=10
order by emarket
// order by 根据emarket值进行升序排序,如希望进行降序排序则使用 DESC 关键字,如:order by emarket desc
数据处理查询与子查询
select
case
when ((bottom + top)/2) <=10 then '0-10'
when ((bottom + top)/2) <=20 then '10-20'
when ((bottom + top)/2) <=30 then '20-30'
else '30+'
end as cases,
salary
from(
select
left(salary,locate('k',salary)-1) as bottom,
# left(right(salary,length(salary)-locate('-',salary)),length(salary)-locate('-',salary)-1),
substr(salary,locate('-',salary)+1,length(salary)-locate('-',salary)-1) as top,
salary
from data.dataanalyst)
as t
// case是进行数据的判断分组
//进行子查询时需要进行子表单的重新命名此处命名为’t‘
//substr为str查询关键字
//left同excel中left,right同excel中的right。length同len,求长度。locate同find查找关键字位置,具体参数设置,在这里就不写了
select *
from data.dataanalyst
where city in
( select city from data.dataanalyst
group by city having count(positionId) >=100)
//子查询为条件的查询用法
jion查询
进行多张表的数据分析
子查询:两张表
select * from data.dataanalyst
where companyId = (
select companyId from data.company
where companyShortName = '唯医网'
)
# 使用where进行查询,但是只返回公司下面的职位,对于公司本身的信息没有涉及
进jion查询:
jion指匹配能匹配上的,及去交集
select * from data.dataanalyst as da
join data.company as c on da.companyId = c.companyId
// 是指后面的表关联起来
left jion指匹配都进行匹配,保证第一表信息是完整的
select * from data.dataanalyst as d
left join (select * from data.company
where companySize = '150-500人') as c
on d.companyId=c.companyId
过滤出空值 c.companyId is null
select * from data.dataanalyst as d
left join (select * from data.company
where companySize = '150-500人') as c
on d.companyId=c.companyId
where c.companyId is null
//此处为 is
select count(c.companyId)/count(1)from data.dataanalyst as d
left join (select * from data.company
where companySize = '150-500人') as c
on d.companyId=c.companyId
注:
(删除数据库
drop database <数据库名>)
(删除表
use <数据库>;
drop table<表名>
)
回顾
主要将liking ,group by, case,jion 进行学习