mysql数据库 sql语句学习笔记03 查询 聚合 表连接 记录联合
聚合
SELECT [field1,field2 , ....] function_name FROM tablename [WHERE where_contition] [GROUP BY field1,field2... [WITH ROLLUP]] [HAVING where_contition]
其中 field 表示列名
function_name 表示需要进行的聚合操作 可选值可以是 sum 求和 , count(*) 记录数 , max 最大值 , min 最小值
where_contition 表示筛选条件
GROUP_BY 表示 需要进行聚合操作的字段
WITH ROLLUP (可选)表示是否需要对聚合的字段进行再汇总操作
HAVING (可选) 表示可以对已聚合分类的结果进行再次筛选
表连接
表连接是表示当需要同时显示多个表的字段的时候使用的 大致可分为 内连接和外连接
内连接
例 select table1_field1,table2_field1 from table1,table2 where table1.table1_field1=table2.table2_field1;
外连接 外连接又可分为 左连接和右连接
左连接: 包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
右连接: 包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录
>_<!! 貌似刚刚相反
左连接
例:select table1_field1,table2_field1 from table1 left join table2 on where table1.table1_field1=table2.table2_field1;
右连接
例:select table1_field1,table2_field1 from table1 right join table2 on where table1.table1_field1=table2.table2_field1;
子查询
某些情况下 进行查询的时候 需要的条件是另一个select查询的结果 这个时候就须用到子查询 用于子查询的关键字 主要包括 in , not in ,= ,!= , exists ,not exists 等等
例如: select * from table1 where field in(select table2_field1 from table2);
select * from table1 where field =(select table2_field1 from table2 limit 1);
记录联合
两个表的数据查询出来后将其合并到一起并显示出来 关键字有 union , union all
例如:select table1_field1 from table1 union all select table2_filed1 from table2 ; /// 全部显示
select table1_field1 from table1 union select table2_filed1 from table2 ; ///去除重复后显示