#聚合函數查詢
作用:對錶中搜索到的數據進行總結
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數據查詢(二) 數據查詢
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.