Oracle 函数基础
Oracle 函数基础
开发工具与关键技术:PLSQL Developer,Oracle
撰写时间:2019年5月5日
Oracle 的基础语法其实不难,如果有过其他数据库基础的话,学起来可能会事半功倍
select * from user_tables;--可查询当前用户的表;
select * from all_tables;--可查询所有用户的表;
select * from dba_tables;--查询包括系统表的所有表
select * from biaoming;--查询该表的所有列
select lieming1,lieming2 from biaoming;-- 通过指定列名(以逗号分隔)来显示表的特定列;
select lieming1,lieming2+100 from biaoming;-- 使用算术运算符,数学计算(+,-,*,/)
select lieming1 as bieming from biaoming;--显示别名总是大写,除非用””
select distinct lieming1 from biaoming;--distinct 去重
select lieming1 from biaoming where tiaojian;--where 后面接条件对数据进行筛选
select lieming1 from biaoming between…and…;--查询…之间
select lieming1 from biaoming where lieming1 in ();--in 运算显示列表中的值
select lieming1 from biaoming order by lieming1;--order by 顺序排序order by desc 倒序排序
select lieming1 from biaoming where lower(lieming1) =’’--将混合大小写或大写字符串转换为小写
select lieming1 from biaoming where upper(lieming1) =’’--将混合大小写字符串转换为大写
select lieming1 from biaoming where initcap(lieming1) =’’--将每个单词的第一个字母转换为大写,其余字母转换为小写
select concat(lieming1,lieming2) from biaoming;--将两个值连在一起
select lieming1 from biaoming where substr(lieming1,X,Y)=’XY’; 提取一个确定长度的字符串;从X开始截,截到Y为XY
select length(lieming1)from biaoming;--将字符串的长度显示为数值;
select instr(lieming1,‘a’) from biaoming;--查找指定字符的数字位置;
select round(38.3881,2) from dual;--四舍五入
select mod(lieming1,被除数) from biaoming;--求余;
select lieming1,Months_between(sysdate, lieming1) from biaoming名;--两个日期相差的月数;
select next_day('01-3月-19','星期五') from biaoming;------指定日期的下一个星期 * 对应的日期
select last_day('01-2月-19') from dual;------本月的最后一天
select sysdate ,round(sysdate,'year') from dual;----对年份的四舍五入,月份同理;
select sysdate ,trunc(sysdate,'year') from dual;---日期截断,y月份同理;
select lieming1,to_char(lieming1,‘YYYY-MM-DD’)FROM biaoming;--to_char函数对日期的转换
select to_char(sysdate,'YYYY"年"MM"月"DD"日"hh:mi:ss') from dual;--to_char函数对日期的转换
select to_date('2019年03月01日11:49:49','YYYY"年"MM"月"DD"日"hh:mi:ss') from dual;--TO_DATE 函数对字符的转换
select lieming1 to_char('lieming1 ',‘L99,999,99.00’) from lieming;--TO_CHAR函数对数字的转换
select to_number('¥1,234,567,890.00','L999,999,999,999.99') from dual;-----TO_NUMBER 函数对字符的转换
select trim(leading 'h' from 'hello') "test_trim" from dual;----处理开头字符,trim函数
select lpad('lieming', 10,'*') from dual;---左对齐;
单行函数
不同的数据类型无法做到相加减,在这种情况下需要对数据进行处理,即 数据类型转换;数据类型转换分为 隐式数据类型转换、显式数据类型转换;oracle 可以自动完成隐式数据类型转换;
TO_CHAR 函数对日期的转换:1.必须包含在单引号中而且大小写敏感;2. 可以包含任意的有效的日期格式;3.日期之间用逗号隔开;
Select to_char(sysdate,’DD-MM-YYYY’) from dual;
时间格式:HH24:MI:SS AM---23:06:45 pm
使用双引号向日期中添加字符: DD ”of” MM---09-of Jan.
TO_CHAR函数对数字的转换:
select lieming1 to_char(' lieming1 ',‘L99,999,99.00’) from biaoming;
通用函数
这些函数适用于任何数据类型,同时也适用于空值;
select NVL(lieming1,’That is null’) from biaoming;--关键字:NVL,在这语句中,如果lieming1中的值为空,则显示‘That is null’
select NVL2(lieming1,lieming1+100,50) from biaoming;--关键字:NVL2,在这语句中,如果lieming1的值为空,则显示50,如果lieming1的值不为空,则在原来的基础上+100再显示
select NULLIF(lieming1,lieming2) from biaoming;--关键字:NULLIF,在这语句中,如果lieming1的值与lieming2的值相等,则返回NULL,否则返回lieming1的值;
case 表达式:
select lieming1,lieming 2,
case lieming1 when … then …
when…then…
when…then…
else lieming1 end from biaoming;
嵌套函数
单行函数可以嵌套;
嵌套的执行顺序是由内到外;
As:
Select sysdate – to_date(‘1999-11-01’,’YYYY-DD-MM’) from dual;
先执行to_date函数,再进行运算;
笛卡尔集
笛卡尔集会在如下条件产生:
1. 省略连接条件
2.连接条件无效
3.所有表中的所有行互相连接
Employees中有108条数据,departments中有27条数据,在没有连接条件过滤筛选的情况下,两表相连产生了3348条数据,如下:
多表连接
使用多个表连接查询,在WHERE 子句中写入连接条件,且在表中有相同列时,在列名之前加上表名前缀;连接 n个表,至少需要 n-1个连接条件;
多表连接—等值连接;
多表连接—非等值连接;
多表连接—外连接:使用外连接可以查询不满足连接条件的数据,符号为 ‘+’;
多表连接—自3连接:如下图
Oracle 函数基础相关教程