1.什么是数据库?
数据库是数据存储的集合
表是数据结构化的信息
2.区分
MYSQL 是一个数据库
SQL 数据查询语句
3.SQL基础语法
3.1 and,or语句
查询城市为上海学历为本科或者城市为北京学历为硕士的所有信息(注:and执行优先级排在or前,加括号可以改变优先级)
SELECT * FROM test.dataanalyst_sql
where (city = '上海'
and education = '本科')
or
(city = '北京'
and education = '硕士')
3.2 模糊查找 通过%
苏州% %苏州% %苏州
3.3 group by 语句 按照某字段查询(去除重复的)
查询不同城市岗位数和公司数,因为同一个公司可能存在多个岗位,故采用distinct进行去重。
SELECT
city,
count( positionId ) AS '岗位数',
count( DISTINCT companyId ) AS "公司数"
FROM
test.dataanalyst_sql
GROUP BY
city
结果如下:
3.4 having语句
test 3.4.1 筛选含有100个岗位及以上的城市中岗位数量
SELECT
city,count(1)
FROM
test.dataanalyst_sql
GROUP BY
city
HAVING
count( positionId )>= 100
结果如下:
![](https://img-blog.csdnimg.cn/20210202205405940.png)
test 3.4.2 查找公司种类包含“电子商务”且该公司数量大于50的城市的该种公司数量
SELECT
city,
count( 1 )
FROM
test.dataanalyst_sql
WHERE
industryField LIKE '%电子商务%'
GROUP BY
city
HAVING
count( companyId )>= 50
结果如下:
3.5 if语句
“1”可用其他任何字符代替,保证非空即可,该句意为包含“电子商务”的记为1个,不包含的记为0,筛选电子商务类公司大于50个以上的城市。[注意此处并不是筛选岗位,而是筛选的城市,因此结果中统计的数量为所有岗位的数量,而不单单是包含电子商务的岗位的数量。]
SELECT
city,
count( 1 )
FROM
test.dataanalyst_sql
GROUP BY
city
HAVING
count(
IF
( industryField LIKE '%电子商务%', 1, NULL )) >= 50
结果如下:
3.6 统计总数,电商数量,电商占比并且筛选出电商数量大于10的城市且按电商数量升序排序。
(注:select里面采用的别名话不能立刻在select中使用,只能在下面的from where等中使用,即将( industryField LIKE “%电子商务%”, industryField, NULL ))/ count( 1 ) 改为total/emarket会报错)
SELECT
city,
count( 1 ) AS "total",
count(
IF
( industryField LIKE "%电子商务%", industryField, NULL )) AS "emarket",
count(
IF
( industryField LIKE "%电子商务%", industryField, NULL ))/ count( 1 ) AS "电商占比"
FROM
test.dataanalyst_sql
GROUP BY
city
HAVING
emarket >= 10
ORDER BY
emarket
结果如下: