本文共 5750 字,大约阅读时间需要 19 分钟。
内容简介 |
1,Scott实例用户(Oracle官方提供)。2,Scott用户单词备注。3,对scott用户的查询操作。
技术与环境 |
操作系统: | windows | 语言类别: | SQL之 |
thankyou: | sunshine, 谢谢你的默默付出 | 数据库: | Oracle |
学习软件: | Oracle 10g | ||
课程总策划: | yuanbo | English name: | sunshine |
个人主页: | http://www.cnblogs.com/ylbtech/ | ||
科研团队: | ylbtech | 教研团队: | ylbtech |
1,scott实例使用(Oracle官方提供) |
2,Scott用户内容单词备注 |
3,Demo scott用户操作 |
--====================================== --YLB:ORACLE --15:23 2011-12-30 --1,ORACLE查询操作 --====================================== clear screen; connect system/system drop user scott cascade ; create user scott identified by tiger; grant connect ,resource to scott; connect scott/tiger show user ; --创建用员工表 create table emp ( empid number(4), --编号 ename varchar (20), --姓名 job varchar (20), --工作 mgr number(4), --上级编号 hiredate date , --受雇日期 sal number(7,2), --薪金 comm number(7,2), --佣金 deptno number(2) --部门编号 ); insert into emp values (7369, 'SMITH' , 'CLERK' ,7902,to_date( '12/17/1980' , 'mm/dd/yyyy' ),800, null ,20); insert into emp values (7499, 'ALLEN' , 'SALESMAN' ,7698,to_date( '02/20/1981' , 'mm/dd/yyyy' ),1600,300,30); insert into emp values (7521, 'WARD' , 'SALESMAN' ,7698,to_date( '02/22/1981' , 'mm/dd/yyyy' ),1250,500,30); insert into emp values (7566, 'JONES' , 'MANAGER' ,7839,to_date( '04/02/1981' , 'mm/dd/yyyy' ),2975, null ,20); insert into emp values (7654, 'MARTIN' , 'SALESMAN' ,7698,to_date( '09/28/1981' , 'mm/dd/yyyy' ),1250,1400,30); insert into emp values (7698, 'BLAKE' , 'MANAGER' ,7839,to_date( '05/01/1981' , 'mm/dd/yyyy' ),2850, null ,30); insert into emp values (7782, 'CLARK' , 'MANAGER' ,7839,to_date( '06/09/1981' , 'mm/dd/yyyy' ),2450, null ,10); insert into emp values (7788, 'SCOTT' , 'ANALYST' ,7566,to_date( '04/19/1987' , 'mm/dd/yyyy' ),3000, null ,20); insert into emp values (7839, 'KING' , 'PRESIDENT' , null ,to_date( '11/17/1981' , 'mm/dd/yyyy' ),5000, null ,10); insert into emp values (7844, 'TURNER' , 'SALESMAN' ,7698,to_date( '09/08/1981' , 'mm/dd/yyyy' ),1500,0,30); insert into emp values (7876, 'ADAMS' , 'CLERK' ,7788,to_date( '05/23/1987' , 'mm/dd/yyyy' ),1100, null ,20); insert into emp values (7900, 'JAMES' , 'CLERK' ,7698,to_date( '12/03/1981' , 'mm/dd/yyyy' ),950, null ,30); insert into emp values (7902, 'FORD' , 'ANALYST' ,7566,to_date( '12/03/1981' , 'mm/dd/yyyy' ),3000, null ,20); insert into emp values (7934, 'MILLER' , 'CLERK' ,7782,to_date( '01/23/1982' , 'mm/dd/yyyy' ),1300, null ,10); commit ; ---下面是查询操作 --1.选择部门30中的所有员工. select * from emp where deptno=30; --2.列出所有办事员(CLERK)的姓名,编号和部门编号. select ename,empid,deptno from emp where job= 'CLERK' --3.找出佣金高于薪金的员工. select ename,empid from emp where comm>sal; --4.找出佣金高于薪金的60%的员工. select empid,ename from emp where comm>sal*0.6; --5.找出部门10中所有经理(MANAGER) --和部门20中所有办事员(CLERK)的详细资料. select * from emp where deptno=10 and job= 'MANAGER' or deptno=20 and job= 'CLERK' --6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK) --,既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详 细资料. --分析 select * from emp where deptno=10 and job= 'MANAGER' or deptno=20 and job= 'CLERK' ; select * from emp where job not in ( 'MANAGER' , 'CLERK' ) and sal>=2000; --结论 select * from emp where deptno=10 and job= 'MANAGER' or deptno=20 and job= 'CLERK' or job not in ( 'MANAGER' , 'CLERK' ) and sal>=2000; --7.找出收取佣金的员工的不同工作. SELECT DISTINCT JOB FROM EMP WHERE COMM IS NOT NULL ; --p:8.找出不收取佣金或收取的佣金低于100的员工. SELECT * FROM EMP WHERE COMM<100 OR COMM IS NULL ; --9.找出各月倒数第3天受雇的所有员工. SELECT * FROM EMP WHERE HIREDATE =LAST_DAY(HIREDATE)-2; --10.找出早于12年前受雇的员工. --select hiredate from emp where hiredate < sysdate-; select ename from emp where hiredate < add_months(sysdate,- 12*12); SELECT EMPID,ENAME FROM EMP WHERE HIREDATE <ADD_MONTHS(SYSDATE,-12*12); SELECT EMPID,ENAME FROM EMP WHERE ADD_MONTHS(SYSDATE,12*12)> SYSDATE; --z:11.以首字母大写的方式显示所有员工的姓名. select initcap(ename) from emp; --12.显示正好为5个字符的员工的姓名. select ename from emp where ename like '_____' ; --通配符 --% --_ --[1-9] --[^1-9] SELECT ENAME FROM EMP WHERE ENAME LIKE '_____' ; -- SELECT ENAME FROM EMP WHERE LENGTH(ENAME)=5; --13.显示不带有"R"的员工的姓名. select ename from emp where ename not like '%R%' ; 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 HIREDATE<ADD_MONTHS(SYSDATE,-10*12); --17.显示员工的详细资料,按姓名排序. --ASC|DESC SELECT * FROM EMP ORDER BY ENAME; --18.显示员工的姓名和受雇日期,根据其服务年限 --,将最老的员工排在最前面. SELECT ENAME,HIREDATE FROM EMP ORDER BY HIREDATE ASC ; --19.显示所有员工的姓名、工作和薪金,按工作的降序排序 --,若工作相同则按薪金排序. SELECT * FROM EMP ORDER BY JOB DESC ,SAL DESC ; --20.显示所有员工的姓名、加入公司的年份和月份 --,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前 面. SELECT * FROM EMP ORDER BY TO_CHAR(HIREDATE, 'MM' ) ASC ,TO_CHAR(HIREDATE, 'YYYY' ) ASC ; SELECT * FROM EMP; --21.显示在一个月为30天的情况所有员工的日薪金,忽略余数. SELECT FLOOR(SAL/30) FROM EMP; --22.找出在(任何年份的)2月受聘的所有员工。 SELECT * FROM EMP WHERE TO_CHAR(HIREDATE, 'MM' )=2; --P:23.对于每个员工,显示其加入公司的天数. SELECT TO_CHAR(SYSDATE, 'DDD' ) FROM DUAL; --24.显示姓名字段的任何位置包含"A"的所有员工的姓名. SELECT ENAME FROM EMP WHERE ENAME LIKE '%A%' ; --25.以年月日的方式显示所有员工的服务年限. (大概) --年 SELECT FLOOR(FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE))/12) FROM EMP; --月 2011-2-15 - 2011-12-30 SELECT MOD(FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE)),12) FROM EMP; --日 SELECT TO_CHAR(HIREDATE, 'DD' ) FROM EMP; SELECT TO_CHAR(SYSDATE, 'DD' ) FROM DUAL; -- SELECT (TO_CHAR(SYSDATE, 'DD' )-TO_CHAR(HIREDATE, 'DD' )) FROM EMP; --字符串链接 SELECT FLOOR(FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE))/12)|| '年 ' FROM EMP; |
本文转自ylbtech博客园博客,原文链接:http://www.cnblogs.com/ylbtech/archive/2012/08/09/2630563.html,如需转载请自行联系原作者