紫大,数据库终极12题

基础知识

数据库管理系统(DataBase Management System,DBMS)

数据定义语言(Data Definition Language,DDL)

概念模型:E-R图

两个实体之间的关系:一对一,一对多,多对多

  • 实体用矩形表示
  • 属性用椭圆表示
  • 联系用菱形表示

逻辑模型:有层次模型、网状模型、关系模型(以二维表的形式,MySQL就是一个关系型数据库)、面向对象模型

数据库的设计步骤:

  1. 需求分析
  2. 概念结构设计  E-R图
  3. 逻辑结构设计  二维表
  4. 物理结构设计
  5. 数据库实施
  6. 数据库运行和维护


终极12题

1、取得每个部门最高薪水的人员名称

select ename from emp where sal in(select max(sal) from emp group by deptno);

2、哪些人的薪水在部门的平均薪水之上

select ename from emp a,(select avg(sal) avgs,deptno from emp group by deptno) b 
 where a.deptno=b.deptno and a.sal > avgs;

在子查询中找到每个部门的平均薪水,再比较

3、取得部门中(所有人的)平均的薪水等级,如下:

select a.deptno,grade from 
 salgrade,(select avg(sal) s,deptno from emp group by deptno) a
  where s between losal and hisal group by grade;


4、不准用组函数(Max),取得最高薪水(给出两种解决方案)

select sal from emp order by sal desc limit 1;
select e.sal from emp e where e.sal not in
    (select e2.sal from emp e1,emp e2 where e1.sal>e2.sal);

5、取得平均薪水最高的部门的部门编号(至少给出两种解决方案)

select deptno from (select avg(sal) s,deptno from emp group by deptno) a 
    where deptno=a.deptno order by s desc limit 1;
select deptno from emp group by deptno order by avg(sal) desc limit 1;

6、取得平均薪水最高的部门的部门名称

select dname from 
 (select e.deptno,avg(sal) s,dname from emp e,dept d where e.deptno=d.deptno group by e.deptno) t1
   order by s desc limit 1;

7、求平均薪水的等级最低的部门的部门名称

select dname from 
 salgrade,(select avg(sal) s,deptno from emp group by deptno) a,dept
  where s between losal and hisal group by grade
   order by grade  desc limit 1;

8、取得比普通员工(员工代码没有在mgr字段上出现的)的最高薪水还要高的领导人姓名

select t2.ename from 
(select max(sal) s from emp where empno not in(select mgr from emp))t1,
  (select ename,sal s from emp where empno in(select mgr from emp))t2
    where t2.s>t1.s group by t2.ename ;

 t1表找出普通员工的最高工资,t2是领导人虚表,判断:领导人的工资大于普通员工的最高工资

9、取得薪水最高的前五名员工

select ename from emp order by sal desc limit 0,5;

10、取得薪水最高的第六到第十名员工

select ename from emp order by sal desc limit 5,5;

11、取得最后入职的5名员工

select ename,hiredate from emp order by hiredate desc limit 0,5;

12、取得每个薪水等级有多少员工

select grade ,count(*) from emp,salgrade 
 where sal between losal and hisal group by grade;
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值