MySQL中的分組和多表連接詳解
MySQL中的分組和多表連接
一、MySQL的分組(group by )
單例函數(shù)
函數(shù) | 含義 |
---|---|
lower | 將列內(nèi)容變成小寫 |
upper | 將列內(nèi)容變成大寫 |
length() | 長(zhǎng)度 |
trim | 去除空格 |
round() | 后加正數(shù),是針對(duì)小數(shù)的四舍五入;后加負(fù)數(shù)是針對(duì)整數(shù)的四舍五入 |
rand() | 生成一個(gè)0-1之間的隨機(jī)數(shù) |
concat(a,c) | 拼接a,c兩列中的內(nèi)容,一列輸出 |
substr(a,1,2) | 截取a列中字符串中,第一位以及之后共兩位的字符 |
ifnull(A,B) | 判斷是否為空值,如果A是空值,則返回B,如果A不是空值,就返回查到的值 |
聚合函數(shù)
聚合函數(shù):輸出列的數(shù)量一般變少了,一般配合gruop by 進(jìn)行使用,一般不允許嵌套使用
函數(shù) | 含義 |
---|---|
max() | 最大值 |
min() | 最小值 |
avg() | 平均值 |
sum() | 求和 |
count() | 計(jì)數(shù) |
# 將科目進(jìn)行分組,查詢每個(gè)科目的最高值 select c_name,max(grade) from score_one group by c_name; # 注:where后邊不能加聚合函數(shù),但是可以使用單例函數(shù),因此需要使用having來進(jìn)行數(shù)據(jù)的過濾 select department,count(department) from student_one group by department having count(department)>2; # 隱式分組distinct # 表達(dá)式分組 address select substr(address,1,3),count(substr(address,1,3)) from student_one group by substr(address,1,3);
二、多表連接(表連接會(huì)產(chǎn)生大量的數(shù)據(jù)垃圾)
- 笛卡爾積連接(交叉連接)cross join:和使用,進(jìn)行連接沒有任何區(qū)別。是連接中的默認(rèn)連接。
- 內(nèi)連接:inner join … on 連接條件 過濾條件:如果兩個(gè)表中有相同的列名,可以使用using(共有的列名)表示判斷條件為列名相同的情況下的連接,相同的列名只顯示一次, 代替on
- 簡(jiǎn)單的多表連接:直接在后邊在進(jìn)行join即可
- 將子查詢的結(jié)果作為查詢表:將查詢出的結(jié)果命名為a,再利用a 與其他表進(jìn)行連接
- 連續(xù)兩次使用同一張表:同一張表指定不一樣的別名
自連接 :inner join,本表的外鍵鏈接本表,兩次引用使用不同的別名。
- 相等連接和不等連接:
- 相等連接:在on 之后使用等號(hào)(=)連接;
- 不等連接: 使用>、<、 !=進(jìn)行連接
- 外連接(左外連接和右外連接):
- 左外連接:left join … on …,必須寫連接條件,以join左邊的表為主
- 右外連接:right join … on …,必須寫連接條件,以join 右邊的表為主
- 全外連接:使用union 實(shí)現(xiàn)左外連接和右外連接的并集,也可使用union all(不會(huì)刪除重復(fù)的值)
- 自然連接 : natural join
- 使用自然連接時(shí),兩張表中必須有相同的列名
- 如果找不到相同的列名,自然連接就會(huì)變成笛卡爾積連接
到此這篇關(guān)于MySQL中的分組和多表連接的文章就介紹到這了,更多相關(guān)mysql分組和多表連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL essential版本和普通版本有什么區(qū)別?
安裝mysql的朋友可能會(huì)發(fā)現(xiàn)有時(shí)候我們看到essential版本,究竟與其它mysql版本有什么區(qū)別呢,這里簡(jiǎn)單介紹下2013-06-06MySQL 日期時(shí)間格式化函數(shù) DATE_FORMAT() 的使用示例詳解
`DATE_FORMAT()`是MySQL中用于格式化日期時(shí)間的函數(shù),本文詳細(xì)介紹了其語法、格式化字符串的含義以及常見日期時(shí)間格式組合,感興趣的朋友一起看看吧2025-03-03MySQL數(shù)據(jù)庫導(dǎo)出與導(dǎo)入及常見錯(cuò)誤解決
MySQL數(shù)據(jù)庫導(dǎo)出與導(dǎo)入的過程中將會(huì)發(fā)生眾多不可預(yù)知的錯(cuò)誤,本文整理了一些常見錯(cuò)誤及相應(yīng)的解決方法,遇到類似情況的朋友可以參考下,希望對(duì)大家有所幫助2013-07-07MySQL備份與恢復(fù)之保證數(shù)據(jù)一致性(5)
這篇文章主要介紹了MySQL備份與恢復(fù)之保證數(shù)據(jù)一致性,感興趣的小伙伴們可以參考一下2015-08-08MySQL無法啟動(dòng)1067錯(cuò)誤的又一種解決方法(機(jī)房斷電)
今早在對(duì)一張table 創(chuàng)建primay key過程中發(fā)生了斷電,當(dāng)電腦再次啟動(dòng)時(shí)候,發(fā)現(xiàn)mysql 服務(wù)無法啟動(dòng),使用 net start 提示 1067錯(cuò)誤,折騰了2個(gè)小時(shí)無法解決,后來只能通過手工刪除數(shù)據(jù)文件,日志文件,再啟動(dòng)服務(wù),然后導(dǎo)入數(shù)據(jù)來完成2013-01-01mysql通過文檔讀取并執(zhí)行命令之快速為mysql添加多用戶和數(shù)據(jù)庫技巧
這篇文章主要介紹了mysql通過文檔讀取并執(zhí)行命令之快速為mysql添加多用戶和數(shù)據(jù)庫技巧的相關(guān)資料,需要的朋友可以參考下2015-09-09優(yōu)化MySQL數(shù)據(jù)庫中的查詢語句詳解
這篇文章主要介紹了優(yōu)化MySQL數(shù)據(jù)庫中的查詢語句,非常實(shí)用的經(jīng)驗(yàn)總結(jié),需要的朋友可以參考下2014-07-07