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

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

  • 相关阅读:
    NopCommerce代码结构
    至于你信不信,我反正是信了——以类为单位的编程思想
    男人的小金库藏在哪里?——公共数据集Model
    老婆使用说明书——注册系统的逻辑与结构
    ASP.NET学习参考站点
    学了N年英语,你学会翻译了吗?——最基本的数据库连接
    编程也讲禅,您读过《金刚经》吗?——ADO.NET核心类的灭度与SQLHelper的诞生——十八相送(上)
    文件夹病毒专杀工具
    不想当将军的学生,不是好程序员——数据访问层DAL——程序结构的思考
    html的标签一共有多少个?
  • 原文地址:https://www.cnblogs.com/dengcl/p/7568371.html
Copyright © 2011-2022 走看看