Oracle 内置函数

 修改表的结构


   6.1 修改字段类型
    alter table 表名称
    alter column 字段名 类型 约束;
   6.2 添加或者删除列
    alter table 表名称
    add 字段名 类型 约束
    
    alter table 表名称
    drop column 字段名
   6.3 添加或删除约束
    非空:
    alter table 表名称
    alter column 字段名 类型 约束;
    
    其他
    alter table 表名称
    add constraint 约束名称(字段名)

回顾 分页 !!

select * from emp;

--求工资最高的前三位位员工信息
select a.*,rownum from
(
       select * from emp order by sal desc
)a where rownum <= 3

--分页代码(默认显示第一页,条数5)
select b.* from 
(
       select a.*,rownum as rid from emp a 
)b where b.rid between 6 and 10;

-----JavaWEB  分页
start = 结束下标-条数 +1
start = (页码 - 1)*条数 +1
end = 页码 * 条数

--数据类型(number  varchar2 date)
--创建表+约束
--dual  伪表
select 'abc' from dual
-- || 拼接
-- as 别名
--order by asc desc group by having  between...and  运算符

--is null  为空  =null==》不合法   
--nvl() 如果某字段为空,使用指定的结果替代
--sqlserver:isnull

select * from emp;

select ename,sal+nvl(comm,0) from emp;

基本函数的使用 !

--今日内容:oracle-03 内置函数
#1.什么是内置函数????
#系统自带,无需实例化,直接调用即可
#2.oracle中的内置函数分类
#(1)转换函数
#(2)日期函数
#(3)字符串函数
#(4)数学函数
#(5)分析函数(统计函数) max min count sum avg
#(6)其它函数 nvl nvl2
======================================================================
--(1)转换函数to_number  to_char  to_date
#to_number   转换数值型
select '1'+1 from dual;
select to_number('1')+1 from dual;
select to_number('helloworld') from dual;
--Intger.parseInt('sb');

#to_char 转换字符串型
select to_char(123) from dual;
-- yyyy-mm-dd hh:mi:ss  12小时制
-- yyyy-mm-dd hh24:mi:ss  24小时制
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
--SimpleDateFormat
select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh:mi:ss') from dual
#to_date  转换日期
create table tb_demo
(
       did number primary key,
			 ddate date

)
insert into tb_demo values(1,'2020-12-12');
insert into tb_demo values(1,to_date('2020-12-12','yyyy-mm-dd'))
select * from tb_demo;

--(2) 日期函数sysdate,systimestamp,add_months,months_between,last_day,next_day,round,trunc
--获取当前的系统时间
select sysdate from dual;
--获取当前的系统时间精确到毫秒以及时区
select systimestamp from dual;
--add_months 在指定日期的基础上新增或者减少指定的月份
select add_months(sysdate,2) from dual;--新增
select add_months(sysdate,-1) from dual;--减少
--months_between 求月份差
select months_between(sysdate,to_date('2020-12-12','yyyy-mm-dd'))
from dual;
--next_day 获取当前时间的后面的星期二是哪一天。
select next_day(sysdate,'星期二') from dual;
--last_day 获取档期那时间的本月的最后一天是什么时间
select last_day(sysdate) from dual;
--extract 单独的获取日期的年份,月份,日
select extract(year from sysdate) from dual;
select extract(month from sysdate) from dual;
select extract(day from sysdate) from dual;
--9、分别统计出各个月份入职(hiredate)的员工有多少人
select extract(month from hiredate) as "入职日期",count(*) as "人数" from emp 
group by extract(month from hiredate)

--round 四舍五入  以天为单位
select round(sysdate) from dual;
select round(to_date('2022-02-20 12:00:01','yyyy-mm-dd hh24:mi:ss'))
from dual;

--trunc 截断日期
select trunc(to_date('2022-02-20 23:59:59','yyyy-mm-dd hh24:mi:ss'))
from dual;

--(3)字符串函数
--length 求字符串的长度
select length('我爱你') from dual;
--ltrim和rtrim 去除两端的空格
select ltrim('    helloworld') from dual;
select length('    helloworld') from dual;
select length(ltrim('    helloworld')) from dual;
--replace 替换
select replace('zz is a nice man','zz','dengyankang') from dual
--5、查询出雇员表(emp)中员工的姓名,将名字中的'A'换为'1','B'换为'2'
select replace(replace(ename,'A','1'),'B','2') from emp;

--lpad|rpad 在左右两端填充指定的内容
select lpad('hello',10,'a') from dual;
select rpad('hello',10,'a') from dual;

--upper|lower 转换大小写
select upper('zz is a nice man') from dual;
select lower('ZZ IS A NICE MAN') from dual;

--chr|ascii 数值与字符的转换
--a=97  A=65  0=48
select chr(97) from dual;
select ascii('a') from dual;
select ascii('阳') from dual;

--CONCAT 函数用于将两个字符串连接为一个字符串
select concat(job,ename) from emp


--instr 根据目标字符串查找指定字符的下标
select instr('kashdsakdsakjdlksald','k') from dual;
--从目标字符串的指定位置开始查找指定字符的下标
select instr('kashdsakdsakjdlksald','k',2) from dual;
--如果下标为负数,从指定的位置开始查找k第一次出现的位置,从左侧开始数下标
select instr('kashdsakdsakjdlksald','k',-2) from dual;
--如果下标为负数,从指定的位置开始查找k第二次出现的位置,从左侧开始数下标
select instr('kashdsakdsakjdlksald','k',-2,2) from dual;

--substr 截取
select substr('ksajhdkhsa',3) from dual;
--从指定的位置开始截取,截取后面几位
select substr('ksajhdkhsa',3,5) from dual;

--decode 判断
select decode('sb','nb','1','ab','2','sb','3')from dual;

字符串函数:length,ltrim,rtrim,lpad,rpad,upper,lower,chr,ascii
instr,substr,replace,decode。。。。。

--(4)数学函数
abs|ceil|floor|sqrt|round|mod|power|sign|ROUND
select abs(-1) from dual;--绝对值
select ceil(12.001) from dual;--向上取整
select floor(12.99999) from dual;--向下取整
select sqrt(4) from dual;--开平方
select power(2,3) from dual;--求幂函数
select power(2,8) from dual;--256
select power(2,10) from dual;--1024
select round(12.89,1) from dual;--四舍五入
select mod(10,3) from dual;--取模
select round(3,8) from dual;-- 取整
--sign判断正负数
select sign(100) from dual;--1
select sign(-100) from dual;-- -1
select sign(0) from dual;-- 0

--查询emp表中哪些员工是大于3000元以上,那些员工是等于3000  哪些是小于3000
--大于3000 添加一个字段显示需要纳税  等于3000 添加一个字段显示继续努力
--小于3000 添加一个字段显示回家种田。

select ename,sal,
decode(sign(sal - 3000),'1','需要纳税','0','继续努力','-1','回家种田')
as "备注" 
from emp;


nvl2:如果某字段不为空使用1替代,如果为空用2替代。
select ename,comm,nvl2(comm,1,2) from emp;
select * from emp;










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值