MySQL 第五天学习笔记

第十三章  分组数据

数据分组

从products表中,返回供应商vend_id = 1003 对应的产品总数


也可以创建分组  GROUP  BY 



过滤分组

GROUP BY 只能完整分组

用HAVING 可以过滤分组,用法类似于WHERE


扫描二维码关注公众号,回复: 1058705 查看本文章


同时用WHERE 和 HAVING

找出products 表中,具有2个及以上、价格为10及以上的产品的供应商



分组(group by)和排序(order by)



总计订单价格大于等于50的订单的订单号和总计订单价格



SELECT 子句中的顺序




第十四章  使用子查询

需要找出订购物品TNT2(prod_id)的所有客户,应该怎么检索?

思路:

在订单商品表(orderitems)中找到prod_id为TNT2的所有订单的编号(order_num)

在顾客订单(orders)表中根据订单编号(order_num)找到顾客ID(cust_id)

在顾客信息(customers)表中根据顾客ID(cust_id)找到顾客信息



把上面两个组合(从内向外处理)


检索这些客户的信息


或者用子查询实现



作为计算字段使用子查询

显示customers表中每个客户的订单总数,订单与相应的客户ID存储在orders表中


orders.cust_id = customers.cust_id     完全限定列名

WHERE orders.cust_id = customers.cust_id      相关子查询(涉及外部查询的子查询)


第十五章  联结表(join)

创建联结

vend_name   prod_name    prod_price  


如果没有使用联结,返回的结果是第一个表中的每个行与第二个表中的每个行配对,而不管逻辑是否合理

这样共返回第一个表的行数乘以第二个表的行数这么多行,称为笛卡儿积


内部联结(INNER JOIN)



联结多个表

显示编号为20005的订单中的物品



第十六章 创建高级联结

使用表别名



使用不同类型的联结

之前使用的是内部联结(等值联结)

现在介绍其他三种联结

自联结

发现某物品(prod_id='DTNTR') 有问题,想知道生产该物品的供应商(vend_id) 生产的其他物品是否有问题


使用自联结的相同查询




外部联结

对每个客户下了多少订单进行计数,包括那些尚未下订单的客户


用外部联结,可以把那些尚未下订单的客户的订单数也能统计

 left outer join  指定包括左边表所有的行



right outer join  指定包括右边表所有的行

  

使用带聚类函数的联结

要检索所有客户及每个客户所下的订单数




猜你喜欢

转载自blog.csdn.net/weixin_41151172/article/details/80147745