最近的工作對SQL的應用程度較高,而且寫的sql類型基本沒怎么涉及過,把用到的幾個關鍵字記錄下。
使用環境:達夢數據庫
達夢數據庫有個特點,他有一個叫模式的說法,在圖形化工具里直接點擊創建查詢窗口,不用像sqlserver一樣,需要選擇所屬表的庫,但是執行查詢的時候,要在查詢表的前面加上模式名,模式名.table ,在使用的時候倒是沒啥影響,就是需要多打幾個字。可以理解成Oracle中的實例。
- concat(’ ‘,’ ‘,’ ')——拼接文字和數據字段用,放在select后。
select concat(’ 測試’,id,‘z3’) from table
id=1的情況,輸出數據為
測試1z3
- datepart(mm, 字段)—— 提取日期中的年、月、日、小時、分鐘等,yy/mm/dd代表提取年/月/日,可用在select后生成新的一列,或者在where后面當做查詢條件。
select datepart(mm,date) from table
查詢此表中date字段的月份數據。
- round(字段名,2) ——保留字段值指定小數位數,四舍五入。示例為保留兩位。
select round(shuzi,2) from table
設定shuzi列為2.145674,查詢結果為 2.14
- convert(nvarchar,convert(decimal,字段)) ——轉換字符串類型,基礎命令為convent(數值類型,字段名),示例為將字段轉換成decimal(精度更高的數值類型創建時需定義總數),然后再轉換成varchar,這么寫的原因是,如果直接轉換成varchar類型,在concat()拼接函數里顯示的科學計數法,而非準確的數值。
- +,-,*,/ 四則運算,直接在兩個字段間用就可以。
- DateAdd(year,-1,date)——將日期字段減去一年顯示。目前是在where后使用。
select * from a left join b on a.id=b.id where a. DateAdd(year,-1,a.date)=b.date
a和b是同一個表。這么寫的目的是對比今年和去年在同一時期的數據。
- 這個函數分為兩部分。
month()、year()、day() 返回指定日期字段的月,日,年。
getdate(),獲取當前系統日期。
month(date)=month(getdate()) ——當月數據
year(date)=year(getdate()) ——當年數據
day(date)=day(getdate()) ——當天數據
select * from table where year(date)=year(getdate())-1 and month(date)=month(getdate())
此條sql為查詢本月去年的數據。
- left join 1=1 將要查詢的兩個表結果拼接。
這個地方理解的不是很透徹,但是拼接效果是達到我的預期了,后面理解下cross join
https://qa.1r1g.com/sf/ask/2476240231/
- having 用在group by 后面,對group by 分組后數據進行篩選。
力扣做題參考別人的答案看到的,實際應用較少,仍需進一步理解
having對組,where對行。
https://blog.csdn.net/qq_37634156/article/details/120055284
參考文章
SQL Server 數據庫之日期和時間函數
https://blog.csdn.net/weixin_43960383/article/details/124596591