又是忙碌的一天,進入正題
group by ,分組
例如:select ename from emp group by ename,根據(jù)名字進行分組。
? 1.select后的篩選關(guān)鍵字必須為分組依據(jù)對應(yīng)。不能將分組字段之外的字段放在select后面
? 2.group by后可接多個字段,則多個字段的數(shù)據(jù)相同時,才能分為一組。
? 3.分組之后,可以使用分組函數(shù)對每個組進行數(shù)據(jù)處理。 例如avg()。
牢記分組完后,多個列為一組,隱藏看不見!
連接
用兩個表(a_table、b_table),關(guān)聯(lián)字段a_table.a_id和b_table.b_id來演示一下MySQL的內(nèi)連接、外連接( 左(外)連接、右(外)連接、全(外)連接)。
MySQL版本:Server version: 5.6.31 MySQL Community Server (GPL)
數(shù)據(jù)庫表:a_table、b_table
主題:內(nèi)連接、左連接(左外連接)、右連接(右外連接)、全連接(全外連接)
前提
建表語句:
CREATE TABLE `a_table` (
? `a_id` int(11) DEFAULT NULL,
? `a_name` varchar(10) DEFAULT NULL,
? `a_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `b_table` (
? `b_id` int(11) DEFAULT NULL,
? `b_name` varchar(10) DEFAULT NULL,
? `b_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
表測試數(shù)據(jù):
一、內(nèi)連接
關(guān)鍵字:inner join on
語句:select * from a_table a inner join b_table bon a.a_id = b.b_id;
執(zhí)行結(jié)果:

說明:組合兩個表中的記錄,返回關(guān)聯(lián)字段相符的記錄,也就是返回兩個表的交集(陰影)部分。
二、左連接(左外連接)
關(guān)鍵字:left join on / left outer join on
語句:select * from a_table a left join b_table bon a.a_id = b.b_id;
說明:

left join 是left outer join的簡寫,它的全稱是左外連接,是外連接中的一種。
左(外)連接,左表(a_table)的記錄將會全部表示出來,而右表(b_table)只會顯示符合搜索條件的記錄。右表記錄不足的地方均為NULL。
三、右連接(右外連接)
關(guān)鍵字:right join on /?right outer join on
語句:select * from a_table a?right outer join?b_table b?on?a.a_id = b.b_id;
說明:

right join是right outer join的簡寫,它的全稱是右外連接,是外連接中的一種。
與左(外)連接相反,右(外)連接,左表(a_table)只會顯示符合搜索條件的記錄,而右表(b_table)的記錄將會全部表示出來。左表記錄不足的地方均為NULL。
? ? 今天暫時這些,明天繼續(xù)。