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 |
	+------+---------+---------+

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章