mysql练习sql脚本

mysql练习sql脚本

先创建数据库,库名为db10,准备两个表:部门表dept 和员工表emp

create database db10; – 创建db10数据库
use db10; – 切换到db10数据库
create table dept( – 创建部门表
deptno int primary key, – 部门编号
deptname varchar(50), – 部门名称
loc varchar(50) – 部门位置
);
create table emp( – 创建员工表
empno int primary key, – 员工编号
empname varchar(50), – 员工姓名
job varchar(50), – 职位
mgr int, – 直属上级
hiredate date, – 受雇日期
sal int, – 薪资
comm int, – 奖金
deptno int, – 所在部门编号
foreign key(deptno) references dept(deptno)
);


– Records of dept 部门表数据


INSERT INTO dept VALUES (‘10’, ‘会计部’, ‘北京’);
INSERT INTO dept VALUES (‘20’, ‘调查部’, ‘杭州’);
INSERT INTO dept VALUES (‘30’, ‘销售部’, ‘上海’);
INSERT INTO dept VALUES (‘40’, ‘营销部’, ‘深圳’);


– Records of emp 员工表数据


INSERT INTO emp VALUES (‘7369’, ‘张无忌’, ‘办事员’, ‘7902’, ‘1980-12-17’, ‘800’, null, ‘20’);
INSERT INTO emp VALUES (‘7499’, ‘曹操’, ‘推销员’, ‘7698’, ‘1981-02-20’, ‘1600’, ‘300’, ‘30’);
INSERT INTO emp VALUES (‘7521’, ‘杨志’, ‘推销员’, ‘7698’, ‘1981-02-22’, ‘1250’, ‘500’, ‘30’);
INSERT INTO emp VALUES (‘7566’, ‘朱元璋’, ‘经理’, ‘7839’, ‘1981-04-02’, ‘2975’, null, ‘20’);
INSERT INTO emp VALUES (‘7654’, ‘殷天正’, ‘推销员’, ‘7698’, ‘1981-09-28’, ‘1250’, ‘1400’, ‘30’);
INSERT INTO emp VALUES (‘7698’, ‘张三丰’, ‘经理’, ‘7839’, ‘1981-05-01’, ‘2850’, null, ‘30’);
INSERT INTO emp VALUES (‘7782’, ‘关羽’, ‘经理’, ‘7839’, ‘1981-06-09’, ‘2450’, null, ‘10’);
INSERT INTO emp VALUES (‘7788’, ‘宋江’, ‘分析员’, ‘7566’, ‘1987-04-19’, ‘3000’, null, ‘20’);
INSERT INTO emp VALUES (‘7839’, ‘韩少云’, ‘董事长’, null, ‘1981-11-17’, ‘5000’, null, ‘10’);
INSERT INTO emp VALUES (‘7844’, ‘孙二娘’, ‘推销员’, ‘7698’, ‘1981-09-08’, ‘1500’, ‘0’, ‘30’);
INSERT INTO emp VALUES (‘7876’, ‘张飞’, ‘办事员’, ‘7788’, ‘1987-05-23’, ‘1100’, null, ‘20’);
INSERT INTO emp VALUES (‘7900’, ‘赵云’, ‘办事员’, ‘7698’, ‘1981-12-03’, ‘950’, null, ‘30’);
INSERT INTO emp VALUES (‘7902’, ‘诸葛亮’, ‘分析员’, ‘7566’, ‘1981-12-03’, ‘3000’, null, ‘20’);
INSERT INTO emp VALUES (‘7934’, ‘夏侯惇’, ‘办事员’, ‘7782’, ‘1982-01-23’, ‘1300’, null, ‘10’);

练习题目:

– 1.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

– 2.列出薪资比关羽高的所有员工。

– 3.列出所有员工的姓名及其直接上级的姓名。

– 4.列出最低薪资大于1500的各种职位及从事此职位的员工人数。

– 5.列出在销售部职位的员工的姓名,假定不知道销售部的部门编号。

– 6.列出与曹操从事相同职位的所有员工及部门名称。

– 7.列出薪资高于在销售部(已知部门编号为30)就职的所有员工的薪资的员工姓名和薪资、部门名称。

– 8.列出在每个部门职位的员工数量、平均工资。

– 9.查出至少有一个员工的部门。显示部门人数、部门编号、部门名称、部门位置。

– 10.列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。

– 11.列出所有职员的姓名及其部门名称,部门的人数。

–参考答案:
1.select deptname,emp.* from dept left join emp on dept.deptno=emp.deptno;
2.select * from emp where sal>2450;(关羽的工资是2450)
3. select a.empname 员工姓名,b.empname 上级姓名 from emp a,emp b where a.mgr=b.empno;
4. select job,min(sal) 最低工资,count() 员工人数 from emp group by job having min(sal)>1500;
5. select empname from emp,dept where deptname=‘销售部’;
6. select e.empname,p.deptname from emp e,dept p where e.job=‘推销员’ and e.deptno=p.deptno;
7. select e.empname,e.sal,d.deptname from emp e,dept d where e.deptno=d.deptno
-> and e.sal>
-> (select max(sal) from emp where deptno=30);
8. select job,count(
),avg(sal) from emp group by job;
9. select count(e.deptno),d.deptno,d.deptname,d.loc
from emp e,dept d
where e.deptno=d.deptno
group by e.deptno;
10. select e.empno as 编号,e.empname as 姓名 ,d.deptname as 部门名称 from emp e,dept d,emp a
where e.deptno=d.deptno and a.empno=e.mgr and e.hiredate<a.hiredate;
11.select e.deptno,e.empname,d.deptname from emp e,dept d where e.deptno=d.deptno;
12.select count(*),job from emp e group by e.deptno;

猜你喜欢

转载自blog.csdn.net/weixin_49307896/article/details/108780504