MySQL数据库-子查询-表联接(内/外)-的综合练习题

本文提供了一系列关于MySQL数据库操作的练习题,涵盖子查询、表联接等知识点。包括查询部门信息、员工薪酬对比、部门员工数量、平均薪资、课程成绩对比等实际问题,旨在帮助读者巩固和提升MySQL查询技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习一

CREATE TABLE dept(
deptno INT PRIMARY KEY, – 部门编号
dname VARCHAR(14),-- 部门名称
loc VARCHAR(13)-- 部门地点
);
CREATE TABLE emp(
empno INT NOT NULL PRIMARY KEY,-- 员工号
ename VARCHAR(10),-- 员工姓名
job VARCHAR(10),-- 职位
mgr INT, – 上级领导
hiredate DATETIME,-- 受雇日期
sal DOUBLE,-- 薪金
comm DOUBLE,-- 佣金
deptno INT,-- 所属部门
CONSTRAINT FOREIGN KEY(deptno) REFERENCES dept(deptno)
);
INSERT INTO dept VALUES
(10, ‘Accounting’, ‘New York’),
(20, ‘Research’, ‘Dallas’),
(30, ‘Sales’, ‘Chicago’),
(40, ‘Operations’, ‘Boston’),
(50, ‘Admin’, ‘Washing’);
INSERT INTO emp VALUES
(7369, ‘Smith’, ‘Clerk’,7902, ‘1980-12-17’,800,0,20),
(7499, ‘Allen’, ‘Salesman’,7698,‘1981-2-20’,1600,300,30),
(7844, ‘Turner’, ‘Salesman’,7499, ‘1981-9-8’,1500,0,30),
(7698, ‘Tom’, ‘Manager’,0, ‘1981-9-8’,6100,600,40),
(7876, ‘Adams’, ‘Clerk’,7900, ‘1987-5-23’,1100,0,20),
(7900, ‘James’, ‘Clerk’,7698, ‘1981-12-3’,2400,0,30),
(7902, ‘Ford’, ‘Analyst’,7698, ‘1981-12-3’,3000,NULL,20),
(7901, ‘Kik’, ‘Clerk’,7900, ‘1981-12-3’,1900,0,30);

– 1.列出至少有一个员工的所有部门。
SELECT DISTINCT dept.dname AS 部门名称
FROM dept JOIN emp
ON dept.deptno=emp.deptno;

– 2.列出薪金比“SMITH”多的所有员工。()
SELECT *
FROM emp
WHERE sal>(SELECT sal FROM emp WHERE ename=‘SMITH’);

– 3.列出所有员工的姓名及其直接上级的姓名。
SELECT yg.ename AS 员工名称,ld.ename AS 领导名称
FROM emp yg JOIN emp ld ON yg.mgr=ld.empno;

– 4.列出受雇日期早于其直接上级的所有员工。(同上,日期可直接拿来比较)
SELECT yg.ename AS 员工名称,yg.hiredate AS 员工受雇日期,ld.ename 领导名称,ld.hiredate AS 领导受雇日期
FROM emp yg JOIN emp ld ON yg.mgr=ld.empno
WHERE yg.hiredate<ld.hiredate;

– 5.列出所有工作为“CLERK”(办事员)的姓名及其部门名称。(域,注意())
SELE

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值