正文之前
昨天下午寫(xiě)了篇 Mysql學(xué)習(xí)小計(jì),結(jié)果出乎意料的受歡迎?變相刺激了我多寫(xiě)點(diǎn) Mysql?好吧,如爾所愿。我晚上反正還不知道學(xué)點(diǎn)啥,就把今天看的那個(gè)菜鳥(niǎo)教程學(xué)完吧,到時(shí)候估計(jì)一點(diǎn)了,就可以睡了。
正文
Mysql 排序
select field1, field2,...fieldN table_name1, table_name2 order by field1, [field2...] [ASC [DESC]]
你可以使用任何字段來(lái)作為排序的條件,從而返回排序后的查詢(xún)結(jié)果。
你可以設(shè)定多個(gè)字段來(lái)排序。
你可以使用
ASC
或DESC
關(guān)鍵字來(lái)設(shè)置查詢(xún)結(jié)果是按升序或降序排列。 默認(rèn)情況下,它是按升序排列。你可以添加
where...like
子句來(lái)設(shè)置條件。
Mysql group by 語(yǔ)句
group by
語(yǔ)句根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。
在分組的列上我們可以使用 COUNT, SUM, AVG
,等函數(shù)。
select column_name, function(column_name) from table_name where column_name operator value
group by column_name;
使用 with rollup
WITH ROLLUP
可以實(shí)現(xiàn)在分組統(tǒng)計(jì)數(shù)據(jù)基礎(chǔ)上再進(jìn)行相同的統(tǒng)計(jì)(SUM,AVG,COUNT…)
。
例如我們將以上的數(shù)據(jù)表按名字進(jìn)行分組,再統(tǒng)計(jì)每個(gè)人登錄的次數(shù):
其中記錄 null 表示所有表格名稱(chēng)的id之和(aid表示表明相同的所有記錄的tableid 相加 而null行表示所有aid之和)。
我們可以使用 coalesce 來(lái)設(shè)置一個(gè)可以取代 NUll 的名稱(chēng),coalesce 語(yǔ)法:
select coalesce(a,b,c);
如果a==null,則選擇b;如果b==null,則選擇c;如果a!=null,則選擇a;如果a b c 都為null ,則返回為null(沒(méi)意義)。簡(jiǎn)單點(diǎn)說(shuō)就是顯示按照group by劃分好的組顯示完畢之后,如果要繼續(xù)顯示,那么coalesce 會(huì)提供一個(gè)默認(rèn)的名稱(chēng)上去取代null。
以下實(shí)例中如果名字為空我們使用總數(shù)代替:
Mysql 連接的使用
你可以在 select, UPDATE 和 DELETE 語(yǔ)句中使用 Mysql 的 join 來(lái)聯(lián)合多表查詢(xún)。
join 按照功能大致分為如下三類(lèi):
inner join(內(nèi)連接,或等值連接):獲取兩個(gè)表中字段匹配關(guān)系的記錄。
left join(左連接):獲取左表所有記錄,即使右表沒(méi)有對(duì)應(yīng)匹配的記錄。
right join(右連接): 與 left join 相反,用于獲取右表所有記錄,即使左表沒(méi)有對(duì)應(yīng)匹配的記錄。
Mysql的 left join 與 join 有所不同。 Mysql left join 會(huì)讀取左邊數(shù)據(jù)表的全部數(shù)據(jù),即便右邊表無(wú)對(duì)應(yīng)數(shù)據(jù)。
Mysql 的right join 會(huì)讀取右邊數(shù)據(jù)表的全部數(shù)據(jù),即便左邊邊表無(wú)對(duì)應(yīng)數(shù)據(jù)。
Mysql null 值處理
我們已經(jīng)知道 Mysql 使用 SQL select 命令及 where 子句來(lái)讀取數(shù)據(jù)表中的數(shù)據(jù),但是當(dāng)提供的查詢(xún)條件字段為 null 時(shí),該命令可能就無(wú)法正常工作。
為了處理這種情況,Mysql提供了三大運(yùn)算符:
is null: 當(dāng)列的值是 null,此運(yùn)算符返回 true。
is not null: 當(dāng)列的值不為 null, 運(yùn)算符返回 true。
<=>: 比較操作符(不同于=運(yùn)算符),當(dāng)比較的的兩個(gè)值為 null 時(shí)返回 true。
以下實(shí)例中你可以看到 = 和 != 運(yùn)算符是不起作用的:
select * from tableuse where createtime!=null;
查找數(shù)據(jù)表中 createtime列是否為 null,必須使用 is null 和 is not null:
select * from tableuse where createtime is not null;
Mysql 正則表達(dá)式:
下表中的正則模式可應(yīng)用于 regexp 操作符中。
正文之后
告一段落,該睡覺(jué)了。這個(gè)教程來(lái)自Mysql - 菜鳥(niǎo)教程 ,這個(gè)網(wǎng)站真的是個(gè)好東西,太喜歡了!希望大家也好好的學(xué)習(xí)啊??!睡覺(jué)咯~~