--1、选择在部门 30 中员工的所有信息
select * from emp where EMPNO=30;
--2、列出职位为(MANAGER)的员工的编号,姓名
select EMPNO, ENAME from emp where job='MANAGER';
--3、找出奖金高于工资的员工
select * from emp where COMM>SAL;
--4、找出每个员工奖金和工资的总和
select EMPNO,ENAME,COMM+SAL from emp;
--5、找出部门 10 中的经理(MANAGER)和部门 20 中的普通员工(CLERK)
select * from emp where (DEPTNO=10 and job='MANAGER') or (DEPTNO=20 and job='CLERK');
--6、找出部门 10 中既不是经理也不是普通员工,而且工资大于等于 2000 的员工
select * from emp where job not in ('MANAGER','CLERK') and SAL>=2000;
--7、找出有奖金的员工的不同工作
select distinct job from emp;
--8、找出没有奖金或者奖金低于 500 的员工
select * from emp where COMM is null or COMM >500;
--9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
select ename,HIREDATE from emp order by HIREDATE desc;
--10、找出每个月倒数第三天受雇的员工(如:2009-5-29)
select * from emp
where EXTRACT(day FROM to_date(sysdate,'yyyy-mm-dd')) - EXTRACT(day FROM to_date(HIREDATE,'yyyy-mm-dd')) =3;
--11、找出 25 年前雇的员工
select * from emp
where EXTRACT(year FROM to_date(sysdate,'yyyy-mm-dd')) - EXTRACT(year FROM to_date(HIREDATE,'yyyy-mm-dd')) >25;
--12、所有员工名字前加上 Dear ,并且名字首字母大写
select 'Dear'||initcap(ename) from emp;
--13、找出姓名为 5 个字母的员工
select * from emp where ENAME like '_____';
--14、找出姓名中不带 R 这个字母的员工
select * from emp where ENAME not like '%R%';
--15、显示所有员工的姓名的第一个字
select substr(ename,0,1) as name from emp;
--16、分组统计各部门下工资>500 的员工的平均工资、
select avg(SAL) from emp where SAL>500 ;
--17、统计各部门下平均工资大于 500 的部门
select DEPTNO ,avg(SAL) from emp group by DEPTNO having avg(SAL)>500;
--18、算出部门 30 中得到最多奖金的员工奖金
select max(COMM) from EMP where DEPTNO=30;
--19、算出部门 30 中得到最多奖金的员工姓名
select ENAME from EMP where comm in (select max(COMM) from EMP where DEPTNO=30);
--20、算出每个职位的员工数和最低工资
select job,count(*) as num,min(SAL) from emp group by job;

雇员表:记录了一个雇员的基本信息
EMP(雇员表)
NO               
字段            
类型                           
描述
1             
EMPNO           
NUMBER(4)             
雇员编号
2             
ENAME          
VARCHAR2(10)     表示雇员姓名
3            
JOB               
VARCHAR2(9)        表示工作职位
4           
 MGR               
NUMBER(4)            表示一个雇员的领导编号
5             
HIREDATE      
DATE                     
表示雇佣日期
6            
 SAL                
NUMBER(7,2)         表示月薪,工资
7            
COMM            
NUMBER(7,2)         表示奖金或佣金
8             
DEPTNO         
NUMBER(2)           表示部门编号

部门表:表示一个部门的具体信息
DEPT(部门表)
NO                   
字段            
类型                
              
描述
1                   
DEPTNO        
NUMBER(2)               
部门编号
2                    
DNAME          
VARCHAR2(14)          部门名称
3                    
LOC                
VARCHAR2(13)           部门位置

奖金表:表示一个雇员的工资及奖金。

BONUS(奖金表)
NO                 
字段                 
类型                                
描述
1                 
ENAME            VARCHAR2(10)               
雇员姓名
2                
JOB                 
VARCHAR2(9)                  
雇员工作
3                
SAL                  
NUMBER                         
雇员工资
4                
COMM              
NUMBER                           
雇员奖金

一个公司是有等级制度,用此表表示一个工资的等级
SALGRADE(工资等级表)
NO          
字段                       
类型                                  
描述
1           
GRADE                  
NUMBER                          
等级名称
2            
LOSAL                    
NUMBER                    
此等级的最低工资
3          
HISAL                      
NUMBER                    
此等级的最高工资

题目:

1、 选择在部门 30 中员工的所有信息 


2
、列出职位为(MANAGER)的员工的编号,姓名

3、找出奖金高于工资的员工

4、找出每个员工奖金和工资的总和

