美文网首页
《mysql必知必会》读书实战笔记16-高级联结查询

《mysql必知必会》读书实战笔记16-高级联结查询

作者: thinkact | 来源:发表于2017-04-07 00:16 被阅读24次

    第16章 创建高级联结

    16.1使用表别名

    除了列别名,也可以使用表别名,作用是:

    a.缩短sql语句;
    b.允许在单条select中,多次使用相同的表别名;
    c.与列别名不同,表别名不返回到客户端显示。

    例:统计所有订购货品TNT2的客户信息:select cust_name,cust_contact from customers as a,orders as b,orderitems as c where a.cust_id=b.cust_id and b.order_num=c.order_num and c.prod_id='TNT2' order by cust_name;

    16.2 使用不同类型的联结

    前面几章介绍的是内连接,或称等值联结,属于简单连接。
    下面看另外3中连接:自联结、自然联结、外联结。

    16.2.1自联结

    例:发现某物品id为DTNTR存在问题,想找出该物品供应商的其他产品是否也有问题:
    a.子查询方式:select prod_id,prod_name from products where vend_id=(select vend_id from products where prod_id='DTNTR');

    b.自联结方式:select a.prod_id,a.prod_name from products as a,products as b where a.vend_id=b.vend_id and b.prod_id='DTNTR';

    自联结通常代替相同表中的子查询,效率通常比子查询高,但实际效率,需要比较得知。

    16.2.2自然联结

    自然联结:只能检索展示唯一的列,即对第一个表可以用“ * ”通配符,联结的其他表只能使用明确的列名,不能产生重复列。

    16.2.3 外部联结

    外部联结:相关表中可能没有对应的关联行,例如:客户表中客户1,在关联的订单表中,没有客户1的订货记录。

    内连接与外连接的区别:

    内部联结inner join——关联两个表中相同的行。

    例:统计所有客户及其订单:select c.cust_id,o.order_num from customers as c inner join orders as o on c.cust_id=o.cust_id;

    外部联结——关联两个表中所有的行,包括不同的行。
    外部联结outer join有两种:左外连接left outer join、右外连接right outer join,区别只是表的顺序不同。

    例:统计所有客户及其订单,包括没有订单的客户:select c.cust_id,o.order_num from customers as c left outer join orders as o on c.cust_id=o.cust_id;

    16.3使用带聚集函数的联结

    outer join on + group by

    例:查询所有客户及其订单数:select c.cust_id,c.cust_name,count(o.order_num) as num_ord from customers as c left outer join orders as o on c.cust_id=o.cust_id group by c.cust_id;

    16.4联结和联结条件

    使用连接时,必须提供连接条件,否则会得出笛卡尔积。

    《mysql必知必会》是一本好书,是一本sql语言入门书,豆瓣评分很高。

    作者是英国的Ben Forta,世界知名的技术作家,由人民邮电出版社发行,我觉得原作名: MySQL Crash Course,直译为:《MYSQL速成》更具畅销书潜质,只是比较俗吧,呵呵。

    书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。

    前三章是基础概念,讲了SQL和数据库的基本概念,Mysql数据库的概念和使用方法,第四章开始SQL实操练习,这里是本书的一些实操练习笔记,有兴趣的话可以按这个练习几遍,相信对新手会很有帮助,让你不经意间功力大增。

    相关文章

      网友评论

          本文标题:《mysql必知必会》读书实战笔记16-高级联结查询

          本文链接:https://www.haomeiwen.com/subject/vvclnttx.html