---
# System prepended metadata

title: 0329 MySQL
tags: [MySQL]

---

0329 MySQL
===

###### tags: `MySQL` 

## CASE 語法
 ### 列舉式
CASE expr
    when v1 then r1
    when v2 then r2
    ....
    ELSE r
END    
 ### 條件式
CASE 
   when condition1 then r1
   when condition2 then r2
   ....
   ELSE r
END


## 字串資料

### 實數
1.DECIMAL(M,D)
2.NUMERIC(M,D)
  總長度(M)=整數+小數(D) ,**預設值為10

## 函數

### 字串函數
  CONCAT(str1,str2...) 字串連接
  LENGTH(str) 字串長度
  SUBSTRING (str,pos,len) 截取字串部分字元
  REPEAT (str,count) 將指定字串重複,指定次數
  STRCMP(expr1,expr2) 比較兩個字串大小
  INSTR('String',1,3)=str
  LPAD(sal,10,'*')=******5000
  TRIM('S'FORM'SSMITH')=MITH

### 數值函數
  ROUND(X,D)=四捨五入
  MOD(N,M)=求餘數
  CEIL(X)=傳回不小於x的最小整數值
  FLOOR(X)=傳回不大於x的最大整數值
  SQRT(X)=平方根
  
## 函數2
### 日期時間函數
   CURDATE() 現在日期
   CURTIME() 現在時間
   NOW()     現在日期與時間
### 傳回日期時間部分資料的函數
   YEAR(date) 指定日期的年份
   MONTH(date)指定日期的月份
   DAY(date)  指定日期的日份
   EXTRACT(type FROM date) 傳回指定日期單位
   WEEKDAY(date) 傳回星期索引(0,一,6,日)
   
### 修改/計算日期和時間的函數
   DATEDIFF(expr1,expr2) 兩個日期相減
   ADDDATE (date,INTERVAL expr type) 日期加法 INTERVAL 為必須值
   SUBDATE (date,INTERVAL expr type) 日期減法 同上
   ADDTIME (expr1,expr2) 時間加法
   SUBTIME(expr1,expr2) 時間減法
   
### 轉換日期時間與字串的函數
   DATE(expr) 將字串轉成日期
   LAST_DAY(date) 指定日期月份的最後一天
   
 #### DATE_FORMAT(date,format)
  ex:date_format(curdate(),'%D,%M,%Y')
 以2022/03/29為例 =29th,MARCH,2022 
   
## 通用函數   
### IFNULL()Function
IFNULL(EXPR1,EXPR2)
如果 EXPR1是NULL則顯示EXPR2
若EXPR1不是NULL 則顯示EXPR1
EXPR1可指定參數 顯示EXPR2的形式

### NULLIF()Function
NULLIF(expr1,expr2)
If 
   expr1=expr2
then 
   return null
else 
   return expr1


## 彙總函數
### COUNT(STAR)















## Notes 
補充:
![](https://i.imgur.com/DlqFeEw.png)

![](https://i.imgur.com/Hq4KZwX.png)

## Join
![](https://i.imgur.com/pPY8oNf.png)
![](https://i.imgur.com/8r6r7e7.png)
![](https://i.imgur.com/FH2k3lq.png)



