#聚合函数查询
作用:对表中搜索到的数据进行总结
1.count()函数
格式:count(*)
作用:计算表中总的行数,不管某列有数值或者空值
格式:count(字段名)
作用:计算指定列下总的行数,计算时忽略空值的行
2.sum()函数
格式:sum(字段名)
作用:计算指定列值的数量总和,计算时忽略值为NULL的行
3.AVG函数()
格式:avg(字段名)
作用:返回指定列数据的平均值
4.max()函数
格式:max(字段名)
作用:返回指定列中的最大值
5.min()函数
格式:min(字段名)
作用:返回查询列中的最小值
#连接查询
1.内连接查询
使用比较运算符进行表间数据的比较操作,且比较的表间数据为相同数据类型的字段
格式:select 表名.字段名 from 表名1,表名2 where 表名1.字段名 = 表名2.字段名 或者 select 表名.字段名 from 表名1 inner join 表名2 where 表名1.字段名 = 表名2.字段名
注意:两个表中有相同的字段名,所以在比较时需用表名.字段名格式,不然无法确定指的是哪一个
#子查询
在一个查询语句嵌套在另一个查询语句内部的查询
1.带ANY、SOME关键字的子查询
#ANY和some一样,表示满足其中任一条件,允许创建一个表达式对自查徐的返回值列表进行比较
eg.mysql> select num1 from tbl1 where num1 > any (select num2 from tbl2);
+------+
| num1 |
+------+
| 13 |
| 27 |
+------+
mysql> select num1 from tbl1 where num1 > some (select num2 from tbl2);
+------+
| num1 |
+------+
| 13 |
| 27 |
+------+
2.带ALL关键字查询,需要满足所有内层查询的的条件
eg.mysql> select num1 from tbl1 where num1 > all (select num2 from tbl2);
+------+
| num1 |
+------+
| 27 |
+------+
3.带exists关键字查询
exists:后参数是一个任意的子查询,子查询至少返回一行为true,此时外层查询进行查询,子查询返回false,外层语句将不进行查询
eg.mysql> select * from test1 where exists (select c_id from test2 where c_id = 10001);
+------+------+------------+---------+
| f_id | s_id | f_name | f_price |
+------+------+------------+---------+
| a1 | 101 | apple | 5.20 |
| a2 | 103 | apricot | 2.20 |
| b1 | 102 | blackberry | 10.20 |
| b2 | 104 | berry | 7.60 |
| b5 | 107 | xxxx | 3.60 |
| bs1 | 103 | orange | 11.20 |
| bs2 | 104 | melon | 8.20 |
| c0 | 101 | cherry | 3.20 |
| l2 | 104 | lemon | 6.40 |
| m1 | 106 | mango | 15.70 |
| m2 | 105 | xbabay | 2.60 |
| m3 | 105 | xxtt | 11.60 |
| o2 | 107 | coconut | 9.20 |
| t1 | 105 | banana | 10.30 |
| t2 | 106 | grape | 5.30 |
| t4 | 107 | xbababa | 3.60 |
+------+------+------------+---------+
not exists:后参数是一个任意的子查询,子查询至少返回一行为false,此时外层查询进行查询,子查询没有任何返回,返回true,外层语句将不进行查询
eg.mysql> select * from test1 where not exists (select c_id from test2 where c_id = 10001);
Empty set (0.00 sec)
4.带IN关键字查询
IN进行子查询,内层查询语句返回一个数据列,数据列中的值将提供给外层查询语句进行比较操作,且在内层语句结果中
NOT IN,内层查询语句返回一个数据列,数据列中的值将提供给外层查询语句进行比较操作,且不在内层语句结果中
#合并结果查询
(1)利用UNION关键字,给出多条select语句 ,将其结果组合成单个结果集,两个表对应数据列和数据类型必须相同。
(2)各个select语句之间使用UNION或UNION ALL关键字分割。
(3)不使用关键字ALL,执行时删除重复的记录,返回行是唯一的;使用关键字ALL不删除重复行也不对结果进行自动排序
eg.mysql> select s_id, f_name, f_price from test1 where f_price < 9.0 union all select s_id,f_name,f_price from test1 where s_id in(101,103);
+------+---------+---------+
| s_id | f_name | f_price |
+------+---------+---------+
| 101 | apple | 5.20 |
| 103 | apricot | 2.20 |
| 104 | berry | 7.60 |
| 107 | xxxx | 3.60 |
| 104 | melon | 8.20 |
| 101 | cherry | 3.20 |
| 104 | lemon | 6.40 |
| 105 | xbabay | 2.60 |
| 106 | grape | 5.30 |
| 107 | xbababa | 3.60 |
| 101 | apple | 5.20 |
| 103 | apricot | 2.20 |
| 103 | orange | 11.20 |
| 101 | cherry | 3.20 |
+------+---------+---------+
mysql> select s_id, f_name, f_price from test1 where f_price < 9.0 union select s_id,f_name,f_price from test1 where s_id in(101,103);
+------+---------+---------+
| s_id | f_name | f_price |
+------+---------+---------+
| 101 | apple | 5.20 |
| 103 | apricot | 2.20 |
| 104 | berry | 7.60 |
| 107 | xxxx | 3.60 |
| 104 | melon | 8.20 |
| 101 | cherry | 3.20 |
| 104 | lemon | 6.40 |
| 105 | xbabay | 2.60 |
| 106 | grape | 5.30 |
| 107 | xbababa | 3.60 |
| 103 | orange | 11.20 |
+------+---------+---------+
MySql数据查询(二) 数据查询
最新推荐文章于 2024-08-04 10:06:58 发布