zoukankan      html  css  js  c++  java
  • 数据库学习7-23

    oracle

    第三章

    练习1

     1.查询职位为SALESMAN的员工编号、职位、入职日期。

     select empno,job,hiredate  from emp  where job = 'SALESMAN';

     2.查询1985年12月31日之前入职的员工姓名及入职日期。

     select ename,hiredate  from emp  where hiredate = '31-12月-85';

     3.查询部门编号不在10部门的员工姓名、部门编号。

     select ename,deptno  from emp  where not deptno =10;

    练习2

     1.查询入职日期在82年至85年的员工姓名,入职日期。

     select ename,hiredate  from emp  where hiredate in ('01-1月-82','31-12月-85');  

    2.查询月薪在3000到5000的员工姓名,月薪。

     select ename,sal  from emp  where sal in (3000,5000);

     3.查询部门编号为10或者20的员工姓名,部门编号。

     select ename,deptno  from emp  where deptno in (10,20);  --where deptno =10 or deptno = 20;

     4.查询经理编号为7902, 7566, 7788的员工姓名,经理编号。

     select ename,mgr  from emp  where mgr in (7902,7566,7788);  

    5.查询员工姓名以W开头的员工姓名。

     select ename  from emp  where ename like 'W%';

     6.查询员工姓名倒数第2个字符为T的员工姓名。

     select ename  from emp  where ename like '%T_';

     7.查询奖金为空的员工姓名,奖金。

     select ename,comm  from emp  where comm is null;

    练习3

     1.查询工资超过2000并且职位是MANAGER,或者职位是SALESMAN的员工姓名、职位、工资

     select ename,job,sal  from emp  where (sal>2000 and job ='MANAGER') or job = 'SALESMAN';

     2.查询工资超过2000并且职位是 MANAGER或SALESMAN的员工姓名、职位、工资。

     select ename,job,sal  from emp  where sal>2000 and (job ='MANAGER' and job ='SALSMAN');  

    3.查询部门在10或者20,并且工资在3000到5000之间的员工姓名、部门、工资。

     select ename,deptno,sal  from emp  where deptno in (10,20) and sal in (3000,5000);  

    4.查询入职日期在81年,并且职位不是SALES开头的员工姓名、入职日期、职位。

     select ename,hiredate,job  from emp  where hiredate in ('01-1月-81','31-12月-81') and job not like 'SALES%';  

    5.查询职位为SALESMAN或MANAGER,部门编号为10或者20,姓名包含A的员工姓名、职位、部门编号。

     select ename,job,deptno  from emp  where job = 'SALESMAN' or job='MANAGER' and deptno in(10,20) and ename like '%A%';

    练习4

     1.查询部门在20或30的员工姓名,部门编号,并按照工资升序排序。

     select ename,deptno  from emp  where deptno in(10,20)  order by sal;

     2.查询工资在2000-3000之间,部门不在10号的员工姓名,部门编号,工资,并按照部门升序,工资降序排序。

     select ename,deptno,sal  from emp  where sal in(2000,3000) and not deptno =10  order by deptno,sal desc;

     3.查询入职日期在82年至83年之间,职位以SALES或者MAN开头的员工姓名,入职日期,职位,并按照入职日期降序排。

     select ename,hiredate,job  from emp  where hiredate in('01-1月-82','31-12月-83') and (job like 'SALES%'or job like 'MAN%')  order by hiredate desc;

    课后作业 [必做题]

    1.查询入职时间在1982-7-9之后,并且不从事SALESMAN工作的员工姓名、入职时间、职位。

     select ename,hiredate,job  from emp  where hiredate>'09=7月-82' and not job ='SALESMAN';

    2.查询员工姓名的第三个字母是a的员工姓名。

     select ename  from emp  where ename like '__a%';

    3.查询除了10、20号部门以外的员工姓名、部门编号。

     select ename,deptno  from emp  where  not deptno in (10,20);

    4.查询部门号为30号员工的信息,先按工资降序排序,再按姓名升序排序。

     select *  from emp  where deptno =30  order by sal desc,ename;

    5.查询没有上级管理的员工(经理号为空)的员工姓名、上级编号。

     select ename,mgr  from emp  where mgr is null;

    6.查询工资大于等于4500并且部门为50或者60的员工的姓名工资、部门编号。

     select ename,sal,deptno  from emp  where sal>=4500 and deptno in (50,60);

    第五章

    练习1

     1.写一个查询,显示所有员工姓名,部门编号,部门名称。

     select ename,emp.deptno,dname    from emp,dept    where emp.deptno=dept.deptno;

     2.写一个查询,显示所有工作在CHICAGO并且奖金不为空的员工姓名,工作地点,奖金

     select ename,loc,comm    from emp,dept    where emp.deptno = dept.deptno and (loc = 'CHICAGO' )and not ( comm  is null);

     3.写一个查询,显示所有姓名中含有A字符的员工姓名,工作地点  

    select ename,loc  from emp,dept  where emp.deptno = dept.deptno and ename like '%A%';

    练习2  

    1.查询每个员工的编号,姓名,工资,工资等级,所在工作城市,按照工资等级进行升序排序。

     select empno,ename,sal,grade,loc  from emp,dept,salgrade  where emp.deptno = dept.deptno and emp.sal between salgrade.losal and salgrade.hisal  order by grade;

    练习3

     1. 查询所有工作在NEW YORK和CHICAGO的员工姓名,员工编号,以及他们的经理姓名,经理编号  

    select a.ename,a.empno,b.ename,b.empno  from emp a,emp b,dept  where a.mgr=b.empno and loc in('NEWYORK','CHICAGO');

     2.第上一题的基础上,添加没有经理的员工King,并按照员工编号排序  

    select a.ename,a.empno,b.ename,b.empno   from emp a,emp b    where a.mgr=b.empno(+)    order by a.empno;

    练习4

     使用SQL-99写法,完成如下练习

     1.创建一个员工表和部门表的交叉连接。

     select * from emp CROSS join dept;

     2.使用自然连接,显示入职日期在80年5月1日之后的员工姓名,部门名称,入职日期

     select ename,dname,hiredate from emp NATURAL join dept   where  hiredate >'01-5月-80';  

    3.使用USING子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点

     select ename,dname,loc from emp join dept  using(deptno) where loc='CHICAGO';

     4.使用ON子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点,薪资等级

     select ename,dname,loc,grade from emp  join dept on emp.deptno=dept.deptno   join salgrade on sal between losal and hisal and loc='CHICAGO';

     5.使用左连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。

     select a.ename ,b.ename  from emp a left outer join emp b  on a.mgr = b.empno;       

     6.使用右连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。

     select a.ename,b.ename  from emp a right outer join emp b  on a.empno=b.mgr;

    课后作业

     1.显示员工SMITH的姓名,部门名称,直接上级名称

     select a.ename,a.deptno,b.ename  from emp a,emp b  where a.mgr=b.empno and a.ename ='SMITH';  

     2.显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。

     select ename,dname,sal,grade  from emp,dept,salgrade  where emp.deptno=dept.deptno and sal between losal and hisal and grade>4;

     3.显示员工KING和FORD管理的员工姓名及其经理姓名。

     select a.ename,b.ename,c.ename  from emp a,emp b,emp c  where (a.ename='KING'or a.ename='FORD')  and (a.empno=b.mgr) and (a.mgr=c.empno(+));

     4.显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加时间比经理早。

     select a.ename,a.hiredate,b.ename,b.hiredate  from emp a,emp b  where a.mgr=b.empno and a.hiredate<b.hiredate;

    mysql

    第六章

    练习1

    1.写一个查询,显示所有员工姓名,部门编号,部门名称。

     select ename,emp.deptno,dname  from emp,dept  where emp.deptno=dept.deptno;

    2.写一个查询,显示所有工作在CHICAGO并且奖金不为空的员工姓名,工作地点,奖金

     select ename,loc,comm  from emp,dept  where emp.deptno=dept.deptno and loc='CHICAGO' and comm is null;

    3.写一个查询,显示所有姓名中含有A字符的员工姓名,工作地点。

     select ename,loc  from emp,dept  where emp.deptno= dept.deptno and ename like '%A%';

    练习2

    1.查询每个员工的编号,姓名,工资,工资等级,所在工作城市,按照工资等级进行升序排序。  

    select empno,ename,sal,grade,loc  from emp,dept,salgrade  where emp.deptno=dept.deptno and sal between losal and hisal  order by grade;

    练习3

    1.查询所有工作在NEW YORK和CHICAGO的员工姓名,员工编号,以及他们的经理姓名,经理编号。

     select a.ename,a.empno,b.ename,b.empno  from emp a,emp b,dept  where (loc ='NEW YORK' or loc ='CHICAGO') and (a.deptno=dept.deptno) and a.mgr=b.empno ;

    练习4

    1.使用SQL-99写法,完成如下练习 1.创建一个员工表和部门表的交叉连接。

     select * from emp CROSS join dept;

    2.使用自然连接,显示入职日期在80年5月1日之后的员工姓名,部门名称,入职日期

     select emp.ename,dept.dname,emp.hiredate  from emp NATURNAL join dept  where emp.deptno=dept.deptno and emp.hiredate>'1980-5-1';

    3.使用USING子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点

     select ename,dname,loc  from emp join dept  using(deptno) where loc='CHICAGO';

    4.使用ON子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点,薪资等级

     select ename ,dname,loc,grade  from emp join dept on emp.deptno=dept.deptno  join salgrade on sal between losal and hisal and loc='CHICAGO';

    5.使用左连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。

     select a.ename,b.ename  from emp a left outer join emp b  on a.mgr=b.empno;

    6.使用右连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。

     select a.ename,b.ename  from emp a right outer join emp b  on a.empno= b.mgr;

    课后作业

    1.显示员工SMITH的姓名,部门名称,直接上级名称

     select a.ename,dname,b.ename  from emp a,emp b,dept  where a.deptno=dept.deptno and a.mgr=b.empno and a.ename = 'SMITH';

    2.显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。

     select ename,dname,sal,grade  from emp,dept,salgrade  where emp.deptno=dept.deptno and sal between losal and hisal and grade>4;

     3.显示员工KING和FORD管理的员工姓名及其经理姓名。

    select a.ename,b.ename,c.ename from emp a  join emp b on (b.empno=a.mgr) left outer join emp c on  b.mgr=c.empno where b.ename ='KING' or a.ename= 'FORD';

    4.显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加时间比经理早。

     select a.ename,a.hiredate,b.ename,b.hiredate  from emp a,emp b  on a.mgr=b.empno and a.hiredate<b.hiredate;

  • 相关阅读:
    Sqoop的导入及可能遇到的问题
    Docker搭建MongoDB集群(副本分片)
    微信小程序框架部署:mpvue+typescript
    关系型数据库与非关系型数据库
    PWA 学习笔记(五)
    PWA 学习笔记(四)
    PWA 学习笔记(三)
    PWA学习笔记(二)
    PWA 学习笔记(一)
    部分设计模式对比分析
  • 原文地址:https://www.cnblogs.com/hole/p/11234388.html
Copyright © 2011-2022 走看看