博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle: 四、对scott用户的基本查询操作(上篇)
阅读量:6825 次
发布时间:2019-06-26

本文共 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用户内容单词备注

 

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

你可能感兴趣的文章
Yii框架中ActiveRecord使用Relations
查看>>
leetcode 55.跳跃游戏
查看>>
flexPaper +swftools实现文档在线阅读
查看>>
分形树的绘制
查看>>
loadrunner请求中有汉字 如何编码
查看>>
java数据结构 • 面向对象 • 异常 • 随机数·时间
查看>>
springmvc 实现pc端手机端适配(同一个请求根据不同客户端展示不同界面)
查看>>
BTree和B+Tree详解
查看>>
VS2005工程迁移到Eclipse CDT
查看>>
Linux高端内存映射(上)【转】
查看>>
usb_control_msg参数详解【转】
查看>>
8086汇编指令速查手册
查看>>
j2EE web.xml中的url-pattern的映射规则
查看>>
带输入输出参数的存储过程
查看>>
字符编码简介
查看>>
LevelDB源码之六缓存机制
查看>>
双向链表
查看>>
安装unity3d多个版本共存
查看>>
如何获取模拟器安装的app的位置
查看>>
[LeetCode] Largest Rectangle in Histogram 解题报告
查看>>