根據應用場景,不定時更新,歡迎大家把自己遇到的問題留言,稍後完善。 1 mySql三範式 1.1 第一範式(1NF) (必須有主鍵,列不可分)資料庫表中的任何欄位都是單一屬性的,不可再分 1.2 第二範式(2NF) (當一個表是複合主鍵時,非主鍵的欄位不依賴於部分主鍵(即必須依賴於全部的主鍵欄位)) ...
根據應用場景,不定時更新,歡迎大家把自己遇到的問題留言,稍後完善。
1 mySql三範式
1.1 第一範式(1NF)
(必須有主鍵,列不可分)資料庫表中的任何欄位都是單一屬性的,不可再分
1.2 第二範式(2NF)
(當一個表是複合主鍵時,非主鍵的欄位不依賴於部分主鍵(即必須依賴於全部的主鍵欄位))
資料庫表中非關鍵欄位對任一候選關鍵欄位的 都 不存在部分函數依賴
1.3 第三範式(3NF)
關係模式R(U,F)中的所有非主屬性對任何候選關鍵字都不存在傳遞依賴
2 各種場景
2.1 批量更新表數據
適用場景:將表table_a數據中欄位a,批量更新到表table_b中。適用於表遷移。
關鍵字:inner join
sql語句:update table_a a inner join table_b b on b.org_id=a.department_id set a.department_short_name = b.short_name
解釋:table_a的department_id和table_b的org_id中值一樣,需要將table_b 中idorg_id一樣的short_name批量更新到table_a中。
2.2 條件語句,給欄位重新賦值
適用場景:每個枚舉,返回對應的字元串。
關鍵字:case when x=y then e when x=z then f end
sql語句:(case when a.status=1 then '申請中' when a.status=2 then '受理中' when a.status=3 then '已轉賬' when a.status=4 then '拒絕' end) as status
解釋:當status為1時狀態為申請中,當status為2時狀態為受理中,當status為3時狀態為已轉賬,當status為4時狀態為拒絕。
2.3 條件語句,給欄位拼接字元
適用場景:給欄位拼接字元。
關鍵字:concat
sql語句:(case when a.type=0 then concat('-',a.score) else concat('+',a.score) end) as showscore
解釋:當type為0時score增加“-”首碼,當type為其他時score增加“+”首碼。