【计算机本科补全计划】Mysql 学习小计(2)
正文之前
昨天下午寫了篇 Mysql學習小計,結果出乎意料的受歡迎?變相刺激了我多寫點 Mysql?好吧,如爾所愿。我晚上反正還不知道學點啥,就把今天看的那個菜鳥教程學完吧,到時候估計一點了,就可以睡了。
正文
Mysql 排序
select field1, field2,...fieldN table_name1, table_name2 order by field1, [field2...] [ASC [DESC]] 復制代碼-
你可以使用任何字段來作為排序的條件,從而返回排序后的查詢結果。
-
你可以設定多個字段來排序。
-
你可以使用 ASC 或 DESC 關鍵字來設置查詢結果是按升序或降序排列。 默認情況下,它是按升序排列。
-
你可以添加where...like 子句來設置條件。
Mysql group by 語句
group by 語句根據一個或多個列對結果集進行分組。 在分組的列上我們可以使用 COUNT, SUM, AVG,等函數。
select column_name, function(column_name) from table_name where column_name operator value group by column_name; 復制代碼使用 with rollup
WITH ROLLUP 可以實現在分組統計數據基礎上再進行相同的統計(SUM,AVG,COUNT…)。 例如我們將以上的數據表按名字進行分組,再統計每個人登錄的次數:
其中記錄 null 表示所有表格名稱的id之和(aid表示表明相同的所有記錄的tableid 相加 而null行表示所有aid之和)。
我們可以使用 coalesce 來設置一個可以取代 NUll 的名稱,coalesce 語法:
select coalesce(a,b,c); 復制代碼如果a==null,則選擇b;如果b==null,則選擇c;如果a!=null,則選擇a;如果a b c 都為null ,則返回為null(沒意義)。簡單點說就是顯示按照group by劃分好的組顯示完畢之后,如果要繼續顯示,那么coalesce 會提供一個默認的名稱上去取代null。
以下實例中如果名字為空我們使用總數代替:
Mysql 連接的使用
你可以在 select, UPDATE 和 DELETE 語句中使用 Mysql 的 join 來聯合多表查詢。 join 按照功能大致分為如下三類:
-
inner join(內連接,或等值連接):獲取兩個表中字段匹配關系的記錄。
-
left join(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。
-
right join(右連接): 與 left join 相反,用于獲取右表所有記錄,即使左表沒有對應匹配的記錄。
Mysql的 left join 與 join 有所不同。 Mysql left join 會讀取左邊數據表的全部數據,即便右邊表無對應數據。
Mysql 的right join 會讀取右邊數據表的全部數據,即便左邊邊表無對應數據。
Mysql null 值處理
我們已經知道 Mysql 使用 SQL select 命令及 where 子句來讀取數據表中的數據,但是當提供的查詢條件字段為 null 時,該命令可能就無法正常工作。 為了處理這種情況,Mysql提供了三大運算符:
-
is null: 當列的值是 null,此運算符返回 true。
-
is not null: 當列的值不為 null, 運算符返回 true。
-
<=>: 比較操作符(不同于=運算符),當比較的的兩個值為 null 時返回 true。
以下實例中你可以看到 = 和 != 運算符是不起作用的:
select * from tableuse where createtime!=null; 復制代碼查找數據表中 createtime列是否為 null,必須使用 is null 和 is not null:
select * from tableuse where createtime is not null; 復制代碼Mysql 正則表達式:
下表中的正則模式可應用于 regexp 操作符中。
正文之后
告一段落,該睡覺了。這個教程來自Mysql - 菜鳥教程 ,這個網站真的是個好東西,太喜歡了!希望大家也好好的學習啊!!睡覺咯~~
總結
以上是生活随笔為你收集整理的【计算机本科补全计划】Mysql 学习小计(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tp框架中的一些疑点知识-5
- 下一篇: Mac安装MySQL数据库