MySQL—语法总结(2)复合查询、连接

 

比较运算符:=、>、<、>=、<=、<>、!=、<=>
SELECT...FROM...WHERE col_name > [ANY|SOME|ALL](...)                      # ANY、SOME、ALL关键字

# 子查询
SELECT col_name1,col_name2 FROM tb_name 
WHERE col_name1 >(SELECT ROUND((AVG(col_name),2) FROM tb_name) ;        # 子查询作为外层查询的条件

# 组合查询
组合查询:将多个查询(多条SELECT)的结果合并为单个结果返回,又称并(union)或复合查询(compound query)。   (有说并不是很实用)

常见的使用情形:
- 在单个查询中从不同的表返回类似的数据;
- 对单个表执行多个查询,按单个查询返回数据。

UNION规则:
- 每个SELECT语句包含相同的列、表达式、聚合函数,列数据类型必须兼容。
- 默认重复行自动取消,用UNION ALL 可以不取消
- ORDER BY 只能放在最后一条SELECT语句之后,不允许有多条ORDER BY

  

# 连接
连接:在SELECT语句中关联表,以进行多表联合查询。
自然连接:
  
内部连接:返回连个表符合连接条件的记录。
SELECT col_name1,col_name2,col_name3
FROM tb_name1,tb_name2
WHERE tb_name.col_name4=tb_name.col_name4
    AND tb_name.col_name5=tb_name.col_name5
    AND tb_name6=100;

SELECT col_name1,col_name2,col_name3
FROM tb_name1 INNER JION tb_name2
ON tb_name.col_name4=tb_name.col_name4;
外部连接:返回左(右)表所有记录,右(左)表符合条件的记录
SELECT tb_name1.col_name1,tb_name2.col_name2
FROM tb_name1 LEFT\RIGHT OUTER JION tb_name2
ON tb_name1.col_name1=tb_name2.col_name2;
自连接:
SELECT tn1.col_name1,tn1.col_name2
FROM tb_name1 AS tn1,tb_name1 AS tn2
WHERE tn1.col_name = tn2.col_name
    AND tb2.col_name = 10000;

  

 

 

 

 

posted @ 2018-08-14 10:31  todaynowind  阅读(1151)  评论(0编辑  收藏  举报