mysql单表查询&&多表查询(职员表14+9)

dept(deptno,dname,loc)
emp(empno,ename,job,mgr,hiredate,sal,COMM,deptno)
salgrade(grade,losal,hisal)
stu(sid,sname,age,gander,province,tuition)

单表查询题目
====================================================
dept(deptno,dname,loc)
emp(empno,ename,job,mgr,hiredate,sal,COMM,deptno)
salgrade(grade,losal,hisal)
stu(sid,sname,age,gander,province,tuition)
1. 查询出部门编号为30的所有员工
SELECT
stu.sname
FROM
stu
WHERE
stu.sid = 50

2. 所有销售员的姓名、编号和部门编号。
SELECT
emp.empno,
emp.ename,
emp.deptno
FROM
emp
WHERE
emp.job = ‘销售员‘

3. 找出奖金高于工资的员工。
SELECT
emp.ename
FROM
emp
WHERE
emp.COMM > emp.sal

4. 找出奖金高于工资60%的员工。
SELECT
emp.ename
FROM
emp
WHERE
emp.COMM > emp.sal*0.6
5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
SELECT
emp.empno,
emp.ename,
emp.job,
emp.hiredate,
emp.sal,
emp.deptno
FROM
emp
WHERE
(emp.job = ‘经理‘ AND
emp.deptno = 20) OR
(emp.job = ‘销售员‘ AND
emp.deptno = 10)

6. 找出部门编号为10中所有经理,部门编号为20中
所有销售员,还有即不是经理又不是销售员但其
工资大或等于20000的所有员工详细资料。
SELECT
emp.empno,
emp.ename,
emp.job,
emp.hiredate,
emp.sal,
emp.deptno
FROM
emp
WHERE
(emp.job = ‘经理‘ AND
emp.deptno = 20) OR
(emp.job = ‘销售员‘ AND
emp.deptno = 10)OR(emp.job != ‘经理‘ AND emp.job != ‘销售员‘ AND
emp.sal>=20000)

7. 无奖金或奖金低于1000的员工。
SELECT
emp.empno,
emp.ename,
emp.job
FROM emp
WHERE
emp.COMM < 1000 OR
emp.COMM IS NULL
8. 查询名字由三个字组成的员工。
SELECT emp.ename
FROM emp
WHERE emp.ename LIKE ‘___‘
9.查询2000年入职的员工。
SELECT emp.ename
FROM emp
WHERE emp.hiredate LIKE ‘2000-__-__‘
#‘2000%‘
10. 查询所有员工详细信息,用编号升序排序
SELECT
emp.empno,
emp.ename,
emp.job,
emp.mgr,
emp.hiredate,
emp.sal,
emp.COMM,
emp.deptno
FROM
emp
ORDER BY
emp.empno ASC
11. 查询所有员工详细信息,用工资降序排序,如果工资相同
使用入职日期升序排序
SELECT
emp.empno,
emp.ename,
emp.job,
emp.mgr,
emp.hiredate,
emp.sal,
emp.COMM,
emp.deptno
FROM
emp
ORDER BY
emp.sal DESC,
emp.hiredate ASC

12. 查询每个部门的平均工资
SELECT
emp.deptno,AVG(sal)
FROM
emp
GROUP BY
emp.deptno

13. 查询每个部门的雇员数量。
 SELECT
emp.deptno,COUNT(1)
FROM
emp
GROUP BY
emp.deptno
14. 查询每种工作的最高工资、最低工资、人数
SELECT
emp.job,MAX(sal),MIN(sal),COUNT(1) AS 人数
FROM
emp
GROUP BY
emp.job

多表查询题目
====================================================
dept(deptno,dname,loc)
emp(empno,ename,job,mgr,hiredate,sal,COMM,deptno)
salgrade(grade,losal,hisal)
stu(sid,sname,age,gander,province,tuition)

1. 查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。
SELECT dept.deptno,dept.dname,dept.loc,COUNT(emp.deptno) AS 部门人数
FROM dept,emp
WHERE dept.deptno=emp.deptno
GROUP BY dept.deptno

2. 列出所有员工的姓名及其直接上级的姓名。
SELECT e.ename, IFNULL(m.ename, ‘BOSS‘) AS lead
FROM emp e LEFT JOIN emp m
ON e.mgr=m.empno;
3. 列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。
SELECT
e.empno,
e.ename,
d.dname
FROM
emp AS e
INNER JOIN emp AS m ON e.mgr = m.empno
LEFT JOIN dept AS d ON e.deptno = d.deptno
WHERE
e.hiredate < m.hiredate
4. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
SELECT e.*, d.dname
FROM emp e RIGHT JOIN dept d
ON e.deptno=d.deptno;
5. 列出最低薪金大于15000的各种工作及从事此工作的员工人数。
SELECT e.job,COUNT(*) AS 员工人数
FROM
emp e
GROUP BY job
HAVING MIN(sal)>15000