5、找出部门 10 中的经理(MANAGER)和部门 20 中的普通员工(CLERK)

6、找出部门 10 中既不是经理也不是普通员工,而且工资大于等于
2000 的员工

7、找出有奖金的员工的不同工作

8、找出没有奖金或者奖金低于 500 的员工 
 
9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面

10、找出每个月倒数第三天受雇的员工(如:2009-5-29)

11、找出 25 年前雇的员工 
  
12、所有员工名字前加上 Dear ,并且名字首字母大写

13、找出姓名为 5 个字母的员工  
  
14、找出姓名中不带 R 这个字母的员工 

 

15、显示所有员工的姓名的第一个字

16、分组统计各部门下工资>500 的员工的平均工资、  
  
17、统计各部门下平均工资大于 500 的部门  
  
18、算出部门 30 中得到最多奖金的员工奖金 
  
19、算出部门 30 中得到最多奖金的员工姓名  

 
20
、算出每个职位的员工数和最低工资 

创建二张表
学生表和分数表

学生表字段:学号、姓名、年龄、奖学金、月实习工资、国家
分数表字段:学号、分数

1.要求二个表之间有主外键关系
2.查询出学生表中所有学生记录

3.查询出学生姓名是“张三”的学生的姓名、学号、奖学金,分数

4.查询出学生姓名是“李四”的学生一年能得多少钱

5.去重名查询出所有学生信息

6.查询出学生表中月实习工资在300到500之间的学生信息

7.查询出学生表中月实习工资是300,400,500,600的学生信息

8.查询出姓名为第三个字符为大写M的所有员工的姓名和工资和分数

9.查询出没有得到奖学金的同学的所有信息

10.查询出姓名是“张”开头的,且年龄>20的,有奖学金的学生,并且按升序排序

11.按国家查询,查询出总奖学金,要求只显示总奖学金>1000的信息,并且按降序排序

/*创建二张表
学生表和分数表
学生表字段:学号、姓名、年龄、奖学金、月实习工资、国家
分数表字段:学号、分数*/
create table stu--学生表
(
xh varchar2(8) not null,
xm varchar2(64) not null,
age integer,
jj float ,--奖学金
sal float ,--月实习工资
city varchar2(10)--国家
); create table soccer--分数表
(
xh varchar2(8) ,
fs number(2,3)
); --1.要求二个表之间有主外键关系
alter table stu add constraint pk_stu_xh primary key (xh);
alter table soccer add constraint fk_soccer_stu_xh foreign key (xh) references stu(xh); --2.查询出学生表中所有学生记录
select xh,xm,age,jj,sal,city from stu; --3.查询出学生姓名是"张三"的学生的姓名、学号、奖学金,分数
select xm,stu.xh,jj,fs from stu,soccer where stu.xh=soccer.xh and stu.xm='张三';
select xm,stu.xh,jj,fs from soccer inner join (select * from stu where xm='张三') stu on stu.xh=soccer.xh;
select a.*,fs from (select xm,xh,jj from stu where xm='张三') a left join soccer on a.xh=soccer.xh; --4.查询出学生姓名是“李四”的学生一年能得多少钱
select (sal*12 + nvl(jj,0)) as sum_money from stu where xm='李四' 5.去重名查询出所有学生信息
select distinct xm ,xh,age,jj,sal,city from stu; --6.查询出学生表中月实习工资在300到500之间的学生信息
select xh,xm,age,jj,sal,city from stu where sal between 300 and 500 ;
select xh,xm,age,jj,sal,city from stu where sal >= 300 and sal <= 500; --7.查询出学生表中月实习工资是300,400,500,600的学生信息
select xh,xm,age,jj,sal,city from stu where sal in (300,400,500,600);
select xh,xm,age,jj,sal,city from stu where sal = 300 or sal = 400 or sal = 500 or sal = 600; --8.查询出姓名为第三个字符为大写M的所有员工的姓名和工资和分数
select xm,sal,fs from stu,soccer where xm like '--M%' and stu.xh=soccer.xh; --9.查询出没有得到奖学金的同学的所有信息
select * from stu where jj is null; --10.查询出姓名是“张”开头的,且年龄>20的,有奖学金的学生,并且按升序排序
select * from stu where xm like '张%' and age>20 and jj is not null order by jj asc; --11.按国家查询,查询出总奖学金,要求只显示总奖学金>1000的信息,并且按降序排序
select city,sum(nvl(jj,0)) from stu group by city having sum(nvl(jj,0))>1000 order by sum(nvl(jj,0)) desc

