--1.選擇部門30中的所有員工.
select * from emp where deptno = 30
--2.列出所有辦事員(CLERK)的姓名,編號和部門編號.
select ename,empno,deptno from emp where job=''CLERK''
--3.找出傭金高於薪金的員工.
select * from emp where comm>sal
--4.找出傭金高於薪金的60%的員工.
select * from emp where comm>(sal*0.6)
--5.找出部門10中所有經理(MANAGER)和部門20中所有辦事員(CLERK)的詳細資料.
select * from emp where (job=''MANAGER'' and deptno=10) or (job=''CLERK'' and deptno=20)
--6.找出部門10中所有經理(MANAGER),部門20中所有辦事員(CLERK),既不是經理又不是辦事員但其薪金大於或等於2000的所有員工的詳細資料.
select * from emp where (job=''MANAGER'' and deptno=10) or (job=''CLERK'' and deptno=20) or (job!=''MANAGER'' and job!=''CLERK'' and sal>=2000)
--7.找出收取傭金的員工的不同工作.
select distinct job from emp where comm>0
--8.找出不收取傭金或收取的傭金低於100的員工.
select * from emp where comm is null or comm<100
--9.找出各月倒數第3天受雇的所有員工.
select * from emp where hiredate=last_day(hiredate)-2
--last_day(date類型參數),返回一個月的最後一天
--10.找出早於12年前受雇的員工.
select * from emp where months_between(sysdate,hiredate)>=144
--months_between(date1,date2),返回兩個日期之間的月份個數
--11.以首字母大寫的方式顯示所有員工的姓名
select initcap(ename) from emp
--initcap(string),返回首字母大寫的字符串
--12.顯示正好為5個字符的員工的姓名.
select ename from&
nbsp;emp where length(ename)=5
--length(string),返回字符串的長度
--13.顯示不帶有"R"的員工的姓名.
select ename from emp where ename not like ''%R%''
--14.顯示所有員工姓名的前三個字符.
select substr(ename,1,3) from emp
/**//*substr(string,start,count),截取字符串長度,
start起始位數,count截取的位數,
如果不寫count就是從start開始截取到最後*/
--15.顯示所有員工的姓名,用a替換所有"A"
select replace(ename,''A'',''a'') from emp
/**//*replace(string,if,then),字符串替換,用then替換if*/
--16.顯示滿10年服務年限的員工的姓名和受雇日期.
select ename,hiredate from emp where months_between(sysdate,hiredate)>=120
--17.顯示員工的詳細資料,按姓名排序.
select * from emp order by ename
--18.顯示員工的姓名和受雇日期,根據其服務年限,將最老的員工排在最前面.
select ename,hiredate from emp order by hiredate
--19.顯示所有員工的姓名、工作和薪金,按工作的降序排序,若工作相同則按薪金排序.
select ename,job,sal from emp order by job desc,sal
--20.顯示所有員工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同則將最早年份的員工排在最前面.
select ename, to_char(hiredate,''yyyy-mm'') from emp order by to_char(hiredate,''mm''),to_char(
hiredate,''yy'')
--to_char(非string,''格式''),按格式把數據轉換成字符類型,格式可以省略
--21.顯示在一個月為30天的情況所有員工的日薪金,忽略余數.
select trunc(sal/30,0) from emp
--no四捨五入
--22.找出在(任何年份的)2月受聘的所有員工。
select * from emp where to_char(hiredate,''mm'')=02
--23.對於每個員工,顯示其加入公司的天數.
select trunc(sysdate-hiredate,0) from emp
--24.顯示姓名字段的任何位置包含"A"的所有員工的姓名.
select ename from emp where ename like ''%A%''
--25.以年月日的方式顯示所有員工的服務年限. (大概)
select to_char(to_date(''0001-01-01'',''yyyy-mm-dd'') + (sysdate-hiredate) - 365 - 31 - 1,''yyyy-mm-dd'') from emp
今天新學的Oracle~~
這是針對scott用戶的emp表做的一些練習