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;
- Orcal的sql查询:
查询中可以作运算:查询员工表编号为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
伪列:只能作查询,不能修改,增加,删除