zoukankan      html  css  js  c++  java
  • MYSQL中的高级查询

    1.1.  子查询

    1.1.1. 在房屋类型中,如何找出比双人间贵的所有房屋类型?

     

    1. 找到双人间的价格
    2. 根据第一步找到的价格作为查询条件去查满足条件的房屋类型,利用Where字句

     

    子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询

    子查询在WHERE语句中的一般用法:

    将子查询和比较运算符联合使用

    注意:子查询返回的数据列有且仅能有一列;若判断条件不为in的时候,则子查询只能返回有且只有一行数据,若是in的话子查询可以返回多行数据。

    子查询的执行过程是:

    首先,执行小括号中的子查询,返回的结果是所有来自子查询的结果

    其次,才开始执行外围的父查询,返回查询的最终结果

     

    1.1.2.   查出价格在100-300的房间有哪些?

    第一步:查出价格在100到300之间的房屋类型

    第二部:依据第一步得到的结果作为条件,在房间表中查出这些房间类型的房屋有哪些?

    1.2.  连接查询

    在数据库应用中,若需要从多张表中通过某一些组合条件查询出我们需要的结果,此时就需要表连接查询。

    在MySQL中,连接查询包括:

    1. INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
    2. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
    3. RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

    1.1.3. 内连接:

    查询结果是左右连接的交集,【即左右连接的结果去除null项后的并集(去除了重复项)】

    语法为:SELECT 字段1,字段2 from 表1

                     Inner join 表2  on 表1.字段1  =  表2.字段2  where 条件

    等价于:

    Select 字段1,字段2 from 表1 , 表2

    Where表1.字段1  =  表2.字段2  and  条件

    其中on之后的条件为表1和表2关联的条件。

    问题1:查询所有状态为正常可用的房屋(房屋号、类型名称、状态名称,床位,价格)

    问题2:查询出所有状态为正常可用且价格低于500的房屋

    1.1.4. 左连接

    以左表为准,去右表找数据,如果没有匹配的数据,则以null补空位,所以输出结果数>=左表原数据数

    左右表区分:在语句前面的为左表,后面的为右表。

    语法:select n1,n2,n3 from ta left join tb on ta.n1= ta.n2 [这里on后面的表达式,不一定为=,也可以>,<等算术、逻辑运算符]【连接完成后,可以当成一张新表来看待,运用where等查询】

    问题:列出所有房屋的完整信息,信息包括:房屋信息和该房屋目前住的人的信息。

    1.1.5. 右连接

     a left join b 等价于 b right join a

    推荐使用左连接代替右连接

  • 相关阅读:
    Cisco Packet Tracer 7.2
    "%Error opening tftp://255.255.255.255/network config"
    CPI 3.0磁盘空间不足!
    ASA Failover
    思科交换机配置单播MAC地址过滤
    WLC HA模式下的注意事项
    802.11r mixed mode
    IEEE 802.11r-2008
    iOS 上通过 802.11k、802.11r 和 802.11v 实现 Wi-Fi 网络漫游
    Flexconnect部署
  • 原文地址:https://www.cnblogs.com/dengcl/p/7568371.html
Copyright © 2011-2022 走看看