6. 列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。
SELECT e.ename
FROM emp e
WHERE
(SELECT e.deptno
FROM dept
WHERE dname=‘销售部‘        )
7. 列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级。
SELECT e.*,d.dname,s.grade
FROM emp e
  NATURAL LEFT JOIN dept d
  LEFT JOIN emp m ON m.empno=e.mgr
  LEFT JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal
WHERE e.sal > (SELECT AVG(sal) FROM emp)

8.列出与庞统从事相同工作的所有员工及部门名称。
SELECT e.*, d.dname
FROM emp e, dept d
WHERE e.deptno=d.deptno AND e.job=(SELECT job FROM emp WHERE ename=‘庞统‘);

9.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。
SELECT e.ename, e.sal, d.dname
FROM emp e, dept d
WHERE e.deptno=d.deptno AND sal > ALL(SELECT sal FROM emp WHERE deptno=30)
 
时间: 2024-12-27 05:09:36

mysql单表查询&&多表查询(职员表14+9)的相关文章

mysql单表多表查询

单表查询语法: select 字段1,字段2... from 表名where 条 件group by fieldhaving 筛选order by 字段limit 限制条数 关键字的优先级:from > where > group by > having > select > distinct > order by > limit; 1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一条条记录进行分组group by,

0x06 MySQL 单表查询

一 单表查询语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键字执行优先级(重点) 重点中的重点:关键字的执行优先级 1)from 2)where 3)group by 4)having 5)select 6)distinct 7)order by 8)limit 1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一

mysql 单表查询

目录 单表查询 准备数据 简单查询 比较运算符 范围筛选 between 多选 in 模糊查询 like 逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not 身份运算 - 关于null is null /is not null 正则匹配 regexp 分组 group by 聚合 (把很多行的同一个字段进行一些统计,最终的到一个结果) 分组+聚合 HAVING过滤 单表查询 准备数据 只是把查询结果按照自己想要的方式返回,不对数据做修改 #准备表和记录 company.emplo

MySQL单表的CRUD及多表查询

数据库表的增删改查操作: 增.删.改 查: 单表查询 简单查询.where约束.group by分组.聚合查询.having过滤.order by排序.limit限制.正则匹配 多表查询 连表查询:交叉查询.>內连查询.左外连接查询.右外连接查询.全外链接查询.连接结果筛选查询 子查询 :带关键字in的子查询.带比较运算符的子查询.带关键字exists的布尔判断结果查询 表记录增删改总结: MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包

133 MySQL单表查询

目录 一.单表查询 1.1 语法 1.2 关键字优先级 1.3 注意(重点) 1.4 测试一个单表的distinct去重 二.表记录查询测试 2.1常用函数 2.2 数据准备 2.3 表记录测试 2.3.1 where条件查询 2.3.2 group by 分组查询 2.3.3 having 和 where 2.3.4 排序 order by 2.3.5 limit限制 一.单表查询 1.1 语法 每次查询出来的一些记录,他们都是一张表,只不过这张表是存在内存中的 查询记录如果想要二次利用的话,

Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

Mysql单表和多表查询基础

使用关键字:select select:按需要,按标准,按条件在对应关系上挑选对就字段或对就行的工具或指令. 查询语句的3种类型:1.简单查询:2.多表查询:3.子查询(嵌套查询) select语句和用法: SELECT * FROM tb_name;  '*'表示所有字段. SELECT field1,field2,... FROM tb_name;查询指定的字段(投影方式) SELECT [DISDINCT]* FROM tb_name WHERE qualification;通过WHERE

04 数据库入门学习-单表查询、多表查询、子查询

1.复制表 #创建了一张测试表 mysql>create table test (id int primary key auto_increment,name char(10)); #显示原表结构 mysql> desc test; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+---

mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表

之前开发的一个监控系统,数据库的日志表是单表,虽然现在数据还不大并且做了查询sql优化,不过以后数据库的日志表数据肯定会越来越庞大,将会导致查询缓慢,所以把日志表改成分表,日志表可以按时间做水平分表,我是按月分的,每个月一张表,这时候的问题是 数据库有多张同样的分表如何根据条件查询? 在进行分页的时候如何计算总记录数?如何查询出所有分表? 每个月的新表是如何创建?系统如何自动创建? 不确定哪个分表的情况如何查询某一条详细记录? 分表查询分表查询可以用union或者union all进行查询uni

MySQL多表查询之外键、表连接、子查询、索引

一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两张表:部门表(dept).员工表(emp).Id=Dept_id,而Dept_id就是员工表中的外键:因为员工表中的员工需要知道自己属于哪个部门,就可以通过外键Dep