oracle基础(四)--函数

1.使用特定格式插入日期值
使用to_date函数
思考:如何插入列带有日期的表,并按照年-月-日的格式插入?
insert into emp values (9998, ‘小红’, ‘MANAGER’,7782, ‘1988-11-11’,78.9,55.33,10);
上面的日期写入不对,正确的方式如下:
insert into emp values(9998,‘小红’,‘MANAGER’,7782,‘11-11月-1988’,78.9,55.33,10);
或者使用 to_date函数:
insert into emp values(9998,‘小红2’,‘MANAGER’,7782,to_date(‘1988-12-12’, ‘yyyy-mm-dd’),78.9, 55.33, 10);

2.用子查询更新和插入数据
update emp set (job,sal,comm)=(select job,sal,comm from emp where ename=‘SMITH’) where
ename=‘SCOTT’;

3.提交事物
当执行使用commit语句可以提交事务。当执行了commit语句之后,会确认事务的变化,结束事务,删除保存点,释放锁,当使用commit语句结束事务之后,其它会话将可以查看到事务变化后的跟新数据

4.只读事务
只读事务是指允许执行查询的操作,而不允许执行任何其它dml操作的事务,使用只读事务可以确保用户只能取得某时间点的数据。假定机票代售点每天18点开始统计今天的销售情况,这时可以使用只读事务。在设置了只读事务后,但是只读事务将不会取得最新数据的变化,从而可以保证取得特定时间点的数据信息
设置只读事务:
set transaction read only

5.字符函数
lower(char): 将字符串转化为小写的格式
upper(char): 将字符串转化为大写的格式
length(char): 返回字符串的长度
substr(char, m, n): 取字符串的子串
replace(char1, search_string, replace_string)
instr(char1, char2, [,n[,m]]) 取子串在字符串的位置

6.数学函数
round(n, [m])
该函数用于执行四舍五入,如果省掉m,则四舍五入到整数; 如果m是正数,则四舍五入到小数点m位后。如果m是负数,则四舍五入到小数点的m位前

trunc(n,[m])
         该函数用于截取数字。如果省掉m,就截去小数部分,如果m是正数就截取到小数点的m位后,如果m是负数,则截取到小数的前m位    
mod(m,n)
floor(n)   返回小于或等于n的最大整数
ceil(n)     返回大于或是等于n的最小整数
abs(n)     返回数字n的绝对值
exp(n)     返回e的n次幂
log(m,n)  返回对数值

7.日期函数
日期函数用于处理date类型的数据
默认情况下日期格式是 dd-mon-yy 即12-7月-78
(1) sysdate: 该函数返回系统时间
(2) add_months(d,n)
(3) last_day(d): 返回指定日期所在月份的最后一天

8.获取当前时间
select sysdate from dual;
select * from emp where sysdate>add_months(hiredate, 8); //八个月前
select hiredate,ename from emp where last_day(hiredate)-2=hiredate;

9.转换函数
转换函数用于将数据类型从一种转为另外一种,在某些情况下,oracle server允许值的数据类型和实际的不一样,这时oracle server会隐含的转化数据类型
比如:
create table t1(id int);
insert into t1 values(‘10’) —>这样oracle会自动的将’10’ ---->10

 create  table  t2 (  id  varchar2(10)  );
 insert  into  t2  values(1);  -->这样oracle就会自动将1--->  '1';
  我们要说的是尽管oracle可以进行隐含的数据类型的转换,但是它并不适用所有的情况,为了提高程序的可靠性,我们应该适用转换函数进行转换
  1. to_char
    你可以使用select ename,hiredate,sal from emp where deptno=10;
    yy: 两位数字的年份 2004—> 04
    yyyy:四位数字的年份 2004年
    mm: 两位数字的月份 8月—>08
    dd: 2位数字的天 30号—>30
    hh24: 8点 —> 20
    hh12: 8点 —> 08
    mi, ss ----> 显示分钟\秒

    9:显示数字,并忽略前面0
    0:显示数字,如位数不足,则用0补充
    .: 在指定位置显示小数点
    ,: 在指定位置显示逗号
    $: 在数字前加美元
    L: 在数字前加本地货币符号
    C: 在数字前加国际货币符号
    G: 在指定的位置显示组分隔符
    D: 在指定位置显示小数点符号(.)

 显示1980年入职的所有员工
 select  *   from  emp  where  to_char(hiredate, 'yyyy')=1980
  显示所有12月份入职的员工
  select  *  from  emp  where  to_char(hiredate, 'mm')=12;

  select  ename,to_char(hiredate, 'yyyy-mm-dd hh24:mi:ss')  from   emp;

11.to_date
函数to_date用于将字符串转成date类型的数据

12.系统函数
sys_context
1)terminal:当前会话客户所对应的终端的标识符
2)language: 语言
3)db_name: 当前数据库名称
4)nls_date_format: 当前会话客户所对应的日期格式
5)session_user: 当前会话客户所对应的数据库用户名
6)current_schema: 当前会话客户所对应的默认方案名
7)host: 返回数据库所在主机的名称

   查使用那个数据库?
   select   sys_context('userenv',  'db_name')  from  dual;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值