《mysql必知必会》读书实战笔记14-子查询

第14章 使用子查询

14.1子查询

简单查询:查询单个数据表的select查询语句。

子查询:嵌套在其他查询中的查询语句。

14.2用子查询过滤数据

即:子查询的结果,放在where后,作为过滤条件值。

例:列出订购TNT2货品的所有客户信息:

步骤分析:

a.通过货品TNT2,在订单货品表中找到订单编号:select order_num from orderitems where prod_id='TNT2';

b.通过订单编号,在订单表中找到客户ID:select cust_id from orders where order_num in (20005,20007);

c.通过客户ID,在客户表中找到客户名称、联系方式等信息:select cust_name,cust_contact from customers where cust_id in (10001,10004);

嵌套子查询,就是将a/b/c嵌套起来:

select cust_name,cust_contact
from customers
where cust_id in (select cust_id
                            from orders
                            where order_num in (select order_num
                                                              from orderitems
                                                              where prod_id='TNT2'));

14.3作为计算字段使用子查询

即:子查询的结果,放在计算字段中。

例:显示客户表中每个客户的订单总数:

步骤分析:

a.客户表的客户id等于订单表中的客户id时,在订单表中计算订单数量:

select cust_id,
           cust_name,
           cust_state,
           (select count(order_num)
             from orders
             where orders.cust_id=customers.cust_id) as order_count 
from customers 
order by cust_name;

上面的 orders.cust_id=customers.cust_id,表名与列名由句点分隔,叫做完全限定列名


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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容