您的位置:首页 > 数据库 > Oracle

oracle运算、伪列、函数的常用语句格式及注解

2018-01-31 14:05 274 查看
一.关系运算和逻辑运算   1.逻辑运算符: and --并且; or --或者 ; not --不是 
in( ) --取括号里面设置的数。2.除 号(/)的结果是浮点数3.求余运算只能借助函数:mod(x,y):返回 x 除以 y 的余数。如:select mod(x,y) from dual;二、集合运算    格式:输入查询1 <集合运算符> 输入查询2 order by 1.select * from 表名1union select *from 表名2; --并集     注:显示表1+表2 的全部内容,删除重复行,相同的行在结果中只显示一次。2. 查询表1 union all 查询表2;--多并集     注:显示两个表的全部结果集,显示表1+表2 的全部内容,不删除重复,结果为多集,相同的数据会出现多次。  3.查询表1 intersect 查询表2 ; --交集     注:查询表1和表2共有的内容,并且共有内容只显示一次。  4.select * from 表名1  minus select *from 表名2;--差集     注:表1查询m行,表2查询n行,表1和表2都有h行数据     数据显示m-h行,查询出表1剔除跟表2共有的数据之后表1查询内容,差集的显示跟查询的前后顺序有关 5.全局注: 两个查询必须包含相同的列数,集合运算结果中列名由输入的查询1决定。两个表进行匹配,是对各自表的查询结果进行匹配,取值为空的列是相同的列三、伪例1.伪列只能查询不能进行增删改操作2.rowid:返回物理地址,可显示行是如何存储的,可快速定位表中某一行的位置
3.select rownum,字段 from(子查询排序) 表别名 where    rownum<=行数;   --查询显示表中的从第1行到第某行的数据4.select * from(select rownum rn,别名1.* from(select * from 表 order by 排序字段 desc) 别名1 )where rn=第某行        --查询单独的某一行排序查询→rownum 别名 查询 →行数查询注:针对查询结果集的行号进行赋值  ,先进行排序,在取行数 四、函数一、聚合函数
名称
作用
语法
avg
平均值
age(表达式)
sum
求和
sum(表达式)
min、max
最小值、最大值
min(表达式)、max(表达式)
count
数据统计
count(表达式)
nulls first  值为空的数据排在前面nulls last 值为空的数据排在后面格式:select 函数(字段) from 表名注:同时对多行数据进行操作,返回一行结果。数据统计时默认不统计空的信息,默认空是最大的。聚合函数不能直接用于where之后的,必须作为一个子查询来使用1.group by   --把相同的数据化为一组进行统计2.having是对group by分组后进行筛选select * from 表名 where 条件 group by 字段having 筛选order by 字段;                     --分组筛选执行顺序: from 表→where条件→group by →having →select→order by故,列的别名也不能在group by 和 having 中使用的聚合函数不能直接在where后面使用需要起别名聚合函数在视图中使用也需要起别名二.单行函数1.转换函数--to_date(字段,'格式');转换成标准日期格式 --to_char(字段,'格式');  转换成字符类型--to_nomber(字段,'格式'); 转换成数字类型sysdate  --插入系统当前日期时使用;日期之间相加减,加减的是天数,故而除以365天为年;如:查询 where (sysdate-hiredate)/365>=30;显示日期满30年2.其他单行函数nvl(字段,值); --当字段不为空时,返回字段本身,当字段不为空时,对这个字段赋予值nvl2(字段,值1,值2); --当字段不为空时,对这个字段赋予值1,当字段为空时,对这个字段赋予值2decode(字段,条件1,值1,条件2,值2......X)--当字段等于条件1时,返回值1,等于条件2时,返回值2 以此类推 ,当字段中数据没有等于条件时,则返回X3. 判断函数(当第一个语句满足将不执行其他的语句) 1)case when 条件 then ‘执行语句’ else‘条件都不满足时执行’ end 自定义字段名                --对范围进行匹配如:select ename,sal, case when sal>3000 then '工资高'when sal>2000 then '工资中等' else '工资较低'  end 工资等级 from emp2) case 字段 when 值 then 执行语句 else 值都不满足执行end 自定义字段                --等值匹配 4.字符函数1)length(字段); --查看字段长度2)trim();  --去空处理3)instr(值,值中某个信息);--查看某个信息在值中出现的位置4)substr(值,开始的位置,截取的长度) --显示截取到的值5)ascll(值) --返回ascll码6)concat(字符串1,字符串2) --连接字符串1和字符串27)lower(值) --转换成小写8)upper(值) --转换成大写9)replace(语句,旧内容,新内容); --从语句中查找进行替注:--查看emp中每个员工名中  S出现的次数select length(ename)-length(replace(ename,'S',''))s1,ename from emp5.数字函数1)round(值,位数) --四舍五入2)trunc(值,位数)--直接截取,不四舍五入3)abs(值) --绝对值4)ceil(值) --存在小数,整数+15)floor(值) --存在小数,去掉小数6)mod(值,值) --求余6.日期函数1)last_dar(日期);  --返回指定月的最后一天2)round(日期,fmt); --返回一个以 fmt 为格式的四舍五入日期值。默认 fmt 为 DDD,即月中的某一天。   如果fmt为“YEAR”则舍入到某年的1月1日,即前半年舍去,后半年作为下 一年。  如果fmt为“MONTH”则舍入到某月的1日,即前月舍去,后半月作为下一月。默认为“DDD”,即月中的某一天,最靠近的天,前半天舍去,后半天作为第 二天。如果fmt为“DAY”则舍入到最近的周的周日,即上半周舍去,下半周作为下一周周日。3)trunc(日期,fmt) --按格式截取日期。4)extract (fmt from 日期), 取日期中的特定部分。5)months_between    --两个日期之间的月数;6)add_months    --加日历月到日期。7)next_day    --下个星期几是几号。
三、分析函数select 函数()over(partition by 字段 排序 )别名 from 表名如果使用聚合函数则不能使用排序。row_number() :按特定标准排序的行号不并列update .....where exists( );符合exists 条件进行操作,如果不符合则不操作 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: