社区
基础和管理
帖子详情
1个很简单的数据库问题:找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.
xj1989211
2008-12-09 07:04:55
5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.
连接起来查询 这两个要查询的在一个表内
...全文
2122
1
打赏
收藏
1个很简单的数据库问题:找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.
5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料. 连接起来查询 这两个要查询的在一个表内
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Andy__Huang
2008-12-09
打赏
举报
回复
表在哪里啊?
如果资料存储在同一个表,按你的意思,那么:
select *
from tb
where (dept='10' and position='MANAGER') or (dept='20' and position='CLERK')
oracle
数据库
经典题目
一、填空 1.在多进程Oracle实例系统
中
,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。 3.在需要滤除查询结果
中
重复的行时,必须使用关键字Distinct; 在需要返回查询结果
中
的所有行时,可以使用关键字ALL。 4.当进行模糊查询时,应使用关键字like和通配符问号(?)或百分号"%"。 5.Where子句可以接收From子句输出的数据,而HAVING子句则可以接收来自WHERE、FROM或GROUP BY子句的输入。 6.在SQL语句
中
,用于向表
中
插入数据的语句是Insert。 7.如果需要向表
中
插入一批已经存在的数据,可以在INSERT语句
中
使用Select语句。 8.使用Describe命令可以显示表的结构信息。 9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。
10
.使用Save命令可以将缓冲区
中
的SQL命令保存到一个文件
中
,并且可以使用Run命令运行该文件。 11.一个模式只能够被一个
数据库
对象所拥有,其创建的所有模式对象都保存在自己的模式
中
。 12.根据约束的作用域,约束可以分为表级约束和列级约束两种。列级约束是字段定义的一部分,只能够应用在一个列上;而表级约束的定义独立于列的定义,它可以应用于一个表
中
的多个列。 13.填写下面的语句,使其可以为Class表的ID列添加一个名为PK_CLASS_ID的主键约束。 ALTER TABLE Class Add ____________ PK_LASS_ID (Constraint) PRIMARY KEY ________ (ID) 14. 每个Oracle
10
g
数据库
在创建后都有4个默认的
数据库
用户:system、sys、sysman和DBcnmp 15. Oracle提供了两种类型的权限:系统权限和对象权限。系统权限提供了在Oracle
数据库
系统范围内执行某种任务的操作能力,而对象权限则是一种赋予用户在指定的
数据库
对象(如表、视图、过程等) 16. Oralce
数据库
在进行物理备份有联机备份和脱机备份两种方式可供选择。 . 17. 从存储结构的角度来说,Oracle
数据库
可分为物理结构和逻辑结构。 18. 表空间是Oracle
数据库
中
数据的逻辑组织,每个
数据库
至少有一个SYSTEM系统表空间。 19.视图是一个表示表的数据的
数据库
对象,它允许用户从一个表或一组表
中
通过一定的查询语句建立一个“虚表”。
20
.序列是一种可被多个用户使用的用于产生一系列唯一数字的
数据库
对象。尤其适合多用户环境
中
,可以生成唯一的序列号而没有磁盘I/O或事务处理锁定开销。 21. 一个表空间具有离线(OFFLINE)、在线(ONLINE)、只读(READ ONLY)、读写(READ WRITE)状态。 二、选择 1.在全局存储区SGA
中
,哪部分内存区域是循环使用的?( B ) A.数据缓冲区 B.日志缓冲区 C. 共享池 D.大池 2.如果一个服务器进程非正常终止,Oracle系统将使用下列哪一个进程来释放它所占用的资源?( D ) A.DBWR B.LGWR C. SMON D.PMON 3. 如果要查询
数据库
中
所有表的信息,应当使用下列哪种数据字典视图?( A ) A. DBA视图 B. ALL视图 C. USER视图 D. 动态性能视图 4. 下列哪一项是Oracle
数据库
中
最小的存储分配单元? ( C ) A. 表空间 B. 段 C. 盘区 D. 数据块 5. 下面的各选项
中
哪一个正确描述了Oracle
数据库
的逻辑存储结构? ( A ) A. 表空间由段组成,段由盘区组成,盘区由数据块组成 B. 段由表空间组成,表空间由盘区组成,盘区由数据块组成 C. 盘区由数据块组成,数据块由段组成,段由表空间组成 D. 数据块由段组成,段由盘区组成,盘区由表空间组成 6. 下列的哪个子句在SELECT语句
中
用于排序结果集?( D ) A. Having子句 B. Where子句 C. From子句 D. Order by子句 7. Having子句的作用是( B )。 a. 查询结果的分组条件 B. 组的筛选条件 C. 限定返回的行的判断条件 D. 对结果集进行排序 8. 下列哪个函数可以把一个列
中
的所有值相加求和? ( B ) A MAX B. SUM C. COUNT D. AVG 9. 下列哪个子句是SELECT语句
中
必选项?( A ) A. FROM B.WHERE C.HAVING D. ORDER BY
10
. 下列哪个子句实现对一个结果集进行分组和汇总?( D ) A.HAVING B. ORDER BY C. WHERE D. GROUP BY 11. 查询一个表的总记录数,可以采用_________统计函数。( C ) A. AVG(*) B. SUM(*) C. COUNT(*) D.MAX(*) 12. 要建立一个语句向Types表
中
插入数据,这个表只有两列,T_ID和T_Name列。如果要插入一行数据,这一行的T_ID值是
10
0,T_Name值是RFUIT。应该使用的SQL语句是_____。( A ) A. INSERT INTO Type Values(
10
0, ‘FRUIT’) B. SELECT * FROM Type WHERE T_ID=
10
0 AND T_NAME=’FRUIT’ C. UPDATE SET T_ID=
10
0 FROM Types WHERE T_Name=’FRUIT’ D. DELET * FROM Types WHERE T_ID=
10
0 AND T_Name=’FRUIT’ 13. 用_____语句修改表的一行或多行数据。( A ) A.Update B.set C.Select D.Where 14. 使用什么命令可以清除表
中
所有的内容? ( D ) A.INSERT B.UPDATE C. DELETE D.TRUNCATE 15.关于模式的描述下列哪一项不正确?( C ) A.表或索引等模式对象一定属于某一个模式 B.在Oracle
数据库
中
,模式与
数据库
用户是一一对应的 C.一个表可以属于多个模式 D.一个模式可以拥有多个表 16.唯一约束与主键约束的一个区别是?( D ) A.唯一约束的列的值不可以有重复值 B.唯一约束的列的值可以不是唯一的 C.唯一约束的列不可以为空值 D.唯一约束的列可以为空值 17. 只能存储一个值的变量是哪种变量?( B ) A. 游标 B. 标量变量 C. 游标变量 D. 记录变量 18. 声明%TPYE类型的变量时,服务器将会做什么操作?( A ) A. 为该变量检索
数据库
列的数据类型 B.复制一个变量 C.检索
数据库
中
的数据 D.为该变量检索列的数据类型和值 19.下列哪一项可以正确地引用该记录变量
中
的一个值?( B ) A.rec_abc(1) B. rec_abc(1).col C. rec_abc.col D.rec_abc.first()
20
. 在定义游标时使用的FOR UPDATE子句的作用是______。( C ) A.执行游标 B. 执行SQL语句的UPDATE语句 C.对要更新表的列进行加锁 D. 都不对 21. 如果允许用户对视图进行更新和插入操作,但是又要防止用户将不符合视图约束条件的记录添加到视图,应当在定义视图时指定下列哪一个子句?( C ) A.WITH GRANT OPTION B. WITH READ ONLY C. WITH CHECK OPTION D. WITH CHECK ONLY 22. 如果想查看视图
中
哪些字段是可以更新的,应当查询哪一个数据字典视图?( D ) A. DBA_VIEWS B. DBA_OBJECTS C. DBA_CLU_COLUMNS D. DBA_UPDATABLE_COLUMNS 23. 在下列各选项
中
,关于序列的描述哪一项是不正确的?( D ) A. 序列是Oracle提供的用于产生一系列唯一数字的
数据库
对象 B.序列并不占用实际的存储空间 C.使用序列时,需要用到序列的两个伪列NEXTVAL与CURRVAL。其
中
,NEXTVAL 将返回序列生成的下一个值,而CURRVAL返回序列的当前值 D.在任何时候都可以使用序列的伪列CURRVAL,以返回当前序列值 24. 在下列各选项
中
,关于同义词的描述哪一项是不正确的?( B ) A.同义词是
数据库
对象的一个替代名,在使用同义词时,Oracle会将其翻译为对应的对象名称 B.在创建同义词时,所替代的模式对象必须存在 C.Oracle
中
的同义词分为公有同义词和私有同义词 D.公有同义词在
数据库
中
所有的用户都可以使用;私有同义词由创建它的用户所拥有 25. 下列哪个锁模式不属于Oracle?( D ) A. 共享锁 B.排他锁 C. 行级共享锁 D. 死锁 26. 想在另一个模式
中
创建表,用户最少应该具有什么系统权限?( B ) A.CREATE TABLE B. CREATE ANY TABLE C. RESOURCE D. DBA 27. 如果要启用所有角色,则应该使用哪一个命令?( B ) A.SET ROLE ALL B. SET ROLE ENABLE ALL C. ALTER SESSION ALL D.ALTER USER ROLE ALL 28. 下列哪一个操作可以用来为一个备份操作手动分配通道?( A ) A.ALLOCATE CHANNEL B. CREATE CHANNEL C. CHANNEL ALLOCATE D. CREATE LINK 29. 下列哪一个命令用来显示RMAN通道的配置信息?( C ) A. LIST B. DISPLAY C.SHOW D.都可以 30. 下列哪一个命令可以用来执行不完全恢复?( B ) A. RESTORE DATABASE UNTIL B. RECOVER DATABASE UNTIL C. RECOVER DATA UNTIL D. RESTORE DATA UNTIL 三、简答题 1. 说明
数据库
模式与用户之间的区别。 答案:
数据库
模式与用户之间的区别在于:用户是
数据库
的使用者和管理者,用户具有帐户状态、访问权限和操作权限等属性。模式是一系列逻辑数据结构或对象的集合,是
数据库
中
对象的组织和管理单位。 2. 简要游标的作用和游标操作的基本步骤。 答案: 游标的作用是将
数据库
的
中
数据检索出来后缓存,可以被PL/SQL程序一行一行的读取并处理。支持一条、多条、零条记录的处理。 游标的基本操作步骤为: (1)声明游标,使用查询来定义游标的列和行 (2)打开游标,使用PL/SQL命令OPEN来打开一个声明的游标 (3)提取数据,从游标
中
重复提取每条记录到数据结构
中
,直到数据集合被提交 (4)关闭游标,使用完游标后将其关闭 3.Oracle
数据库
的工作模式有哪两种?它们之间有有何区别? 答案: 在Oracle
数据库
中
,
数据库
的操作模式分为专用服务器(DELICATED SERVER)模式和多线程服务器(MULTITHREADED SERVER)模式两种。其
中
,在专用服务器模式
中
为每个用户进程创建一个服务器进程,用户进程与服务器进程之间是1:1的关系;在共享服务器模式
中
,一个服务器进程可以为多个用户进程服务器。 4.说明
数据库
内存结构
中
SGA和PGA的组成,以及这两个内存区存放信息的区别。 答案: SGA区由数据缓冲区、共享池、重做日志缓冲区、大型池、JAVA池构成;PGA区由排序区、私有SQL区以及堆栈构成。SGA区是由Oracle分配的共享内存结构,包含一个
数据库
实例共享的数据和控制信息。当多个用户同时连接同一个实例时,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。用户对
数据库
的各种操作主要在SGA区
中
进行。该内存区随
数据库
实例的创建而分配,随实例的终止而释放。PGA区是在用户进程连接
数据库
,创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区。每个服务器进程只能访问自己的PGA区,所有服务器进程PGA区总和即为实例的PGA区的大小。 5. 说明
数据库
表空间的种类,以及不同类型表空间的作用。 答案:
数据库
表空间分为系统表空间和非系统表空间两类,其
中
非系统表空间包括撤销表空间、临时表空间和用户表空间等。 SYSTEM表空间主要用于存储
数据库
的数据字典、PL/SQL程序的源代码和解释代码、
数据库
对象的定义。撤销表空间专门进行回退信息的自动管理。临时表空间是专门进行临时段管理的表空间。用户表空间用于分离不同应用的数据,而且能够减少读取数据文件时产生的I/O冲突。 6. 说明Oracle
10
g
数据库
文本初始化参数文件与服务器初始化参数文件的区别。 答案: 文本初始化参数文件是一个本地的初始化参数文件,而服务器初始化参数文件是一个放在
数据库
服务器端的共享的二进制初始化参数文件。文本参数文件的修改是通过直接对文本的修改实现的,通过命令行是无法将修改后的参数值写入该文件
中
,而服务器初始化参数文件是不能直接修改的,必须通过ALTER SYSTEM语句来进行参数修改的。 7. 简述PL/SQL程序结构及各个部分的作用。 答案: PL/SQL程序的基本单元是语句块,所有的PL/SQL程序都是由语句块构成的,语句块之间可以相互嵌套,每个语句块完成特定的功能。 声明部分:以关键字DECLARE开始,BEGIN结束。主要用于声明变量、常量、数据类型、游标、异常处理名称以及本地(局部)子程序定义等。 执行部分:是PL/SQL块的功能实现部分,以关键字BEGIN开始,EXCEPTION或END结束(如果PL/SQL块
中
没有异常处理部分,则以END结束)。该部分通过变量赋值、流程控制、数据查询、数据操纵、数据定义、事务控制、游标处理等实现块的功能。 异常处理部分:以关键字EXCEPTION开始,END结束。该部分用于处理该块执行过程
中
产生的异常。 8. 说明触发器的种类和对应的作用对象、触发事件。 答案: 触发器包括DML触发器、INSTEAD-OF触发器和系统触发器。其
中
,DML触发器主要作用于表,其事件有INSERT、UPDATE、DELETE;INSTEAD-OF触发器主要主用于视图,其事件有INSERT、UPDATE、DELETE;系统触发器主要是DML事件和系统事件发生时调用的触发器,其
中
DML事件包括CREATE、DROP、ALTER等,系统事件包括LOGON、LOGOFF、STARTUP、SHUTDOWN、SERVERERROR等。 9.简述Oracle
数据库
角色的种类、作用,以及如何利用角色为用户授权。 答案: Oracle
数据库
中
角色分为系统预定义的角色和用户自定义的角色两类。角色是一系列权限的集合,可以先将权限授予角色,然后将角色授予具有相同权限的用户。 四、求解题 现有关系
数据库
如下: S(SNO,SNAME,CITY) P(PNO,PNAME,COLOR,WEIGHT) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY) 其
中
,S为供应商,包含属性的含义依次是供应商代码、供应商名字、供应商所在城市;P为零件,包含属性的含义依次是零件代码、零件名字、颜色、重量;J为工程项目,包含属性的含义依次是工程项目代码、工程项目名字、工程项目所在城市;SPJ为供货关系,包含属性的含义依次是供应商代码、零件代码、工程项目代码,某供应商向某个项目供应数量的零件数量。 请用SQL语言完成如下
问题
: (1)查询供应工程J1零件P1的供应商号码SNO (2)查询供应工程J1零件为红色的供应商号码SNO (3)查询没有使用北京供应商生产的红色零件的工程号JNO 五、设计题(E-图) 六、PL/SQL语言程序设计题。 设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生: 现要建立关于系、学生、班级的
数据库
,关系模式为: 班CLASS(班号classid,专业名subject,系名deptname,入学年份enrolltime,人数num) 学生STUDENT(学号studentid,姓名name,年龄age,班号classid) 系DEPARTMENT(系号deptid,系名deptname) 试用PL/SQL语言完成以下功能: 1. 建表,在定义
中
要求声明: (1) 每个表的主外键。 (2) 每个班级的人数不能超过30人。 (3) 学生的年龄介于15到40岁之间。 (4) 学生姓名不能为空。 2. 插入如下数据 CLASS表 classid subject deptname enrolltime num
10
1 软件 计算机 1995
20
10
2 微电子 计算机 1996 30 111 无机化学 化学 1995 29 112 高分子化学 化学 1996 25 121 统计数学 数学 1995
20
131 现代语言
中
文 1996
20
141 国际贸易 经济 1997 30 142 国际金融 经济 1996 14 STUDENT表 studentid name age classid 8
10
1 张三 18
10
1 8
10
2 钱四 16 121 8
10
3 王玲 17 131 8
10
5 李飞 19
10
2 8
10
9 赵四 18 141 81
10
李可
20
142 8
20
1 张飞 18 111 8302 周瑜 16 112 8
20
3 王亮 17 111 8305 董庆 19
10
2 8409 赵龙 18
10
1 85
10
李丽
20
142 DEPARTMENT表 deptid deptname 001 数学 002 计算机 003 化学 004
中
文 005 经济 3. 学校又新增加了一个物理系,编号为006 4. 学生张三退学,请更新相关的表。 1、有一张表test,有3个字段id,name,parentid。parentid是指父亲的id,请写一个sql语句,
找出
当过爷爷的id和name。 2、有一张学生表student,字段有student_id,name,即学号,名字。 还有一张选课表,字段有student_id,lesson_id。 还有一张课程表,字段lesson_id,lesson_name。 学生和课程是多对多的关系。 写一个sql语句,
找出
所有选了全部课程的学生。 3、有一张表person表,字段有id,name,age。age是年龄。 写一个sql语句,
找出
年龄最接近的2个人。 如有下面4条记录: 1,a,18 2,b,
20
3,c,25 4,d,26 则输出3,4 emp表和dept表完成下列练习 Emp员工表 empno ename job Mgr Hiredate Sal Comm Deptno 员工号 员工姓名 工作 上级编号 受雇日期 薪金 佣金
部门
编号 Dept表 Deptno Dname Loc
部门
编号
部门
名称 地点 1.列出至少有一个员工的所有
部门
。 select dept_id from s_emp where userid is not null; 2.列出薪金比“chad”多的所有员工。 select id,salary from s_emp where salary>(select salary from s_emp where first_name='Chad'); 3.列出所有员工的姓名及其直接上级的姓名。 select l.first_name as yuangong,e.first_name as laoban from s_emp e,s_emp l where e.
manager
_id=l.id(+); 4.列出受雇日期早于其直接上级的所有员工。 select l.first_name as yuangong,e.first_name as laoban from s_emp e,s_emp l where e.
manager
_id=l.id(+) and l.start_date>e.start_date; 5.列出
部门
名称和这些
部门
的员工信息,同时列出那些没有员工的
部门
。 6.列出所有“
CLERK
”(
办事员
)的姓名及其
部门
名称。 7.列出最低薪金大于1500的各种工作。 8.列出在
部门
“SALES”(销售部)工作的员工的姓名,假定不知道销售部的
部门
编号。 9.列出薪金高于公司平均薪金的所有员工。
10
.列出与“SCOTT”从事相同工作的所有员工。 11.列出薪金等于
部门
30
中
员工的薪金的所有员工的姓名和薪金。 12.列出薪金高于在
部门
30工作的所有员工的薪金的员工姓名和薪金。 13.列出在每个
部门
工作的员工数量、平均工资和平均服务期限。 14.列出所有员工的姓名、
部门
名称和工资。 15.列出从事同一种工作但属于不同
部门
的员工的一种组合。 16.列出所有
部门
的详细信息和
部门
人数。 17.列出各种工作的最低工资。 18.列出各个
部门
的
MANAGER
(
经理
)的最低薪金。 19.列出所有员工的年工资,按年薪从低到高排序。 原文:http://www.2xyd.cn/showtopic-524.aspx Oracle习题二附答案 使用scott/tiger的emp表完成练习 更多编程相关:http://www.2xyd.cn/showforum-11.aspx 答案: 1. select distinct dname from dept where deptno in (select distinct deptno from emp); 要查
部门
编号如果存在于emp 表
中
,说明这个
部门
有员工。 2. select ename,job,mgr,hiredate,sal from emp where sal> (select sal from emp where ename='SMITH'); 3. select e.ename, e.mgr , w.ename from emp e, emp w where e.mgr=w.empno; 4. select e.ename, e.mgr , e.hiredate,w.ename,w.hiredate from emp e, emp w where e.mgr=w.empno and e.hiredate< w.hiredate; 5. select e.ename,e.hiredate, d.dname,d.deptno from emp e, dept d where e.deptno (+)=d.deptno; 本例子使用的是外连接, 也可以用右连接。 select e.ename,e.hiredate, d.dname,d.deptno from emp e right join dept d on e.deptno=d.deptno; 6. select e.ename,e.hiredate,e.job, d.dname,d.deptno from emp e, dept d where e.deptno =d.deptno and e.job=upper('
clerk
'); 7. select job, min(sal) from emp group by job having min(sal)>1500; 8. select e.ename,d.dname from emp e,dept d 2楼 where e.deptno=d.deptno and d.dname=upper('sales'); 或者: select ename from emp where deptno = (select deptno from dept where dname=upper('SALES')); 9. select ename, job, sal from emp where sal> (select avg(sal) from emp );
10
. select ename, job from emp where job = (select job from emp where ename=upper('scott')); 11. select ename, sal,job from emp where sal in (select sal from emp where deptno=30); 12. select ename, sal,job from emp where sal >all (select sal from emp where deptno=30); 或者 select ename ,sal from emp where sal> (select max(sal) from emp where deptno=30); 13. select d.deptno,d.dname, count(e.ename), avg(e.sal), avg(months_between(sysdate,e.hiredate)) from emp e, dept d where e.deptno(+)= d.deptno group by d.deptno,dname; 或者下面的方法,这种方法更好理解,把需要汇总的生成一个视图e。 select e.*,d.dname , from (select deptno, count(ename) ,avg(sal),avg(months_between(sysdate,hiredate)) from emp group by deptno) e, dept d where e.deptno =d.deptno; 14. select d.dname, e.ename, sal+nvl(comm,0) from emp e, dept d where d.deptno=e.deptno; 15. select e.ename,e.job, e.deptno ,d.job, d.deptno from emp e, emp d where e.job=d.job and e.deptno<>d.deptno; 16. select count(e.ename),d.dname from emp e, dept d where e.deptno(+)= d.deptno group by e.deptno,d.dname; 或者写成 select d.deptno,e.*,d.dname from (select deptno,count(ename) from emp group by deptno) e,dept d where e.deptno(+)= d.deptno; 17. select job,min(sal+nvl(comm,0))from emp group by job; 18. select deptno,min(sal) from emp where job=upper('
manager
') group by deptno ; 19. select ename , (sal+nvl(comm,0))*12 yearsal from emp order by yearsal ; --1、列出至少有一个雇员的所有
部门
select distinct dname from dept where deptno in (select distinct deptno from emp); --2、列出薪金比"SMITH"多的所有雇员 select ename,sal from emp where sal>(select sal from emp where ename=upper('smith')); --3、列出所有雇员的姓名及其直接上级的姓名 select e.ename,m.ename from emp e,emp m where e.mgr=m.empno(+); --4、列出入职日期早于其直接上级的所有雇员 select ename from emp e where hiredate<(select hiredate from emp where empno=e.mgr); --5、列出
部门
名称和这些
部门
的雇员,同时列出那些没有雇员的
部门
select dname,ename from dept d left join emp e on d.deptno=e.deptno; --6、列出所有“
CLERK
”(
办事员
)的姓名及其
部门
名称 select ename,dname from emp e left join dept d on e.deptno=d.deptno where job=upper('
clerk
'); --7、列出各种工作类别的最低薪金,显示最低薪金大于1500的记录 select job,min(sal) from emp group by job having min(sal)>1500; --8、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的
部门
编号 select ename from emp where deptno = (select deptno from dept where dname=uppder('SALES')) --9、列出薪金高于公司平均水平的所有雇员 select ename from emp where sal>(select avg(sal) from emp); --
10
、列出与“SCOTT”从事相同工作的所有雇员 select ename from emp where job=(select job from emp where ename=upper('scott')); --11、列出某些雇员的姓名和薪金,条件是他们的薪金等于
部门
30
中
任何一个雇员的薪金 select ename,sal from emp where sal in (select sal from emp where deptno=30); --12、列出某些雇员的姓名和薪金,条件是他们的薪金高于
部门
30
中
所有雇员的薪金 select ename ,sal from emp where sal>(select max(sal) from emp where deptno=30); --13、列出每个
部门
的信息以及该
部门
中
雇员的数量 select d.deptno,dname,count(ename) from dept d left join emp e on (d.deptno=e.deptno) group by d.deptno,dname --14、列出所有雇员的雇员名称、
部门
名称和薪金 Select e.ename,d.dname,e.sal from emp e left join dept d on (d.deptno=e.deptno) --15、列出从事同一种工作但属于不同
部门
的雇员的不同组合 Select tba.ename,tbb.ename,tba.job,tbb.job,tba.deptno,tba.deptno From emp tba,emp tbb Where tba.job=tbb.job and tba.deptno<>tbb.deptno --16、列出分配有雇员数量的所有
部门
的详细信息,即使是分配有0个雇员 Select dept.deptno,dname,loc,count(empno) From dept,emp Where dept.deptno=emp.deptno(+) Group by dept.deptno,dname,loc --17、列出各种类别工作的最低工资 Select min(sal) from emp group by job --18、列出各个
部门
的
MANAGER
(
经理
)的最低薪金 Select deptno,min(sal) from emp where job=upper(‘
manager
’) group by deptno --19、列出按年薪排序的所有雇员的年薪 select (sal+nvl(comm,0))*12 as avn from emp order by avn --
20
、列出薪金水平处于第四位的雇员 Select * from (Select ename,sal, rank() over (order by sal desc) as grade from emp) where grade=4 --1、选择
部门
30
中
的雇员 select * from emp where deptno=30; --2、列出所有
办事员
的姓名、编号和
部门
select ename,empno,dname from emp e inner join dept d on e.deptno = d.deptno where job=upper(‘
clerk
’); --3、
找出
佣金高于薪金的雇员 select * from emp where comm>sal; --4、
找出
佣金高于薪金60%的雇员 select * from emp where comm>sal*0.6 --5、
找出
部门
10
中
所有
经理
和
部门
20
中
的所有
办事员
的
详细资料
select * from emp where (deptno=
10
and job=upper(‘
manager
‘)) or (deptno=
20
and job=upper(‘
clerk
‘)); --6、
找出
部门
10
中
所有
经理
、
部门
20
中
所有
办事员
,既不是
经理
又不是
办事员
但其薪金>=
20
00的所有雇员的
详细资料
select * from emp where (deptno=
10
and job=upper(‘
manager
‘)) or (deptno=
20
and job=upper(‘
clerk
‘)) or (job<>upper(‘
manager
’) and job<>upper(‘
clerk
’) and sal>=
20
00) --7、
找出
收取佣金的雇员的不同工作 select distinct job from emp where comm>0; --8、
找出
不收取佣金或收取的佣金低于
10
0的雇员 select * from emp where nvl(comm,0)<
10
0; --9、
找出
各月最后一天受雇的所有雇员 select * from emp where hiredate= last_day(hiredate); --
10
、
找出
早于25年之前受雇的雇员 select * from emp where months_between(sysdate,hiredate)/12>25; select * from emp where hiredate
10年服务年限的日期 Select ename,add_months(hiredate,12*
10
) ‘服务年限的日期’ from emp --17、显示雇员的
详细资料
,按姓名排序 Select * from emp order by ename --18、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面 Select ename from emp order by hiredate --19、显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而工作相同时按薪金升序 Select ename,job,sal from emp order by job desc ,sal asc --
20
、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,将最早年份的项目排在最前面 select ename,to_char(hiredate,‘yyyy‘),to_char(hiredate,‘mm‘) from emp order by hiredate asc --21、显示在一个月为30天的情况下所有雇员的日薪金 select ename,sal/30 from emp; --22、
找出
在(任何年份的)2月受聘的所有雇员 select * from emp where to_char(hiredate,‘mm‘)=‘02‘; --23、对于每个雇员,显示其加入公司的天数 select ename,sysdate-hiredate from emp --24、显示姓名字段的任何位置,包含 "A" 的所有雇员的姓名 select ename from emp where ename like ‘%A%‘; select ename from emp where instr(ename,’A’,1)>0; --25、以年、月和日显示所有雇员的服务年限 Select months_between(sysdate,hiredate)/12 as “年”, months_between(sysdate,hiredate) as “月”, sysdate-hiredate as “日” from emp
Oracle
数据库
基础学习资料整合
Oracle
数据库
基础 任务一 1、修改上机的计算机上的文件: product\11.1.0\db_1\NETWORK\ADMIN\tnsnames.ora product\11.1.0\db_1\NETWORK\ADMIN\listener.ora 把文件
中
的HOST后面的名称更改为localhost或者127.0.0.1 目的:在你自己的计算机上开启监听服务,用于接受客户端的连接请求, localhost指在什么计算机上开启监听,一定是你自己的计算机,本机可以使用如 下方法表示:localhost 127.0.0.1 hostname ip 查看主机名:hostname 查看ip:ipconfig 2、启动
数据库
: 方法1: 打开管理工具
中
的服务管理工具,启动OracleOraHome90TNSListener和 OracleServicehygj服务 方法2: 打开CMD命令提示符界面,输入 net start OracleOraHome90TNSListener net start OracleServicehygj 3、默认开放的用户: 系统管理员: sys 设置密码:change_on_install
数据库
管理员: system 设置密码:
manager
普通用户: scott 设置密码:tiger 4、打开IE,使用https://localhost:1158/em来访问: 输入用户名:scott 密码:tiger 登陆系统 5、使用scott/tiger用户下的emp表完成下列练习,表的结构说明如下: emp员工表 字段内容如下: empno 员工号 ename 员工姓名 job 工作 mgr 上级编号 hiredate 受雇日期 sal 薪金 comm 佣金 deptno
部门
编号 . 选择
部门
30
中
的所有员工 . 列出所有
办事员
(
CLERK
)的姓名,编号和
部门
编号 .
找出
佣金高于薪金的员工 .
找出
佣金高于薪金的60%的员工 .
找出
部门
10
中
所有
经理
(
MANAGER
)和
部门
20
中
所有
办事员
(
CLERK
)的详 细资料 .
找出
既不是
经理
又不是
办事员
但其薪金大于或等于
20
00的所有员工的详细 资料 .
找出
收取佣金的员工的不同工作 .
找出
不收取佣金或收取的佣金低于
10
0的员工 . 向emp表
中
插入一纪录,员工TOM,80年1月
10
日入职,薪金为3000, 没有补贴(comm) . 将emp表
中
与scott用户具有相同工作岗位的人的工资更改为原来的
10
5% 任务二 1、创建my_employee表,并向表
中
添加数据,数据参考如下: ID Last_name First_name UserID Salary 1 Patel Ralph rpatel 795 2 Dancs Betty bdancs 860 3 Biri Ben bbiri 1
10
4 Newman Chard cnewman 750 5 Ropeburn Audry apopebur 1550 (1)、编写如下的脚本: 把这个脚本存储在c:盘根目录下,存储为test.sql,并使用start命令调用此 脚本 set echo off set feedback off prompt Creating The My_employee table. Please wait... create table my_employee ( id number(4) constraint my_employee_id_nn not null, last_name varchar2(25), first_name varchar2(25), userid varchar28), salary number(9,2)) / (2).显示my_employee表的结构 (3).向my_employee表
中
添加首条纪录,要求不在insert语句
中
使用字段列表 (4).向my_employee表
中
添加第二条纪录,要求在insert语句
中
使用字段列表 (5).验证数据是否添加成功 (6).使数据的添加成为永久性的。 2、将3号员工的Last_name修改为Drexler 3、将所有工资小
SQL语句练习题
SQL练习题 1、选择
部门
30
中
的所有员工; 2、列出所有
办事员
(
CLERK
)的姓名,编号和
部门
编号; 3、
找出
奖金高于工资的员工; 4、
找出
奖金高于工资的60%的员工; 5、
找出
部门
10
中
的所有
经理
(
MANAGER
)和
部门
20
中
所有的
办事员
(
CLERK
)的
详细资料
; 6、
找出
部门
10
中
所有的
经理
(
MANAGER
),
部门
20
中
所有
办事员
(
CLERK
),既不是
经理
又不是
办事员
但其工资大于或等于
20
00的所有员工的
详细资料
; 7、
找出
收取奖金的员工的不同工作; 8、
找出
不收取奖金或者收取的奖金低于
10
0的员工;
尚学堂--oralce练习2答案
1.选择
部门
30
中
的所有员工. 2.列出所有
办事员
(
CLERK
)的姓名,编号和
部门
编号. 3.
找出
佣金高于薪金的员工. 4.
找出
佣金高于薪金的60%的员工. 5.
找出
部门
10
中
所有
经理
(
MANAGER
)和
部门
20
中
所有
办事员
(
CLERK
)的
详细资料
. 6.
找出
部门
10
中
所有
经理
(
MANAGER
),
部门
20
中
所有
办事员
(
CLERK
),既不是
经理
又不是
办事员
但其薪金大于或等于
20
00的所有员工的详细资...
mysql常用函数
6、
找出
部门
10
中
所有
经理
、
部门
20
中
所有
办事员
以及既不是
经理
又不是
办事员
但其薪金大于或等于
20
00的所有雇员的
详细资料
。– 示例 : 统计每个
部门
的平均工资,查询那些超过
20
00的
部门
。5、
找出
部门
10
中
所有
经理
和
部门
20
中
所有
办事员
的
详细资料
。2、列出所有
办事员
(
CLERK
)的姓名、编号和
部门
。– 示例 : 按
部门
统计每个
部门
的最高工资最低工资。8、
找出
不收取佣金或收取的佣金低于
10
0的雇员。1、查询出
部门
编号为30
中
的所有雇员信息。7、
找出
收取佣金的雇员的不同工作。3、
找出
佣金高于薪金的雇员。
基础和管理
17,377
社区成员
95,128
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章