产品经理需要懂技术吗?
当然需要懂一些啊,不懂技术的产品在与开发小哥们对接需求的时候可能会闹笑话的。
开发小哥们经常嘲讽产品同学们:你们产品经理就只有一张嘴!你觉得能实现的需求根本实现不了!
那么这时我一般就轻轻的拍拍技术人员:相信你能行!复制粘贴一下代码就行咯哈哈,当然这是开个玩笑,遇到确实可实现的需求,产品经理必须知道这个需求开发的成本是多少,略知一些技术实现的复杂性。实在嘴巴说不通的事情。。。嘿嘿给我们的技术小哥们点杯奶茶啊什么的,介绍介绍女朋友啊,拿捏的死死的。
言归正传,像一些TOB/G行业的产品,多多少少都会遇到数据库查询的一些工作,下面是我简单的总结了一下MySQL的数据查询方式,大神勿喷哈!仅涉及到 where、group by、having、order by、inner join on 语法的运用
单标查询基本语句:
select * from 表名
解释:select 后面跟 * 代表这个表的全列字段,也就是所有列的信息,
可以根据实际业务查询某个字段列名和某些字段列名,比如查询表显示1的ID:select id from 表1,那么就只显示表1的ID列的所以信息。
SQL语句执行顺序:
1. FROM子句组装来自不同数据源的数据(from后面+数据表)
2. WHERE子句基于指定的条件对记录进行筛选(where后面+条件)
select * from 表名 where 条件
3. GROUP BY+排序的字段子句将数据划分为多个分组
select * from 表名 where 条件 group by 列名
4. 使用聚集函数进行计算:
①求个数/记录数/项目数等:count()
例如: 统计员工个数?
select count( ) from 员工表--包括空值
select count(*) from 员工表--不包括空值
②求某一列平均数:avg()
例如:求某个班平均成绩?求某个公司员工的平均工资?
select avg(score) from Scores ---平均成绩
select avg(salary) from Company --平均工资
③求总和,总分等:sum() --必须为数字列
例如:求某个班的总成绩?求公司总薪资支出?
select sum(score) from Scores
select sum(salary) from Company
④求最大值,最高分,最高工资等:max()
例如:求班里最高分,公司员工最高工资?
select max(Score) from Scores
select max(salary) from Company
⑤求最小值,最低分,最低工资等:min()
例如:求班里最低分,公司员工最低工资?
select min(Score) from Scores
select min(salary) from Company
6.使用HAVING子句筛选分组(group by是分组where的数据,having是分组group by的数据)
where子句查找符合年龄大于19的员工数据
group by子句对员工数据,根据城市分组。
对group by子句形成的城市组,运行聚集函数计算每一组的员工数量值;
最后用having子句选出员工数量大于等于3的城市组。
where + having 区别总结
having子句用于分组后筛选,where子句用于行条件筛选
having一般都是配合group by 和聚合函数一起出现如(count(),sum(),avg(),max(),min())
where条件子句中不能使用聚集函数,而having子句就可以。
having只能用在group by之后,where执行在group by之前
7. 使用ORDER BY对结果集进行排序desc降序,升序asc
8.多表查询 INNER JOIN ON 的运用
一、连接两个数据表的用法:
FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号
二、连接三个数据表的用法:
FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号
三、连接四个数据表的用法:
FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号