子查询
子查询(subquery)是指出现在其他SQL语句内的SELECT子句。
例如:
SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2);
其中SELECT * FROM t1 ,称为 Outer Quer/ Outer statement
SELECT col2 FROM t2,称为subQuery。
子查询
子查询指嵌套在查询内部,且必须始终出现在原括号内。
子查询可以包含多个关键或条件。
如:DTSTINCT、GROUP BY、ORDER BY、LIMIT函数等。
子查询的外层查询可以是:SELECT,INSECT,UODATE,SET或DO。
子查询返回值
子查询可以返回标量、一行、一列或子查询。
使用比较运算符的子查询
使用比较运算符的子查询
=、> 、<、 >=、<=、<>、!=、<=>
语法结构
operand、comparison _ operator、subquery
用ANY、 SOME 或ALL修饰的比较运算符
operand comparison _ operator ANY (subquery)
operand comparison _ operator SOME (subquery)
operand comparison _ operator ALL (subquery)
ANY、 SOME 、ALL关键字
运算符\关键字 | ANY | SOME | ALL |
---|---|---|---|
>、 >= | 最小值 | 最小值 | 最大值 |
<=、< | 最大值 | 最大值 | 最小值 |
= | 任意值 | 任意值 | |
<>、!= | 任意值 |
使用[NOT]IN的子查询
语法结构
operand comparison_operator [NOT]IN (subquery)
=ANY运算符与IN等效
!=ALL或<>ALL运算与NOT IN等效
使用[NOT]EXISTS的子查询
如果子查询返回任何行,EXISTS将返回TRUE;否则为FALSE。
INSERT.....SELECT
将查询结果写入数据表
INSERT [INTO] tbl_name [(col _ name;....)]
SELECT.....
多表更新
UPDATE table _ references
SET col _ name1 = {expr1 | DEFAULT}
[,col _ name2 = {expr2 | DEFAULT}]....
[WHERE where _ conition]
语法结构(表的参照关系)
table_reference
{[INNER | CROSS | JOIN]{LEFT | RIGHT}[OUTER]JOIN}
table _ reference
ON conditional _expr
连接类型
INNER JOIN ,内连接
在MySQL中,JOIN,CROSS.JOIN和INNER JOIN是等价的。
LEFT [OUTER] JOIN,左外连接
EIGHT[OUTER] JOIN ,右连接
CREATE.......SELECT
创建数据表同时将查询结果写入到数据表
CREATE TABLE [IF NOT EXISTS] tbl - name
[(create _ definition,.....)]
select _ statement.
网友评论