Oracle數據庫中的Sql查詢和Sql函數

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

僞列:只能作查詢,不能修改,增加,刪除

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章