MySql数据查询(二) 数据查询

#聚合函数查询
	作用:对表中搜索到的数据进行总结
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 |
	+------+---------+---------+

猜你喜欢

转载自blog.csdn.net/poetry_and_distance/article/details/79940677