子查询(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关键字进行结果记录的过滤
多表连接
无限级分类表设计
自身连接
网友评论