这章开始学习DML了,属于比较实用的章节。资料来自:http://datawhale.club/t/topic/476
但其实我的进度稍微快一点加入了join表我觉得会更实用
1、简单查询
首先是一段简单的查询码,不写老会忘,可是没关系,万能公式往里套
SELECT DISTINCT product_id,unit_price
FROM PRODUCTS p
join orders O
ON p.product_id = O.order_id
WHERE unit_price=1.21
ORDER BY product_id
运算就是正常的加减乘除"+ - * /",运算符无非就是 > < = ,<>不等于,=!这个也是,如果是文字就用not like
然后还有OR和and 来选择我们的条件
DINSTINCT:去重,放在你要的列前面 列也可以重新命名但是前面要加AS,如果是表后面也可以直接命名比如在product后面加个空格写上P
ORDER BY 是排序 如果要降序需要在列前加个 DESC
连接表可以用 join on ,想要按照左表连接就是left join 要是以右表的列为主就是right join 类似于vlookup自行理解
然后注意一下字符所在的顺序
2、聚合函数
①计算的函数:count、sum、avg、max、min
例:SELECT COUNT(DISTINCT product_type) FROM product;
②分组计算GROUP BY书写位置 (理解为数据透视)
1 SELECT → 2. FROM → 3. JOIN ON → 4. WHERE → 5.GROUP BY → 6.HAVING (类似where)
例:比如下表需要对status是1的总价格数和2的总价个数
以下为码和跑出来的数据
加上条件having看看
代码段记录一下
SELECT status,sum(unit_price)
FROM PRODUCTS p
join orders O
ON p.product_id = O.order_id
group by status
having status=1
ORDER BY product_id
练习题答案:
1、SELECT product_id, SUM(product_name) --本SELECT语句中存在错误。 FROM product GROUP BY product_type WHERE regist_date > '2009-09-01';
括号是中文括号错,group by后面接having 如果是where 需要在上一行,groupby后面多了个上面没select的条件
2、没有底表 按自己的表模拟了一下
SELECT name,sum(quantity_in_stock) as '进货价',sum(unit_price)*20 '出货价'
FROM sql_store.products
where products.name='longan'
group by name
having sum(quantity_in_stock) > sum(unit_price)*20
这边注意一下 group by 不能用别名,如果是order by 是可以的