Oracle数据库中的Sql查询和Sql函数

本文详细介绍了Oracle数据库中的各种数据类型,包括字符型、数字型和日期型的使用范围及特点。同时,深入探讨了SQL查询技巧,如条件过滤、列合并、分页查询,以及Oracle特有的函数应用,例如分组、聚合、日期和分析函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sql查询和Sql函数

Orcal的数据类型:

 

数据类型

取值范围

说明

字符型

Varchar2

4000

 

Nvachar2

1000

Unicode

char

2000

 

nchar

1000

 

long

2G

 

数字型

Number(p,s)

38十进制

P精度,s保留小数位数

Flaot

126(2进制)

 

日期型

公元前4712/1/1到公元9999/12/31(漏洞千年危机)

 

 

 

Timestarmp

 

 

--字符型

create table stl(

 `name` char(10),

 address varchar2(50)

);

insert into stl values('在','哈儿');

select * from stl;

--数值类型

create table st2(

 id int,

 ids number(10),

 fen number(5,2)

);

insert into st2 values(18,1001,100.32);

select * from st2;

--时间(查询显示均以自带格式为准)

create table st3(

id int primary key,

birthday date

);

insert into st3 values(1002,sysdate);--系统时间

insert into st3 values(1004,'06-2月-2020');--自带格式

insert into st3 values(1003,to_date('2020-2-3','yyyy-mm-dd'));--自定义格式

select * from st3;
  1. Orcalsql查询:

查询中可以作运算:查询员工表编号为1001,1002,的名字和薪水,并且薪水+100

Select name salary+100 from empoly where empoId in(1001,1002);

查询某列存在的:查询员工表有薪水的

Select * from employ where salary is not null;

查询时合并列:将员工表的工资合薪水合成一列:

Selet (sal|| comm) 薪水 empoly;

创建一张表(t2)并别一张表(t1)的信息复制过来

Create table t2 as select * from t1;

Orcal的函数:

分组函数:Group by和having

例:统计每个部门的平均工资,筛选出平均工资高于2000的

Select avg(salary) from employ group by department having avg(sal)>2000;

聚合函数:avg(),sum(),min(),max(),count(*)求总人数(分页)

日期函数

当天时间3个月后的今天

Select add_months(sysdate,3) from dual;

查询当前2个月时间相差的月份数

Select months_between(sysdate,'11-11月-2020') from dual;

返回某个时间值的当月的最后一天,

Select last_day(sysdate) from dual;

返回当天时间这个周的最后一天是什么时候(1-7之间,星期六为第7天)

Select next_day(sysdate,7)from dual;

注:oracl存在虚拟表,这里会用到dual

分析函数:row_number(),rank(),dense_rank()

返回连续的排位,不伦值是否相等

Select row_number() over(order by salary) as emp_index,salary from employ;

具有相等值的行排位相同,序数随后跳跃;

Select rank() over(order by salary) as emp_index,salary from employ;

具有相等值的行排位相同,序号是连续的;

Select dense_rank() over(order by salary) as emp_index,salary from employ;

Orcal的分页:

显示前10条记录

Select employ.*,rownum 别名from employ where rownum<=10

显示第6条到第10条记录

Select *from(Select employ.*,rownum 别名 from employ where rownum<=10) Where rn>=6;

Java中的写法:

Select *from(Select employ.*,rownum 别名 from employwhere rownum<=“+pageSize+pageNo+”)
Where rn>=”+pageSize*(pageNo-1)+1+”;

常用伪列:Rownum

伪列:只能作查询,不能修改,增加,删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值