查詢練習

創建表空間	scott_space
create tablespace scott_space datafile 'D:\JavaLife\oracle\scott_data.dbf' size 100m;

創建用戶	scott/1
create user scott identified by 1 default tablespace scott_space account unlock;

授權
grant connect, resource to scott;


創建表並插入數據
CREATE TABLE DEPT
       (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
	DNAME VARCHAR2(14) ,
	LOC VARCHAR2(13) ) ;
CREATE TABLE EMP
       (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
	ENAME VARCHAR2(10),
	JOB VARCHAR2(9),
	MGR NUMBER(4),
	HIREDATE DATE,
	SAL NUMBER(7,2),
	COMM NUMBER(7,2),
	DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
INSERT INTO DEPT VALUES
	(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
	(30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
	(40,'OPERATIONS','BOSTON');
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-7-87','dd-mm-rr')-85,3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-7-87', 'dd-mm-rr')-51,1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);




簡單查詢

1.  選擇部門30中的所有員工
select * from emp where deptno = 30;

2.  列出所有辦事員的姓名、編號和部門編號
select ename,empno,deptno from emp WHERE job = 'CLERK';

3.  找出佣金高於薪金的員工
select * from emp  where comm > sal;

4.  找出佣金高於薪金60%的員工
select * from emp  where comm > (0.6)*sal;

5.  找出部門10中所有經理和部門20中所有辦事員的詳細資料
select * from emp where (deptno=10and job='MANAGER') or (deptno=20and job='CLERK');

6.  找出部門10中所有經理,部門20中所有辦事員,既不是經理又不是辦事員但薪金大於或等於2000的所有員工的詳細資料 
select * from emp where (deptno=10and job='MANAGER') or (deptno=20and job='CLERK')or job not in ('MANAGER','CLERK') and sal >=2000;

7.  找出收取佣金的員工的不同工作
select distinct job from emp where comm is not null;

8.  找出不收取佣金或收取的佣金低於100的員工
select * from emp where comm is null or comm < 100;

9.  找出各月倒數第三天受僱的所有員工
select * from emp where last_day(hiredate)-hiredate=2;

10.	找出早於12年前受僱的員工
select * from emp where months_between(sysdate,hiredate)/12 >=12;

11. 以首字母大寫的方式顯示所有員工的姓名
select INITCAP(ENAME) from emp;

12. 顯示正好爲5個字符的員工姓名
select ENAME from emp where length(ename)=5;

13. 顯示不帶有R的員工姓名  www.2cto.com  
select ENAME from emp where ename not like'%R%';

14. 顯示所有員工的前三個字符
select substr(ename,1,3) from emp ;

15. 顯示所有員工的姓名,用a替換所有A
select replace(ename,'A','a') from emp ;

16. 顯示滿10年服務年限的員工的姓名和受僱日期
select ename ,hiredate from emp where months_between(sysdate,hiredate)/12>=10;

17. 顯示員工的詳細資料,按姓名排序
select * from emp orderby ename ;

18. 顯示員工的姓名和受僱日期,根據其服務年限,將最老的員工排在最前面
select ename ,hiredate from emp orderby hiredate asc;

19. 顯示所有員工的姓名、工作和薪金,按工作的降序排序,若工作相同按薪金排序
select ename,job,sal from emp orderby job desc ,sal;

20.顯示所有員工姓名、加入公司的年份和月份,按受僱日期所在月排序,若月份相同則將最早年份的員工排在最前面。
select ename,to_char(hiredate,'YYYY/MM') from emp orderby to_char(hiredate,'MM'),to_char(hiredate,'yyyy') asc ;

21. 顯示在一個月爲30天的情況所有員工的日薪金,忽略餘數
select  round(sal/30) from emp;  

22. 找出在任何年份的2月受聘的所有員工
select * from emp where to_char(hiredate ,'MM')=2 ;

23. 對於每個員工,顯示其加入公司的天數
select ename,round(sysdate-hiredate) emp_date from emp;

24. 以年月日的方式顯示所有員工的服務年限
select ename,to_char(hiredate,'YYYY')||'年'||to_char(hiredate,'MM')||'月'||to_char(hiredate,'DD')||'日'from emp;

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