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

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

  • 相关阅读:
    修改Ubuntu从文本界面登录
    Putty等工具中解决SSH连接超时断开的问题
    QoS policy-map class-map
    Linux中的do{...} while(0)
    手动增加swap分区
    __attribute__ 机制详解(一)
    欢迎来语雀关注我
    WebForm 生成并显示二维码
    《C#图解教程》 总览
    C#图解教程 第二十五章 其他主题
  • 原文地址:https://www.cnblogs.com/dengcl/p/7568371.html
Copyright © 2011-2022 走看看