Oracle: 四、对scott用户的基本查询操作(上篇)

简介:
内容简介

   1,Scott实例用户(Oracle官方提供)。2,Scott用户单词备注。3,对scott用户的查询操作。

 

技术与环境

操作系统:

windows

语言类别:

SQL之PL/SQL

thankyou: sunshine, 谢谢你的默默付出

数据库:

Oracle

学习软件:

Oracle 10g

课程总策划:

yuanbo

English name:

sunshine

个人主页:

http://www.cnblogs.com/ylbtech/

科研团队:

ylbtech

教研团队:

ylbtech

 

1,scott实例使用(Oracle官方提供)  
2,Scott用户内容单词备注

 

emp员工表 字段内容如下:
empno  员工号
ename  员工姓名
job  工作
mgr  上级编号
hiredate 受雇日期
sal  薪金
comm  佣金
deptno  部门编号

dept 部门表 字段内容如下:
deptno 部门号
ename 部门名称
loc 地方

bonus 奖金表 字段内容如下:
ename  员工姓名
job 工作名称
sal 薪金
comm 佣金
 
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,如需转载请自行联系原作者

相关文章
|
4天前
|
SQL Oracle 关系型数据库
Oracle查询优化-查询只包含数字或字母的数据
【2月更文挑战第4天】【2月更文挑战第10篇】查询只包含数字或字母的数据
122 1
|
4天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
33 0
|
4天前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
69 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
4天前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
94 0
|
1天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之写Oracle时出现的缺失等号错误如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
22 9
|
1天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之采集oracle的时候报ORA-65040:不允许从可插入数据库内部执行该操作如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
16 3
|
4天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库
|
4天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在 DataWorks 中,使用Oracle作为数据源进行数据映射和查询,如何更改数据源为MaxCompute或其他类型
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
32 1
|
4天前
|
Oracle 关系型数据库 MySQL
数据库中对时间的操作(mySql、Oracle、pgSql)
数据库中对时间的操作(mySql、Oracle、pgSql)
|
4天前
|
SQL Oracle 关系型数据库
Oracle系列之八:SQL查询
Oracle系列之八:SQL查询