基础知识
数据库管理系统(DataBase Management System,DBMS)
数据定义语言(Data Definition Language,DDL)
概念模型:E-R图
两个实体之间的关系:一对一,一对多,多对多
逻辑模型:有层次模型、网状模型、关系模型(以二维表的形式,MySQL就是一个关系型数据库)、面向对象模型
数据库的设计步骤:
- 需求分析
- 概念结构设计? E-R图
- 逻辑结构设计? 二维表
- 物理结构设计
- 数据库实施
- 数据库运行和维护
终极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;
|