数据库-Oracle学习笔记(6)

返回上一个学习笔记可点击本处

日期常见函数(补)

next_day函数

  • 语法:next_day(date, c) 返回date日期的下一个周几/星期几,周几是由参数c决定的。
  • 说明:月 03 02 3月 2月
    日/天 1 2 3 星期一 星期二
    中文环境下,c的取值可以’星期一’-‘星期天’
    英文环境下,c的取值WEDNESDAY
    为了不免麻烦,c的取值用数值1-7 表示周日-周六
  select sysdate, next_day(sysdate,4) from dual;

extract函数

  • 语法:extract(date from datetime) 从参数datetime中提取出参数date指定的数据,比如提取年,月,日
    参数date的取值:year年 month月 day日 hour时 minute分 second秒
  select extract(year from systimestamp)  from dual;
  select extract(month from systimestamp) from dual;
  select extract(day from systimestamp) from dual;
  select extract(hour from timestamp '2020-03-04 09:05:10')from dual;
  select extract(hour from systimestamp) from dual;
  select extract(hour from cast(sysdate as timestamp)) from dual;
  select extract(minute from systimestamp) from dual;
  select extract(second from systimestamp) from dual;

空值操作

1)空值的含义 null

数据库中一个非常重要的概念,null/NULL,空值
有时候表中某些字段的值,数据未知或暂时不存在,都是null
任何数据类型(数值类型、日期类型、字符串类型)均可以取值为空null。

2)插入空值

表test --> id列 name列 age列

  • (1)显式插入null值
    insert into test(id, name, age) values(1, ‘zs’, null);
  • (2)隐式插入null值
    insert into test(id,name) values(2, ’ls’); age列隐式插入null
  create table test(
      id  number(2),
      name varchar2(10),
      age  number(3)
  );
  insert into test(id, name, age) values(1, 'zs', 20);
  insert into test(id, name, age) values(2, 'ls', null);
  insert into test(id, name)  values(3, 'ww');

3)更新null值

注意更新null值时,此列必须没有非空约束才可以更新。

  update  test set age=null where id=1;
  update  test set name=null where id=2;

4)null值条件查询

  select * from test where name is null;

强调:查询条件中判断列是否等于null值,使用is,而不是用=

5)非空约束 not null

非空约束是确保字段的值不能为空

   create table test(
         id number(2),
         name varchar2(10) not null
   );

name列加上了非空约束,该name列不允许插入null值,不允许修改为null了。

6)空值相关的函数

  • (1)nvl函数
    语法:nvl(e1,e2) 将null转为非null值
    –如果e1为null,则取值e2,e2为实际值
    –e1和e2可以是任何数据类型,但两个参数的数据类型必须是一致的。
  计算员工的收入=底薪sal+提成comm   
  select ename, sal, comm, sal+comm from emp;
  select ename, sal, comm, sal+nvl(comm, 0)  from emp;
  • (2)nvl2函数
    语法:nvl2(e1, e2, e3) 和nvl函数功能类似,都是将null转为非null值。
    nvl2用来判断e1是否为null,如果不是null,用e2的值;
    如果是null,用e3的值
  select ename,sal,comm,sal+nvl2(comm,comm,0) from emp;
  select ename,sal,comm,nvl2(comm,comm+sal,0+sal) from emp;
  select ename,sal,comm,nvl2(comm,comm+sal,sal) from emp;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值