MYSQL-子查询与连接

子查询(subquery)指出现在其他SQL语句内的SELECT子句

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

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

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

子查询可以返回标量、一行、一列或子查询


1、由比较运算符引发的子查询

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

语法结构  operand comparison_operator subquery

用ANY SOME ALL 修饰的比较运算符

运算符/关键字     ANY        SOME           ALL

>、>=                  最小值      最小值        最大值

<、<=                  最大值      最大值        最小值

=                          任意值       任意值

<>、!=                                                    任意值


2、由IN   NOT IN 引发的子查询

=ANY 运算符与IN等效

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


3、使用EXISTS   NOT EXISTS  引发的子查询

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


4、INSERT....SELECT

INSERT [INTO] tbl_name [COL_NAME,...]SELECT...


多表更新

INNER JOIN 内连接   JOIN 、CROSS JOIN 、INNER JOIN  等价

LEFT[OUTER] JOIN 左外连接

RIGHT[OUTER] JOIN 右外连接


CREATE....SELECT

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

(起别名)
(将数据分开存储,数字所占字节数比字符小)



连接

mysql在SELECT语句、多表更新、多表删除语句中支持JOIN操作

数据表参照

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

连接类型

INNER JOIN 内连接   JOIN 、CROSS JOIN 、INNER JOIN  等价————仅显示符合条件的记录

LEFT[OUTER] JOIN 左外连接——显示左表的全部记录及右表符合连接条件的记录

RIGHT[OUTER] JOIN 右外连接——显示右表的全部记录及左表符合连接条件的记录

使用ON关键字来设定连接条件,使用WHERE关键字进行结果记录的过滤

多表连接

无限级分类表设计

自身连接

你可能感兴趣的:(MYSQL-子查询与连接)