SQL这个东西真的不用就会忘记,,,不过也确实好多都是很久之前学的,有些知识点也已经模糊了,这次刚好好好学一学,今天看视频的时候摘了几个感觉不太熟的点,,基本都记下来了哈哈哈,忘记说了,看的是秦路的视频,老师声音很好听嘿嘿。
Select基础部分
有一些之前没有怎么用到的,不太熟练的部分
1)Select city,companyId from data.company(查询具体的字段,字段之间用逗号隔开)
2)Select * from company
limit 100;(分号代表语句的结尾,limit表示只要结果的前100条数据)
3)!=和<>这两个都表示不等于
selelct * from company
where city != “上海”;(提取上海以外城市的公司信息)
select * from company
where city <> “上海”;
4)select * from company
where city in (“上海”,”北京”);(提取上海和北京的公司信息)
或者select * from company
where city = “上海”
orcity = “北京”;(此处in和or的输出结果一样)
select* from company
where city not in (“上海”,”北京”); (提取上海和北京以外的公司信息,in的否定not in)
条件查询部分
1) and和or执行逻辑,and优先执行,作为一个条件(这一块之前真的没注意过,重点关注!)
SELECT * FROM data.dataanalyst
where city = "上海"
and education = "本科"
or workYear = "1-3年";
上述查询语句,本意是查询city在上海的(结果中city应该只等于上海),education为本科或者工作1-3年的人(education和workYear二选一),但是结果中出现了city为非上海的数据,此处涉及到and和or同时出现时,SQL的执行优先级问题。
实际上该语句的查询目标为
SELECT * FROM data.dataanalyst
where (city = "上海"
and education = "本科")
or workYear = "1-3年";
此处,and优先计算组成条件1,即city是上海的且education是本科为条件1,workYear等于1-3年为条件2,结果为条件1成立或者条件2成立的数据,因此出现了city为北京、深圳,以及education等于大专的数据。
如果要实现原来的查询目标,SQL语句如下
SELECT * FROM data.dataanalyst
where city = "上海"
and (education = "本科"
or workYear = "1-3年");
结果如下
勤用括号还是有用滴!
例如:查询上海的本科职位以及北京的硕士职位
SELECT * FROM data.dataanalyst
where
(city = "上海"
and education = "本科")
or
(city = "北京"
and education = "硕士");
2)like的使用,匹配字段值,%的使用
SELECT * FROM data.dataanalyst
where
secondType like "%开发%";(包含“开发”两个字的职位)
SELECT * FROM data.dataanalyst
where
secondType like "开发%";(以“开发”两个字开头的职位)
SELECT * FROM data.dataanalyst
where
secondType like "%开发";(以“开发”两个字结尾的职位)
3)group by函数
SELECT city,count(positionId),count(distinct companyId) FROM data.dataanalyst
group by city;(每个城市招多少个岗位,多少家公司在招聘)
SELECT city,education,count(positionId)
FROM data.dataanalyst
group by city,education;(每个城市各个学历招多少个岗位)
例子:
eg.1每个城市的应届毕业生招多少个
SELECT city,workYear,count(positionId) FROM
data.dataanalyst
where workYear = "应届毕业生"
group by city;
eg.2每个城市有多少公司在招应届毕业生
SELECT
city,workYear,count(positionId),count(companyId) FROM data.dataanalyst
where workYear = "应届毕业生"
group by city;
网友评论