zoukankan      html  css  js  c++  java
  • mysql笔记(连接与子查询部分)

    SQL92的连接查询语法比较简单,多将多个table放置在from关键字之后,多个table用“,”隔开;
    连接的条件放在where条件之后,与查询条件直接用and逻辑运算符进行连接。如果条件中使用的是相等,
    则称为等值连接,相反则称为非等值,如果没有任何条件则称为广义笛卡尔积。
    广义笛卡尔积:select s.*, c.* from student s, classes c;
    等值:select s.*, c.* from student s, classes c where s.cid = c.id;
    非等值:select s.*, c.* from student s, classes c where s.cid <> c.id;
    select s.*, c.name classes from classes c, student s where c.id = s.classes_id and s.name is not null;
    SQL99连接查询
    1、交叉连接cross join,类似于SQL92的笛卡尔积查询,无需条件。如:
    select s.*, c.name from student s cross join classes c;
    2、自然连接 natural join查询,无需条件,默认条件是将2个table中的相同字段作为连接条件,如果没有相同字段,查询的结果就是空。
    select s.*, c.name from student s natural join classes c;
    3、using子句连接查询:using的子句可以是一列或多列,显示的指定两个表中同名列作为连接条件。
    如果用natural join的连接查询,会把所有的相同字段作为连接查询。而using可以指定相同列及个数。
    select s.*, c.name from student s join classes c using(id);
    4、    join … on连接查询,查询条件在on中完成,每个on语句只能指定一个条件。
    select s.*, c.name from student s join classes c on s.classes_id = c.id;
    5、    左右外连接:3种外连接,left [outer] join、right [outer] join,连接条件都是通过用on子句来指定,条件可以等值、非等值。
    select s.*, c.name from student s left join classes c on s.classes_id = c.id;
    select s.*, c.name from student s right join classes c on s.classes_id = c.id;
    子查询
        子查询就是指在查询语句中嵌套另一个查询,子查询可以支持多层嵌套。子查询可以出现在2个位置:
        from关键字之后,被当做一个表来进行查询,这种用法被称为行内视图,因为该子查询的实质就是一个临时视图
        出现在where条件之后作为过滤条件的值 
    子查询注意点:
        子查询用括号括起来,特别情况下需要起一个临时名称
        子查询当做临时表时(在from之后的子查询),可以为该子查询起别名,尤其是要作为前缀来限定数据列名时
        子查询用作过滤条件时,将子查询放在比较运算符的右边,提供可读性
        子查询作为过滤条件时,单行子查询使用单行运算符,多行子查询用多行运算符
    将from后面的子查询当做一个table来用:
    select * from (select id, name from classes) s where s.id in (1, 2);
    当做条件来用:
    select * from student s where s.classes_id in (select id from classes);
    select * from student s where s.classes_id = any (select id from classes);
    select * from student s where s.classes_id > any (select id from classes);



    作者:hoojo 
    出处:http://www.cnblogs.com/hoojo/archive/2011/06/20/2085416.html 
    blog:http://blog.csdn.net/IBM_hoojo
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    SAP S/4HANA extensibility扩展原理介绍
    SAP CRM系统订单模型的设计与实现
    使用nodejs代码在SAP C4C里创建Individual customer
    SAP Cloud for Customer Account和individual customer的区别
    Let the Balloon Rise map一个数组
    How Many Tables 简单并查集
    Heap Operations 优先队列
    Arpa’s obvious problem and Mehrdad’s terrible solution 思维
    Passing the Message 单调栈两次
    The Suspects 并查集
  • 原文地址:https://www.cnblogs.com/xiaoheng008/p/3803065.html
Copyright © 2011-2022 走看看