1. 程式人生 > 實用技巧 >【Oracle】dual、sysdate、systimestamp、單行(組)函式、sql執行順序

【Oracle】dual、sysdate、systimestamp、單行(組)函式、sql執行順序

dual、sysdate、systimestamp、單行(組)函式、sql書寫(執行)順序

①. 特殊關鍵字dual、sysdate、systimestamp
	dual:虛表,一行一列的表
			1.站在資料的角度,無意義
			2.作用是維護sql語句的完整性

		例如:
		select 1000*1000 from dual;

	sysdate: 當前系統時間(年 月 日 時 分 秒)
		select sysdate from dual;
	systimestamp: 時間戳,也是當前系統時間 (年 月 日 時 分 秒 毫秒)
		select systimestamp form dual;
②. 函式-單行函式
	對查詢的每條資料進行一條函式的處理

	常用:
		to_char( 被轉化的日期,’日期格式關鍵詞’); 			將日期轉化為字串
		to_date( ‘被轉化的日期字串’,’日期格式關鍵詞’);	將字串轉化為日期
日期格式關鍵詞:yyyy(年),mm(月),dd(日),hh24(時,24小時制),mi(分),ss(秒),day(星期)
	
	用法:
		select to_char(sysdate, ‘yyyy-mm-dd’) from dual; 		查詢日期轉化為日期字串:年 月 日
		select to_date(‘2001-3-23’, ‘yyyy-mm-dd’) from dual;  	將日期字串轉化為日期
		select to_char(to_date(‘2000-12-2’, ‘yyyy-mm-dd’), ‘day’) form dual; 	將日期字串最後轉為日期:星期
		
③. 函式-組函式
	查詢表資料進行分組、對每組資料處理產生一條結果
	
	常見組函式:
		max(欄位)			所查詢欄位的最大值
		min(欄位)			所查詢欄位的最小值
		avg(欄位)				所查詢欄位的平均值
		sum(欄位)			所查詢欄位的總和
		count(欄位 或 *)		所查詢欄位的行數
	注意:組函式對null不做任何統計,自動忽略

	分組:
		語法:group by 欄位名1,欄位名2;
		注意:	①group by 在where條件篩選之後
				②select後可以查詢分組的依據欄位,組函式的統計(其他不能查詢)
	
	分組的過濾:
		語法:group by 欄位 having 條件;
		注意:	①where是在分組前對資料過濾
				②having是在分組後對資料驚醒過濾
				③如果where和having同時滿足查詢要求時,優先選擇where
④. sql語句順序
①書寫順序:select…from…where…group by…having…order by [asc/desc]
②執行順序:from(確定表) ---> where(分組前過濾) ---> group by(分組) ---> having(分組後過濾) ---> select(查詢) ---> order by(排序)