学习记录-希望我写的小白都能看懂

这章开始学习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

学习记录-希望我写的小白都能看懂_第1张图片

运算就是正常的加减乘除"+ - * /",运算符无非就是 > < =  ,<>不等于,=!这个也是,如果是文字就用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的总价个数

学习记录-希望我写的小白都能看懂_第2张图片

以下为码和跑出来的数据

学习记录-希望我写的小白都能看懂_第3张图片

加上条件having看看

学习记录-希望我写的小白都能看懂_第4张图片

代码段记录一下

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

学习记录-希望我写的小白都能看懂_第5张图片

这边注意一下 group by 不能用别名,如果是order by 是可以的

你可能感兴趣的:(mysql)