MQSQL学习笔记(五)

子查询出现在其他SQL语句里面的SELECT语句

        子查询指嵌套在查询内部,且必须始终出现在圆括号内。

        子查询可以包含多个关键字或条件:DISTINCT,GROUP BY,ORDER BY,LIMIT,函数等。

        子查询的外层查询可以是INSERT,UPDATE,SELECT,SET或DO。

        子查询可返回标量,一行,一列或子查询。

 1 .使用比较运算符的子查询  = ,>, <, >= ,<=,!=,<=>

语法结构   operand comparis_operator subquery

查询商品的平均价格:    MQSQL学习笔记(五)_第1张图片

四色五入取小数2位:

MQSQL学习笔记(五)_第2张图片

使用运算符的标准子查询:

MQSQL学习笔记(五)_第3张图片

用ANY ,SOM或ALL修饰比较运算符

    operand comparis_operator ANY subquery

    operand comparis_operator SOME subquery

    operand comparis_operator ALL subquery

    如果子查询返回多个结果使用这三个修饰符 

MQSQL学习笔记(五)_第4张图片

    查询出商品中大于价格最低超极本的价格的商品:

MQSQL学习笔记(五)_第5张图片

2.使用【NOT】 IN的子查询

    语法结构: operand comparison_operator [NOT] IN (subquery) =ANY运算符与IN等效。

    !=ALL或<>ALL运算符与NOT IN等效。

MQSQL学习笔记(五)_第6张图片

3.使用[NOT] EXISTS的子查询

    如果子查询返回任何行,EXISTS将返回TRUE,否则返回FALSE。

INSERT .... SELECT

将查询结果写入数据表

    INSERT [INTO] tbl_name [(col_name,...)] SELECT ...

    将商品分类信息直接写入商品分类表中:

MQSQL学习笔记(五)_第7张图片

多表更新:

UPDATE table_references SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]... [WHERE where_condition]

        连接类型: INNER JOIN,内连接

                    在MYSQL中,JOIN,CROSS JOIN 和INNER JOIN是等价的。

                    LEFT[OUTER] JOIN ,左外连接

                    RIGHT[OUTER] JOIN,右外连接

     INNER JOIN ...ON...SET

MQSQL学习笔记(五)_第8张图片

   多表更新一步到位:

        CREATE..SELECT

        创建数据表的同时将查询结果写入到数据表

        CREATE TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] select_statement

    MQSQL学习笔记(五)_第9张图片

   连接:

     MYSQL在SELECT语句,多表更新,多表删除语句中支持JOIN操作。

        语法结构:

        table_reference

        {[INNER | CROSS] JOIN  | {LEFT | RIGHT}[OUTER] JOIN}

         table_reference

         ON conditional_expr        

          A表 连接类型 B表 ON 两表连接条件


    数据表参照:

        table_reference

        tbl_name [[AS] alias] | table_subquery [AS] alias

        数据表可以使用tbl_name AS alias_name 或 tbl_name alias_name 赋予别名。

        table_subquery可以作为子查询使用在FROM子句中,这样的子查询必须为其赋予别名。

   内连接:

   MQSQL学习笔记(五)_第10张图片

MQSQL学习笔记(五)_第11张图片

左外连接:

MQSQL学习笔记(五)_第12张图片

MQSQL学习笔记(五)_第13张图片

右外连接:

MQSQL学习笔记(五)_第14张图片

MQSQL学习笔记(五)_第15张图片

多表连接查询:

MQSQL学习笔记(五)_第16张图片

外连接:

    A LEFT JOIN B join_condition

    数据表B的结果集依赖数据表A

    数据表A的结果集根据左连接条件依赖所有数据表(B除外)

    左外连接条件决定如何检索数据表B(在没有指定WHERE条件的情况下)

    如果数据表A的某条记录符合WHERE条件,但是表B里面不存在符合连接条件的记录,将生成一个所有列为空的额外B行。

内连接:    

如果使用内连接查找的记录在连接数据表中不存在,并且在WHERE子句中尝试一下操作:

          col_name IS NULL 时,如果col_name被定义为NOT_NULL ,MYSQL将在找到符合连接执着条件的记录后停止搜索更多的行    


无限极分类设计:

MQSQL学习笔记(五)_第17张图片

    自连接查询:

想象出父子表,左为子又为父: 

      MQSQL学习笔记(五)_第18张图片

想象出父子表,左为父右为子:

    MQSQL学习笔记(五)_第19张图片

MQSQL学习笔记(五)_第20张图片

   多表删除:

    DELETE tbl_name[.*] [,tbl_name[.*]] ... FROM table_references [WHERE where_condition]

MQSQL学习笔记(五)_第21张图片

你可能感兴趣的:(MQSQL学习笔记(五))