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,如需转载请自行联系原作者

相关文章
|
10月前
|
Oracle 关系型数据库 Java
实时计算 Flink版操作报错之读取Oracle数据库时遇到找不到驱动,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
实时计算 Flink版操作报错之读取Oracle数据库时遇到找不到驱动,是什么原因
|
17天前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有 YashanDB 版本。原因是操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常源于 system() 函数调用失败,返回 -1,通常是因为 fork() 失败。未来 YashanDB 将优化日志信息以更好地诊断类似问题。
|
6天前
|
Oracle 关系型数据库 MySQL
【YashanDB知识库】oracle dblink varchar类型查询报错记录
这篇文章主要介绍了 Oracle DBLINK 查询崖山 DB 报错的相关内容,包括 ODBC 安装配置、数据源配置、dblink 环境配置、问题原因分析及规避方法。问题原因是 dblink 连接其他数据库时 varchar 类型转换导致的,还介绍了 long 类型限制、char 等类型区别,规避方法是修改参数 MAX_STRING_SIZE 支持 32K。
|
19天前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
某客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有版本。问题源于操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常原因为系统调用 fork() 失败。经验总结:优化日志记录,提供更多异常信息。
|
2月前
|
Oracle 关系型数据库 数据库
【YashanDB知识库】oracle dblink varchar类型查询报错记录
在使用Oracle DBLink查询VARCHAR类型数据时,可能会遇到多种报错。通过了解常见错误原因,采取合适的解决方法,可以有效避免和处理这些错误。希望本文提供的分析和示例能帮助你在实际工作中更好地处理DBLink查询问题。
76 10
|
2月前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
10月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之遇到报错 Oracle 19C,如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
8月前
|
SQL Oracle 关系型数据库
关系型数据库Oracle并行查询
【7月更文挑战第12天】
192 15
|
8月前
|
Oracle 关系型数据库 数据库
|
8月前
|
Oracle 关系型数据库 数据处理

热门文章

最新文章

推荐镜像

更多