Oracle課堂筆記THREE

在from中使用子查詢(把子查詢的數(shù)據(jù)當(dāng)成新表)

問題:顯示高于自己部門平均工資的員工信息。

? ? ? ? ? ?select t1.ename,t1.sal from briup_emp,(select deptno,avg(sal) mysal from briup_emp group by deptno) t2 where t1.deptno=t2.deptno and t1.sal>t2.mysal;

在create中使用子查詢

create table myemp(id,name,sal) as (select empno,ename,sal from briup_emp);

在insert中使用子查詢

insert into myemp (select empno,ename,sal from briup_emp where ename='Smith');

在update中使用子查詢

把Larry的工資改成和Smith一樣。

update briup_emp set (sal,job)=(select sal,job from briup_emp where ename='Smith') where ename='Larry';



查詢某一個(gè)表中的前幾條數(shù)據(jù) :

在mysql中:limit

1、查詢第1000條到1005條數(shù)據(jù)。

select * from tablename limit 999,6;

2、查詢前十條數(shù)據(jù)。

select * from tablename limit 10;

3、查詢第三條到最后一條數(shù)據(jù)。

select * from tablename limit 2,-1;


Oracle rownum:rownum偽列,Oracle 8開始出現(xiàn)的,把每張表中的行數(shù)進(jìn)行編號,始終從1開始。

問題:查詢員工表中的前十條數(shù)據(jù)。

? ? ? ? ? ?select rownum,ename from briup_emp where rownum<=10;

? ? ? ? ? ?查詢員工表中部門號為1的員工的前十條數(shù)據(jù)。

? ? ? ? ? ?select * from (select rownum,ename from briup_emp where deptno=1) where rownum<=10;

? ? ? ? ? ?查詢員工表中第5條到第10條數(shù)據(jù)。

? ? ? ? ? ?select?rownum,ename from briup_emp where rownum>=5 and rownum<=10;? ? error;

? ? ? ? ? ?把rownum實(shí)體化:

? ? ? ? ? ?select rownum rn,ename from (select rownum rn,ename from briup_emp where rownum<=10) where rn>=5;



合并查詢(合并多個(gè)select的結(jié)果):

查詢工資大于5000或者工種是java的員工的信息。

union并集,去掉重復(fù)行。

select ename,sal,job from briup_emp where sal>5000 union select ename,sal,job,from?briup_emp where job='java';

union all:包含重復(fù)行

select ename,sal,job from briup_emp where sal>5000 union all select ename,sal,job,from?briup_emp where job='java';

問題:工資大于5000且工種是java的員工信息。

select ename,sal,job from briup_emp where sal>5000 union intersert ename,sal,job,from?briup_emp where job='java';



Oracle中的函數(shù)

函數(shù)的作用:

1、方便對數(shù)據(jù)的統(tǒng)計(jì)

2、處理查詢結(jié)果(通過身份證號得到生日)

——數(shù)值函數(shù)????????

? ? ? ?四舍五入:

? ? ? ?round(n【,m】)

select round(12345.678,2),(12345.678,-2) from dual;

取整函數(shù):

floor(n)向下取整

ceil(n)向上取整

select floor(12345.678),ceil(12345.678)?from dual;

常用計(jì)算:

abs(n)絕對值

select abs(10),abs(-10),abs(0) from dual;

mod(m,n)取余函數(shù)

select mod(10,3),mod(10,0) from dual;

power(m,n)求m的n次冪

select power(3,4) from dual;

sqrt(m)求m的平方根

select sqrt(9) from dual;

三角函數(shù):

sin(x)asin(x)

cos(x)acos(x)

tan(x)atan(x)

——字符函數(shù)

lower(s):將字符串轉(zhuǎn)成小寫格式

upper(s):將字符串轉(zhuǎn)成大寫格式

initcap(s):將首字母轉(zhuǎn)成大寫格式

length(s):獲取字符串長度

select ename from briup_emp where length(ename)=5;

substr(s,index,length)

select substr('wangxiaohong',2,5) from dual;

select substr(ename,1,3) from briup_emp;

replace(s,m,n)

select replace('abcde','a','哈哈') from dual;

綜合案例:顯示員工的姓名,要求首字母小寫,其他字母大寫。

select lower(substr(ename,1,1)) || upper(substr(ename,2,length(ename)-1)) from?briup_emp;

——日期函數(shù)

sysdate:系統(tǒng)時(shí)間

add_month(m,n)

select add_month(sysdate,5) from dual;

問題:查詢?nèi)肼殨r(shí)間超過八個(gè)月的員工。

select ename,startdate?from briup_emp where sysdate>add_month(startdate,8);

查詢?nèi)肼殨r(shí)間滿十年的員工的信息。

select ename,startdate?from briup_emp where sysdate>add_month(startdate,120);

next_day(m,n)

select next_day(sysdate,'星期一') from dual;

months_between(m,n)

select months_between('13-6月-1992','22-8月-1992') from dual;

last_day(m)

select last_day(sysdate) from dual;

問題:找出入職時(shí)間是入職當(dāng)月的倒數(shù)第三天入職的員工。

select ename,startdate from briup_emp where last_day(startdate)-2=startdate;

——轉(zhuǎn)換函數(shù)

日期轉(zhuǎn)換字符串

to_char(m[,n,params])

select to_char(sysdate,'yyyy-mm-dd') from dual;

字符串轉(zhuǎn)日期

to_date(s[,n,params])

select to_date('2001-01-01','dd-mm-yyyy') from dual;

數(shù)字轉(zhuǎn)換字符串

to_char(number[,params])

字符串轉(zhuǎn)數(shù)字

to_number(s)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORACLE自學(xué)教程 --create tabletestone ( id number, --序號usernam...
    落葉寂聊閱讀 1,252評論 0 0
  • 1.簡介 數(shù)據(jù)存儲(chǔ)有哪些方式?電子表格,紙質(zhì)文件,數(shù)據(jù)庫。 那么究竟什么是關(guān)系型數(shù)據(jù)庫? 目前對數(shù)據(jù)庫的分類主要是...
    喬震閱讀 2,025評論 0 2
  • SQL ==SQLPLUS== DML(Data Manipulation Language,數(shù)據(jù)操作語言)---...
    蝌蚪1573閱讀 637評論 0 4
  • 夾竹桃,我家鄉(xiāng)人稱它為六月桃、柳葉桃,其實(shí)具體也不知道怎么叫的。是因?yàn)榛ㄉ品凵一ǘ诹麻_放得名六月桃,還是因...
    語禪閱讀 1,445評論 0 0
  • 卷首語 歷史是一件很有趣的事情,只要你能發(fā)現(xiàn)。 本期歷史周刊,精選以下優(yōu)秀文章(排名不分先后),供君品評。 【歷史...
    心海滌塵閱讀 2,659評論 25 65

友情鏈接更多精彩內(nèi)容