Oracle sql语句练习的更多相关文章

  1. Oracle sql语句执行顺序

    sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...

  2. Oracle SQL语句追踪

    Oracle SQL语句追踪 1   SQL语句追踪 追踪SQL语句的执行过程需要在Oracle服务器端进行,Oracle服务器端会检测并记录访问进程所执行的所有SQL语句.下面使用的命令都是在命令行 ...

  3. Oracle SQL语句执行过程

    前言 QQ群讨论的时候有人遇到这样的问题:where子句中无法访问Oracle自定义的字段别名.这篇 博客就是就这一问题做一个探讨,并发散下思维,谈谈SQL语句的执行顺序问题. 问题呈现 直接给出SQ ...

  4. [转]关于oracle sql语句查询时表名和字段名要加双引号的问题

    oracle初学者一般会遇到这个问题.   用navicat可视化创建了表,可是就是不能查到!   后来发现②语句可以查询到 ①select * from user; 但是,我们如果给user加上双引 ...

  5. Oracle SQL语句执行步骤

    转自:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762345.html Oracle中SQL语句执行过程中,Oracle内部解析原理如下 ...

  6. oracle: sql语句报ora-01461/ora-00911错误

    oracle: sql语句报ora-01461/ora-00911错误 ora-00911:sql语句中可能含有特殊字符,或者sql语句中不能用";"分号结尾. sql语句报ora ...

  7. 简单的oracle sql语句练习

    简单的oracle sql语句练习 求每个部门的平均薪水 select deptno,avg(sal) from emp group by deptno 每个部门同一个职位的最大工资 select d ...

  8. Oracle sql语句中不支持boolean类型(decode&case)

    [转自] http://blog.csdn.net/t0nsha/article/details/7828538 Oracle sql语句中不支持boolean类型(decode&case) ...

  9. oracle管理优化必备语句以及oracle SQL语句性能调整

    本文转自http://www.dataguru.cn/article-3302-1.html oracle数据库管理优化必备语句: 1. SELECT T.START_TIME,T.USED_UBLK ...

  10. Oracle SQL语句性能优化方法大全

    Oracle SQL语句性能优化方法大全 下面列举一些工作中常常会碰到的Oracle的SQL语句优化方法: 1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的 ...

随机推荐

  1. 什么时候该用NoSQL?

    : 杂谈   NoSQL这两年越来越热,尤其是大型互联网公司非常热衷这门技术.根据笔者的经验,并不是任何场景,NoSQL都要优于关系型数据库.下面我们来具体聊聊,什么时候使用NoSQL比较给力: 1) ...

  2. Class对象即反射

    Class对象 当ClassLoader加载一个class文件到JVM的时候,会自动创建一个该类的Class对象,并且这个对象是唯一的,后续要创建这个类的任何实例,都会根据这个Class对象来创建.因 ...

  3. C#网络编程一:C#网络编程常用特性

    特性一:委托 委托是C#语言中特有的概念,相当于C/C++中的函数指针,与C/C++中函数指针的不同之处是:委托是面向对象的.类型安全的和保险的,是引用类型.因此,对委托的使用要 "先定义. ...

  4. mvc 项目下 webservice 程序无法运行

    错误描述: 可以出现调用HelloWorld的界面 点击调用按钮报无法找到该资源 错误分析: 把webservice当成controller了. 解决: global中 添加  routes.Igno ...

  5. MySQL 安装和启动服务,“本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”

    MySQL 安装和启动服务,以及遇到的问题 MySQL版本: mysql-5.7.13-winx64.zip (免安装,解压放到程序文件夹即可,比如 C:\Program Files\mysql-5. ...

  6. NPOI操作excel

    1.基本导出方法 private void ExportToExcel() { SaveFileDialog sdfExport = new SaveFileDialog(); sdfExport.F ...

  7. 枚举/遍历 一个数组NSArray/NSDictionary

    一,当枚举一个数组的时候: 1.使用 for (id object in array) 如果是顺序枚举 2.使用 for (id object in [arrary reverseObjectEnum ...

  8. Memento(备忘录)-对象行为型模式

    1.意图 在布破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以将对象恢复到原先保存的状态. 2.别名 Token 3.动机 为了允许用户取消不确定的操作或从错误中 ...

  9. Mediator(中介者)-对象行为型模式

    1.意图 用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 2.动机 通过将集体行为封装在一个单独的中介者对象中,中介者 ...

  10. Ruby Unit Test

    require 'test/unit' module Test::Unit::Assertions def assert_equal_unorder(exp, act, msg = nil) # ms ...