--練習(xí)1
--1.寫一個(gè)查詢,用首字母大寫染坯,其它字母小寫顯示雇員的 ename伞芹,
--顯示名字的長(zhǎng)度怯邪,并給每列一個(gè)適當(dāng)?shù)臉?biāo)簽,條件是滿足所有雇員名字的開始字母是J丙者、A 或 M 的雇員复斥,
--并對(duì)查詢結(jié)果按雇員的ename升序排序。(提示:使用initcap械媒、length目锭、substr)
select initcap(ename) as 首字母大寫,
length(ename) as 名字長(zhǎng)度,
substr(ename,0,1),
substr(ename,1,1),
substr(ename,2,1)
from emp
where substr(ename,0,1) in('J','A','m')
order by ename asc;
--練習(xí)2
--1.查詢員工姓名中中包含大寫或小寫字母A的員工姓名。
select ename,
instr(ename,'a'),
instr(ename,'A')
from emp
where instr(ename,'a') <> 0 or instr(ename,'A') <> 0;
--2.查詢部門編號(hào)為10或20纷捞,入職日期在81年5月1日之后痢虹,并且姓名中包含大寫字母A的員工姓名,員工姓名長(zhǎng)度(提示兰绣,要求使用INSTR函數(shù)世分,不能使用like進(jìn)行判斷)
select ename,
length(ename),
hiredate,
deptno,
instr(ename,'A')
from emp
where deptno in(10,20) and
hiredate > '01-5月-81' and
instr(ename,'A') <> 0;
--3.查詢每個(gè)職工的編號(hào),姓名,工資
--要求將查詢到的數(shù)據(jù)按照一定的格式合并成一個(gè)字符串.
--前10位:編號(hào),不足部分用填充,左對(duì)齊
--中間10位:姓名缀辩,不足部分用填充,左對(duì)齊
--后10位:工資臭埋,不足部分用*填充,右對(duì)齊
select deptno,
ename,
sal,
lpad(deptno,10,'*'),
lpad(ename,10,'*'),
rpad(sal,10,'*')
from emp;
--練習(xí)3
--1.寫一個(gè)查詢,分別計(jì)算100.456 四舍五入到小數(shù)點(diǎn)后第2位臀玄,第1位瓢阴,整數(shù)位的值。
select round(100.456,2),
round(100.456,1),
round(100.456,0)
from dual;
--2.寫一個(gè)查詢健无,分別計(jì)算100.456 從小數(shù)點(diǎn)后第2位荣恐,第1位,整數(shù)位截?cái)嗟闹怠?/p>
select trunc(100.456,2),
trunc(100.456,1),
trunc(100.456,0)
from dual;
--練習(xí)4
--1.查詢每個(gè)員工截止到現(xiàn)在一共入職多少天累贤?
select ename,trunc(sysdate - hiredate) as 到現(xiàn)在入職的天數(shù)
from emp;
口決:
RR: 大小進(jìn)一 小大退一
YY: 與RR相反
大大小小均不變(備注大指當(dāng)前年份叠穆,小為指定年份)
--2.當(dāng)前日期為2015年,指定日期格式為DD-MON-RR,指定日期為01-1月-01臼膏,該日期實(shí)際所代表的日期為硼被?
2001-01-01
--3.當(dāng)前日期為2015年,指定日期格式為DD-MON-RR,指定日期為01-1月-95渗磅,該日期實(shí)際所代表的日期為嚷硫?
1995-01-01
--4.當(dāng)前日期為1998年检访,指定日期格式為DD-MON-RR,指定日期為01-1月-01,該日期實(shí)際所代表的日期為仔掸?
2001-01-01
--5.當(dāng)前日期為1998年脆贵,指定日期格式為DD-MON-RR,指定日期為01-1月-95,該日期實(shí)際所代表的日期為起暮?
1995-01-01
--6.當(dāng)前日期為2015年卖氨,指定日期格式為DD-MON-YY,指定日期為01-1月-01,該日期實(shí)際所代表的日期為鞋怀?
2001-01-01
--7.當(dāng)前日期為1998年双泪,指定日期格式為DD-MON-YY,指定日期為01-1月-95,該日期實(shí)際所代表的日期為密似?
1995-01-01
--練習(xí)5
串一個(gè)知識(shí)點(diǎn)。葫盼。查詢所有用戶表
select * from user_tables;
--1.查詢服務(wù)器當(dāng)前時(shí)間
select sysdate
from emp;
--2.查詢部門10,20的員工截止到2000年1月1日残腌,工作了多少個(gè)月,入職的月份贫导。(提示:使用months_between,extract)
select hiredate,
trunc(months_between('01-1月-00',hiredate)) 工作月數(shù),
extract(month from hiredate)
from emp
where deptno in(10,20);
--3.如果員工試用期6個(gè)月抛猫,查詢職位不是MANAGER的員工姓名,入職日期孩灯,轉(zhuǎn)正日期闺金,入職日期后的第一個(gè)星期一,入職當(dāng)月的最后一天日期。(提示:使用add_months,next_day,last_day)
select hiredate as 入職日期,
add_months(hiredate,6) as 轉(zhuǎn)正日期,
next_day(hiredate,'星期一') as 入職后的第一個(gè)星期一,
last_day(hiredate) as 入職當(dāng)月的最后一天日期
from emp
where job not in 'MANAGER';
--練習(xí)6
--1.顯示服務(wù)器系統(tǒng)當(dāng)前時(shí)間峰档,格式為2007-10-12 17:11:11(提示:使用to_char函數(shù))
select sysdate,
to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
from emp;
--2.顯示ename败匹、hiredate 和 雇員開始工作日是星期幾,列標(biāo)簽DAY(提示:使用to_char函數(shù))
select ename,hiredate,to_char(hiredate,'DAY') as DAY
from emp;
--3.查詢員工姓名讥巡,工資掀亩,格式化的工資(¥999,999.99) (提示:使用to_char函數(shù))
備注:此處只能轉(zhuǎn)換成$不能¥且此處的第二參數(shù)為固定'$99,999'少寫會(huì)報(bào)錯(cuò)
select ename,sal,to_char(sal,'$99,999')
from emp;
--4.把字符串2015-3月-18 13:13:13 轉(zhuǎn)換成日期格式,并計(jì)算和系統(tǒng)當(dāng)前時(shí)間間隔多少天欢顷。 (提示:使用to_date函數(shù))
select to_date('2015-3月-18 13:13:13','yyyy-mm"月"-dd hh24:mi:ss') as 日期,
trunc(sysdate-to_date('2015-3月-18 13:13:13','yyyy-mm"月"-dd hh24:mi:ss')) as 相差的天數(shù)
from emp;
--課后作業(yè)
--1.計(jì)算2000年1月1日到現(xiàn)在有多少月槽棍,多少周(四舍五入)。
select round(months_between(sysdate,'01-1月-00')),
round(months_between(sysdate,'01-1月-00')*30/7)
from emp;
--2.查詢員工ENAME的第三個(gè)字母是A的員工的信息(使用2個(gè)函數(shù))抬驴。
select ename,instr(ename,'A',3,1)
from emp
where instr(ename,'A',3,1) = 3;--從第三個(gè)位置開始第一次出現(xiàn)的位置
select ename,substr(ename,3,1)
from emp
where substr(ename,3,1) in 'A';--從第三個(gè)位置開始截取一個(gè)字符串
--3.使用trim函數(shù)將字符串‘hello’炼七、‘ Hello ’、‘bllb’布持、‘ hello ’分別處理得到下列字符串ello豌拙、Hello、ll鳖链、hello姆蘸。
select trim(leading 'h' from 'hello'),
trim(both ' ' from ' Hello '),
trim(both 'b' from 'bllb'),
trim(trailing ' ' from 'hello ')
from dual;
--4.將員工工資按如下格式顯示:123,234.00 RMB 墩莫。
select sal,to_char(sal,'$99,999')
from emp;--這題我只能寫成這樣。逞敷。狂秦。若有人解出來(lái)。推捐。請(qǐng)務(wù)必告知呀
--5.查詢員工的姓名及其經(jīng)理編號(hào)裂问,要求對(duì)于沒有經(jīng)理的顯示“No Manager”字符串。
select ename,mgr,nvl(to_char(mgr),'No Manager')
from emp; -- 據(jù)說(shuō) nvl()里兩參數(shù)必須是同一類型牛柒。堪簿。否則。皮壁。錯(cuò)死你 o
--6.將員工的參加工作日期按如下格式顯示:月份/年份椭更。
select hiredate,
extract(month from hiredate) || '/' || extract(year from hiredate) as "月份/年份"
from emp;
select hiredate,to_char(hiredate,'mm/yyyy') as "月份/年份"
from emp;
--7.在員工表中查詢出員工的工資,并計(jì)算應(yīng)交稅款:如果工資小于1000,稅率為0蛾魄,如果工資大于等于1000并小于2000虑瀑,稅率為10%,如果工資大于等于2000并小于3000滴须,稅率為15%舌狗,如果工資大于等于3000,稅率為20%扔水。
select ename,sal,
case
when sal < 1000 then 0
when sal >=1000 and sal < 2000 then (sal-1000)*0.1
when sal >=2000 and sal <3000 then 1000 * 0.1 + (sal - 2000) * 0.15
when sal > 3000 then 1000 * 0.1 + 1000 * 0.15 + (sal - 3000) * 0.2
else 0
end as 稅款
from emp;
--8.創(chuàng)建一個(gè)查詢顯示所有雇員的 ename和 sal痛侍。格式化sal為 15 個(gè)字符長(zhǎng)度,用 $ 左填充魔市,列標(biāo)簽 SALARY主届。
select ename,sal,lpad(sal,15,'$') as SALARY
from emp;
分割線
博主為咯學(xué)編程:父母不同意學(xué)編程,現(xiàn)已斷絕關(guān)系;戀人不同意學(xué)編程嘹狞,現(xiàn)已分手;親戚不同意學(xué)編程岂膳,現(xiàn)已斷絕來(lái)往;老板不同意學(xué)編程,現(xiàn)已失業(yè)三十年。磅网。谈截。。涧偷。簸喂。如果此博文有幫到你歡迎打賞,金額不限燎潮。喻鳄。。