【計(jì)算機(jī)本科補(bǔ)全計(jì)劃】Mysql 學(xué)習(xí)小計(jì)(2)

正文之前

昨天下午寫(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)排序。

  • 你可以使用 ASCDESC 關(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é)咯~~

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • SQL SELECT 語(yǔ)句 一、查詢(xún)SQL SELECT 語(yǔ)法 (1)SELECT 列名稱(chēng) FROM 表名稱(chēng) (2...
    有錢(qián)且幸福閱讀 5,654評(píng)論 0 33
  • SQL 語(yǔ)法大全 標(biāo)簽(空格分隔): SQL DB2 SQL語(yǔ)法大全 SQL SELECT SQL SELECT ...
    lumicinta閱讀 12,950評(píng)論 3 196
  • 什么是數(shù)據(jù)庫(kù)? 數(shù)據(jù)庫(kù)是存儲(chǔ)數(shù)據(jù)的集合的單獨(dú)的應(yīng)用程序。每個(gè)數(shù)據(jù)庫(kù)具有一個(gè)或多個(gè)不同的API,用于創(chuàng)建,訪(fǎng)問(wèn),管理...
    chen_000閱讀 4,055評(píng)論 0 19
  • MySQL技術(shù)內(nèi)幕:SQL編程 姜承堯 第1章 SQL編程 >> B是由MySQL創(chuàng)始人之一Monty分支的一個(gè)版...
    沉默劍士閱讀 2,473評(píng)論 0 3
  • “阿娘,為何你要賺錢(qián)養(yǎng)家? 阿娘,為何我們要居住遠(yuǎn)方? 阿娘,為何養(yǎng)的鸚鵡嘴里總是提著歸家? 阿娘,為何我們總有來(lái)...
    jerri_謝耳朵閱讀 587評(píng)論 2 6