MySQL單表查詢

來源:互聯網
上載者:User

標籤:mysql單表查詢

查詢的表
mysql> SELECT * FROM test;
+-----+--------------+-----+--------+------+------+------+---------------------+
| SID | Name         | Age | Gender | CID1 | CID2 | TID  | CreateTime          |
+-----+--------------+-----+--------+------+------+------+---------------------+
|   1 | GuoJing      |  19 | M      |    2 |    7 |    3 | 2014-11-29 10:00:00 |
|   2 | YangGuo      |  17 | M      |    2 |    3 |    1 | 2014-11-29 10:00:00 |
|   3 | DingDian     |  25 | M      |    6 |    1 |    7 | 2014-11-29 10:00:00 |
|   4 | FuFei        |  31 | M      |    8 |   10 |    5 | 2014-11-29 10:00:00 |
|   5 | HuangRong    |  16 | F      |    5 |    9 |    9 | 2014-11-29 10:00:00 |
|   6 | YueLingshang |  18 | F      |    8 |    4 | NULL | 2014-11-29 10:00:00 |
|   7 | ZhangWuji    |  20 | M      |    1 |    7 | NULL | 2014-11-29 10:00:00 |
|   8 | Xuzhu        |  26 | M      |    2 |    4 | NULL | 2014-11-29 10:00:00 |
|   9 | LingHuchong  |  22 | M      |   11 | NULL | NULL | 2014-11-29 10:00:00 |
|  10 | YiLin        |  19 | F      |   18 | NULL | NULL | 2014-11-29 10:00:00 |
+-----+--------------+-----+--------+------+------+------+---------------------+


單表查詢文法:
    SELECT * FROM 表名;   #查詢整張表的所有資料
    SELECT 欄位1、欄位2 FROM 表名;  #投影
    SELECT 查詢列表 FROM 表名  WHERE 條件;  #選擇
WHERE:關聯運算式,用來做比較操作 =、>、 >=
       !=   不等號
       <=>   空值
邏輯關係:
     AND:需要所有條件才可以顯示出來
     OR:只需要滿足一個條件就可以顯示出來
     NOT:取反
     BETWEEN  ...AND ...   #滿足前後兩個查詢條件
     LIKE ‘‘  像什麼
         %:任意長度任一字元
         _:任意長度單個字元
    IN ():給一個列表,選擇出列表中合格值
    IS NULL:判斷是否為空白
    IS NOT NULL:判斷是否不為空白
    DISTINCT:相同的值只顯示一次

    DRDER BY 欄位名稱 {ASC|DESC}; 將查詢結果進行排序
    ASC:升序,預設就是升序可以省略
    DESC:降序
如果對大量的資料進行排序最好是事先設定好定序不然排序的代價很大。

LIMIT:顯示制定行數
LIMIT [位移量,]行數

彙總函式:
     AVG:平均值
     MIN:最小值
     MAX:最大值
     SUM:和
     COUNT:個數之和

    group by:分組
    HAVING 過濾條件   分組過濾
    欄位名 AS 欄位別名


各種查詢執行個體:
投影查詢:顯示test表中所有人的姓名和年齡
mysql> SELECT Name,Age FROM test;
+--------------+-----+
| Name         | Age |
+--------------+-----+
| GuoJing      |  19 |
| YangGuo      |  17 |
| DingDian     |  25 |
| FuFei        |  31 |
| HuangRong    |  16 |
| YueLingshang |  18 |
| ZhangWuji    |  20 |
| Xuzhu        |  26 |
| LingHuchong  |  22 |
| YiLin        |  19 |
+--------------+-----+
10 rows in set (0.00 sec)


選取查詢:搜尋表中年齡大於20歲的人
mysql> SELECT * FROM test WHERE Age>20;
+-----+-------------+-----+--------+------+------+------+---------------------+
| SID | Name        | Age | Gender | CID1 | CID2 | TID  | CreateTime          |
+-----+-------------+-----+--------+------+------+------+---------------------+
|   3 | DingDian    |  25 | M      |    6 |    1 |    7 | 2014-11-29 10:00:00 |
|   4 | FuFei       |  31 | M      |    8 |   10 |    5 | 2014-11-29 10:00:00 |
|   8 | Xuzhu       |  26 | M      |    2 |    4 | NULL | 2014-11-29 10:00:00 |
|   9 | LingHuchong |  22 | M      |   11 | NULL | NULL | 2014-11-29 10:00:00 |
+-----+-------------+-----+--------+------+------+------+---------------------+
4 rows in set (0.00 sec)


投影加選取查詢:顯示表中資料為男性的姓名和年齡
mysql> SELECT Name,Age FROM test WHERE Gender=‘M‘;
+-------------+-----+
| Name        | Age |
+-------------+-----+
| GuoJing     |  19 |
| YangGuo     |  17 |
| DingDian    |  25 |
| FuFei       |  31 |
| ZhangWuji   |  20 |
| Xuzhu       |  26 |
| LingHuchong |  22 |
+-------------+-----+

DISTINCT:相同的值只顯示一次
mysql> SELECT DISTINCT GenDer FROM test;
+--------+
| GenDer |
+--------+
| M      |
| F      |
+--------+


查詢年齡加一歲大於20的所有使用者

mysql> SELECT Name,Age FROM test WHERE Age+1>20;
+-------------+-----+
| Name        | Age |
+-------------+-----+
| DingDian    |  25 |
| FuFei       |  31 |
| ZhangWuji   |  20 |
| Xuzhu       |  26 |
| LingHuchong |  22 |
+-------------+-----+
5 rows in set (0.00 sec)

