首页 > 技术文章 > 【Oracle】dual、sysdate、systimestamp、单行(组)函数、sql执行顺序

jwnming 2020-09-08 19:28 原文

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(排序)

推荐阅读