MySQL基礎語法實踐

哈哈,又報錯了發表於2020-11-25

基本格式資料處理轉換

1、時間格式化
date_format(date,‘format’)
這裡可以參考w3cSchool 的格式,方便進行快速轉換!
這裡也把圖貼出來,方便直接預覽:


可以直接根據需求對時間進行快速轉換,如:
select concat(date_format(create_time,'%H'),' 時') as hours from table

2、獲取今天發生的訂單?
select * from order where create_time > CURRENT_DATE()
某些同學可能認為這樣不行,但是這種語法是正確的哦,CURRENT_DATE()取時間是當前日期格式,如: YYYY-MM-DD

3、concat 拼接函式的使用
某些時候,我們在業務上可能需要查出來 xxxx,但是因為需求,我們要加上 xxxx元,這個時候就可以採用concat了
select concat(money,'元') as money from table
當然,這樣的格式也是可以的。
select concat(money,'元','分') as money from table

4、group by ! 可能這個語句在 crud 當中用的非常少,在以前,如果我要把大量資料分組,可能我會採用查詢出來然後for遍歷放入map統計,但是這樣效率堪憂,所以我們可以使用 group by 來獲取統計後的效果
select sum(0) as counts,a from table group by a order by counts desc
這裡,要注意,我們統計了a出現的次數,並且以counts進行倒敘排序

5、having 作為不常用語法,但是又經常用的,直接舉例子
SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log INNER JOIN Websites ON access_log.site_id=Websites.id) GROUP BY Websites.name HAVING SUM(access_log.count) > 200;
根本原因是where 不能和聚合函式配合使用

6、between …and… 需要注意的就是 start 是被 between 包括的,而後面的時間是不被包括的
select * from table where create_time between '2020-11-11' and '2020-11-24'

7、字元轉換,format()、convert()、cast()
format的特點: FORMAT函式在mysql中是資料內容格式化,可以格式化資料為整數或者浮點數
select format(1111111.22333,2) as formatResult

仔細觀察,發現去掉了小數,保留兩位,但是我們發現竟然加上了 ‘,’,有時候遇到這個問題沒有仔細觀察真的很致命,所以格式化可考慮 convert() 或者 cast()

convert的特點: 可用來獲取一個型別的值,併產生另一個型別的值,用法如下
select convert(1111111.22333,type) as formatResult
type 中我們可以填入任何格式,這裡舉常用的兩種型別
decimal:
select convert(1111111.22333,decimal(12,2)) as formatResult
int:
select convert(1111111.22333,SIGNED) as formatResult
其他的以此類推,可用引數如下:
二進位制,同帶binary字首的效果 : BINARY
字元型,可帶引數 : CHAR()
日期 : DATE
時間: TIME
日期時間型 : DATETIME
浮點數 : DECIMAL
整數 : SIGNED
無符號整數 : UNSIGNED

cast(): 同convert 貼出使用引數
select cast(1111111.22333,SIGNED) as formatResult
CHAR[(N)] 字元型
DATE 日期型
DATETIME 日期和時間型
DECIMAL float型
SIGNED int
TIME 時間型