mysql查询子表的语句_MySQL基本SQL语句之单表查询、多表查询和子查询
一、簡單查詢:
1.基本語法:
SELECT * FROM tb_name;//查詢全部
SELECT field1,field2 FROM tb_name; //投影
SELECT [DISTINCT] * FROM tb_name WHERE qualification; //選擇
說明:
FROM子句: 要查詢的關系 表、多個表、其它SELECT語句
WHERE子句:布爾關系表達式,主要包含如下這幾類表達式:
比較:=、>、>=、<=、<
邏輯關系:
AND
OR
NOT
BETWEEN ... AND ... :在兩個值之間
LIKE ‘’
%: 任意長度任意字符
_:任意單個字符
REGEXP, RLIKE :正則表達式,此時索引無效
IN
IS NULL
IS NOT NULL
2.對查詢結果排序:
ORDER BY ?field_name {ASC|DESC}
實例:
mysql> select ID,post_title,post_date from wp_posts where ID>1290 and post_status='publish' ORDER by ID; //升序,ID是排序的字段
mysql> select ID,post_title,post_date from wp_posts where ID>1290 and post_status='publish' ORDER by ID DESC;//降序
3.字段別名:AS
select col_name AS COL_Aliases … //對字段使用別名
select col_name,… from tb_name AS tb_Aliases … //對表使用別名
4.LIMIT子句:
mysql> select ID,post_title,post_date from wp_posts where ID>1290 and post_status='publish' limit 5;//顯示匹配到的5條數據
mysql> select ID,post_title,post_date from wp_posts where ID>1290 and post_status='publish' limit2,3; //(逗號前的數字)表示偏移量
5.聚合:SUM(), MIN(), MAX(), AVG(), COUNT(),括號中為字段名
mysql> select sum(ID) from wp_posts;//計算和
mysql> select min(ID) from wp_posts;//查早最小的
mysql> select max(ID) from wp_posts; //查找最大的
mysql> select avg(ID) from wp_posts; //平均值
mysql> select count(ID) from wp_posts;//計數
6.分組:GROUP BY,一般配合聚合運算使用
mysql> select count(post_status) AS 各狀態數量,post_status AS 狀態名稱 from wp_posts group bypost_status;
+-----------------+--------------+
| 各狀態數量 | 狀態名稱 |
+-----------------+--------------+
| 1 | auto-draft |
| 9 | draft |
| 251 | inherit |
| 238 | publish |
| 2 | trash |
+-----------------+--------------+
5 rows in set (0.01 sec)
注意:可以使用HAVING ?將GROUP BY的結果再次過濾,用法同where
二、多表查詢
連接:
交叉連接:笛卡爾乘積
自然連接:將兩張表某字段中相等連接起來,如下
mysql> SELECT students.Name,students.Age,courses.Cname,students.Gender FROM students,courses WHERE students.CID1 = courses.CID;
+--------------+------+------------------+--------+
| Name | Age | Cname | Gender |
+--------------+------+------------------+--------+
| GuoJing | 19 | TaiJiquan | M |
| YangGuo | 17 | TaiJiquan | M |
| DingDian | 25 | Qishangquan | M |
| HuFei | 31 | Wanliduxing | M |
| HuangRong | 16 | Qianzhuwandushou | F |
| YueLingshang | 18 | Wanliduxing | F |
| ZhangWuji | 20 | Hamagong | M |
| Xuzhu | 26 | TaiJiquan | M |
+--------------+------+------------------+--------+
8 rows in set (0.00 sec)
外連接:
左外連接:left_tbLEFT JOINright_tb ON ... :以左表為標準
mysql> SELECT s.Name,c.Cname FROM students AS s LEFT JOIN courses AS c ON s.CID1=c.CID;
+--------------+--------------------+
| Name | Cname |
+--------------+--------------------+
| GuoJing | TaiJiquan |
| YangGuo | TaiJiquan |
| DingDian | Qishangquan |
| HuFei | Wanliduxing |
| HuangRong | Qianzhuwandushou |
| YueLingshang | Wanliduxing |
| ZhangWuji | Hamagong |
| Xuzhu | TaiJiquan |
| LingHuchong | NULL |
| YiLin | NULL |
+--------------+--------------------+
10 rows in set (0.00 sec)
右外連接 : left_tb RIGHT JOIN right_tb ON ... :以右表為標準
mysql> SELECT s.Name,c.Cname FROM students AS s RIGHT JOIN courses AS c ON s.CID1=c.CID;
+--------------+--------------------+
| Name | Cname |
+--------------+--------------------+
| GuoJing | TaiJiquan |
| YangGuo | TaiJiquan |
| DingDian | Qishangquan |
| HuFei | Wanliduxing |
| HuangRong | Qianzhuwandushou |
| YueLingshang | Wanliduxing |
| ZhangWuji | Hamagong |
| Xuzhu | TaiJiquan |
| NULL | Yiyangzhi |
| NULL | Jinshejianfa |
| NULL | Qiankundanuoyi |
| NULL | Pixiejianfa |
| NULL | Jiuyinbaiguzhua |
+--------------+--------------------+
13 rows in set (0.01 sec)
自連接:本表中不同字段間進行連接
mysql> SELECT c.Name AS student,s.Name AS teacher FROM students AS c,students AS s WHERE c.TID=s.SID;
+-----------+-------------+
| student | teacher |
+-----------+-------------+
| GuoJing | DingDian |
| YangGuo | GuoJing |
| DingDian | ZhangWuji |
| HuFei | HuangRong |
| HuangRong | LingHuchong |
+-----------+-------------+
5 rows in set (0.02 sec)
注意:使用了別名
三、子查詢:一個查詢中嵌套另外一個查詢
如下:在students表中查詢年齡大于平均年齡的學生
mysql> SELECT Name,Age FROM students WHERE Age > (SELECT AVG(Age) FROM students);
+-------------+------+
| Name | Age |
+-------------+------+
| DingDian | 25 |
| HuFei | 31 |
| Xuzhu | 26 |
| LingHuchong | 22 |
+-------------+------+
4 rows in set (0.08 sec)
子查詢注意事項:
比較操作中使用子查詢:子查詢只能返回單個值;
IN(): 使用子查詢;
在FROM中使用子查詢;
聯合查詢:UNION,將兩個查詢的結果合并
mysql> (SELECT Name,Age FROM students) UNION (SELECT Tname,Age FROM tutors);
+--------------+------+
| Name | Age |
+--------------+------+
| GuoJing | 19 |
| YangGuo | 17 |
| DingDian | 25 |
| HuFei | 31 |
| HuangRong | 16 |
| YueLingshang | 18 |
| ZhangWuji | 20 |
| HuYidao | 42 |
| NingZhongze | 49 |
+--------------+------+
19 rows in set (0.00 sec)
總結
以上是生活随笔為你收集整理的mysql查询子表的语句_MySQL基本SQL语句之单表查询、多表查询和子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: auto与迭代器的用法_C++ STL
- 下一篇: mysql case when 解释_m