又是忙碌的一天拇厢,進(jìn)入正題
group by 赏枚,分組
例如:select ename from emp group by ename,根據(jù)名字進(jìn)行分組目胡。
? 1.select后的篩選關(guān)鍵字必須為分組依據(jù)對應(yīng)青扔。不能將分組字段之外的字段放在select后面
? 2.group by后可接多個字段源织,則多個字段的數(shù)據(jù)相同時翩伪,才能分為一組。
? 3.分組之后谈息,可以使用分組函數(shù)對每個組進(jìn)行數(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ù)闰蛔。