暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【松勤软件基础测试】MYSQL创建高级联结

松勤软件学院 2017-12-06
235
松勤
点击蓝字关注我们↑↑↑↑


本文讲解另一些联结类型,介绍对联结的表使用表别名和聚集函数。

1、使用表别名

给表名起别名的优点: 
1. 缩短SQL语句 
2. 允许单条SELECT语句中多次使用相同的表

分析:FROM子句中三个表名全部具有别名。注意,表别名只能在查询执行中使用,与列名不同,表别名不返回客户机。


2、使用不同类型的联结

自联结、自然联结、外部联结

自联结

目的:因很多情况下,在一条SELECT子句中不止一次引用相同表格,为避免繁琐,引入自联结。

假如需要通过通过某物品,检索所有此供应商的物品。需要首先查找供应商→检索所有物品

分析:此方法利用 子查询(嵌套查询),缺点:多次输入vend_id。相应的联结查询方式为:


分析:纵使使用同一个表,也需要使用 完全限定。同时使用自联结,用外部语句替代相同表中检索数据时使用的子查询语句。性能上,比子查询快。


自然联结

宗旨:无论何时对表联结,至少有一个列出现在不止一个表中(被联结的列)。

特点:自然联结排除多次出现,每个列只出现一次。

工作方式:只能选择唯一的列,通常使用通配符(SELECT *),对所有其他表的列使用明确子集完成。


外部联结

有时需要包含没有关联行进行关联。例如可能需要使用联结来完成如下工作: 
1. 对每个客户订单进行计数,包括至今未下订单的客户。(此时订单表中不包含未下订单客户) 
2. 列出所有产品及订购数量,包括没人订购的产品。

如下,检索所有客户和订单:


为了检索没有订单的客户,需要进行如下(外部联结)操作:


分析:使用关键字OUTER JOIN来指定联结类型(不是在WHERE中指定)。与INNER JOIN不同地方在于,还包括为包含的关联行。


注意:使用OUTER JOIN时,必须指明RIGHT,LEFT关键字(RIGHT指出,OUTER JOIN右侧的表)。customers LEFT OUTER JOIN orders从左侧customers表中选择所有行。


使用带聚集函数的联结

聚集函数用来汇总函数。可以同联结一起使用。

如要检索所有客户及每个客户所下订单数,使用COUNT()完成:


注意:函数COUNT()需要同 GROUP BY 一起使用,进行分组计算。同时聚集函数也可以用在如下外部联结:


使用联结和联结条件

注意联结类型。一般为内部联结,有时需要外部联结。

保证使用正确联结条件。

应该总是提供联结条件,否则产生笛卡尔积。

联结中可能包含多个表。测试前需要分别测试单个联结。

教育领先品牌
打造中国互联网
专注IT在线教育
以工匠精神
愿景
松勤软件

松勤网:www.songqinnet.com

微信公众号:松勤软件学院

软件测试交流QQ群:64207188

软件自动化测试QQ群:398140461

软件性能测试交流QQ群:348074292

文章转载自松勤软件学院,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论