顯示年齡小於20的女性
mysql> SELECT Name,Age,Gender FROM test WHERE NOT Age>20 AND NOT Gender=‘M‘;
+--------------+-----+--------+
| Name         | Age | Gender |
+--------------+-----+--------+
| HuangRong    |  16 | F      |
| YueLingshang |  18 | F      |
| YiLin        |  19 | F      |
+--------------+-----+--------+


查詢年齡在20和25歲之間的使用者
mysql> SELECT Name,Age FROM test WHERE Age>=20 AND Age<=25;
+-------------+-----+
| Name        | Age |
+-------------+-----+
| DingDian    |  25 |
| ZhangWuji   |  20 |
| LingHuchong |  22 |
+-------------+-----+


mysql> SELECT Name,Age FROM test WHERE Age BETWEEN 20 AND 25;
+-------------+-----+
| Name        | Age |
+-------------+-----+
| DingDian    |  25 |
| ZhangWuji   |  20 |
| LingHuchong |  22 |
+-------------+-----+


顯示姓名是Y開頭的
mysql> SELECT Name FROM students WHERE Name Like ‘Y%‘;
+--------------+
| Name         |
+--------------+
| YangGuo      |
| YueLingshang |
| YiLin        |
+--------------+


顯示HZD開頭的使用者名稱
mysql> SELECT Name FROM test WHERE Name RLIKE ‘^[HZD].*$‘;
+-----------+
| Name      |
+-----------+
| DingDian  |
| HuangRong |
| ZhangWuji |
+-----------+

顯示表中年齡為18,20,25的使用者
mysql> SELECT Name,Age FROM test WHERE Age IN (18,20,25);
+--------------+-----+
| Name         | Age |
+--------------+-----+
| DingDian     |  25 |
| YueLingshang |  18 |
| ZhangWuji    |  20 |
+--------------+-----+

顯示課程2為空白的使用者
mysql> SELECT Name FROM test WHERE CID2 IS NULL;
+-------------+
| Name        |
+-------------+
| LingHuchong |
| YiLin       |
+-------------+
2 rows in set (0.00 sec)

顯示課程2不為空白的使用者
mysql> SELECT Name FROM test WHERE CID2 IS NOT NULL;
+--------------+
| Name         |
+--------------+
| GuoJing      |
| YangGuo      |
| DingDian     |
| FuFei        |
| HuangRong    |
| YueLingshang |
| ZhangWuji    |
| Xuzhu        |
+--------------+


根據查詢結果排序,預設為降序
mysql> SELECT Name FROM test ORDER BY Name;      
+--------------+
| Name         |
+--------------+
| DingDian     |
| FuFei        |
| GuoJing      |
| HuangRong    |
| LingHuchong  |
| Xuzhu        |
| YangGuo      |
| YiLin        |
| YueLingshang |
| ZhangWuji    |
+--------------+
10 rows in set (0.05 sec)

根據查詢結果排序,預設為升序
mysql> SELECT Name FROM test ORDER BY Name DESC;
+--------------+
| Name         |
+--------------+
| ZhangWuji    |
| YueLingshang |
| YiLin        |
| YangGuo      |
| Xuzhu        |
| LingHuchong  |
| HuangRong    |
| GuoJing      |
| FuFei        |
| DingDian     |
+--------------+
10 rows in set (0.00 sec)


將欄位name顯示為姓名

mysql> SELECT Name AS 姓名 FROM test;
+--------------+
| 姓名         |
+--------------+
| GuoJing      |
| YangGuo      |
| DingDian     |
| FuFei        |
| HuangRong    |
| YueLingshang |
| ZhangWuji    |
| Xuzhu        |
| LingHuchong  |
| YiLin        |
+--------------+

只顯示合格前兩行
mysql> SELECT Name FROM test LIMIT 2;
+---------+
| Name    |
+---------+
| GuoJing |
| YangGuo |
+---------+
2 rows in set (0.00 sec)
顯示過濾掉前兩行的後三行
mysql> SELECT Name FROM test LIMIT 2,3;
+-----------+
| Name      |
+-----------+
| DingDian  |
| FuFei     |
| HuangRong |
+-----------+

顯示平均年齡
mysql> SELECT AVG(age) FROM test;
+----------+
| AVG(age) |
+----------+
|  21.3000 |
+----------+
1 row in set (0.00 sec)

顯示最小年齡
mysql> SELECT MIN(age) FROM test;   
+----------+
| MIN(age) |
+----------+
|       16 |
+----------+
1 row in set (0.02 sec)

顯示最大年齡
mysql> SELECT MAX(Age) FROM test;   
+----------+
| MAX(Age) |
+----------+
|       31 |
+----------+

顯示所有人的年齡之和
mysql> SELECT SUM(Age) FROM test;   
+----------+
| SUM(Age) |
+----------+
|      213 |
+----------+


mysql> SELECT COUNT(age) FROM test;
+------------+
| COUNT(age) |
+------------+
|         10 |
+------------+

查詢表中男同學和女同學的平均年齡
mysql> SELECT AVG(Age),Gender FROM test GROUP BY Gender;   
+----------+--------+
| AVG(Age) | Gender |
+----------+--------+
|  22.8571 | M      |
|  17.6667 | F      |
+----------+--------+

顯示選修的每門課的人數大於等於2的課程和人數
mysql> SELECT COUNT(CID1) AS persons,CID1 FROM test GROUP BY CID1 HAVING Persons>=2;
+---------+------+
| persons | CID1 |
+---------+------+
|       3 |    2 |
|       2 |    8 |
+---------+------+

本文出自 “梅花香自苦寒來” 部落格,請務必保留此出處http://wangjunkang.blog.51cto.com/8809812/1582651

MySQL單表查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.