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;