MySQL练习题(一)
时间:2022-06-26
本文章向大家介绍MySQL练习题(一),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
数据库创建
-- 创建员工信息表
CREATE TABLE `emp` (
`empno` varchar(10) NOT NULL,
`ename` varchar(10) DEFAULT NULL,
`job` varchar(10) DEFAULT NULL,
`mgr` varchar(10) DEFAULT NULL,
`sal` varchar(10) DEFAULT NULL,
`deptno` varchar(10) DEFAULT NULL,
PRIMARY KEY (`empno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建部门信息表
CREATE TABLE `dept` (
`deptno` varchar(10) NOT NULL,
`dname` varchar(10) DEFAULT NULL,
PRIMARY KEY (`deptno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
实际练习
-- 1.查询各部门中薪资最低和最高的数据,包括的子段有部门编号、部门名词、员工名称、最高薪资、最第薪资.
select b.deptno as '部门编号',dname as '部门名词',max(sal) as '最高薪资',min(sal) as '最低薪资' from emp a inner join dept b on a.deptno=b.deptno group by a.deptno;
+--------------+--------------+--------------+--------------+
| 部门编号 | 部门名词 | 最高薪资 | 最低薪资 |
+--------------+--------------+--------------+--------------+
| 1 | 销售部 | 2000 | 1000 |
| 2 | 事业部 | 800 | 600 |
| 3 | 技术部 | 1500 | 1000 |
+--------------+--------------+--------------+--------------+
3 rows in set (0.01 sec)
-- 2.查询出各部门中job为CLERK的最高薪资和最低薪资.
select deptno as '部门编号', max(sal) as '最高薪资', min(sal) as '最低薪资' from emp where job='CLERK' group by deptno;
+--------------+--------------+--------------+
| 部门编号 | 最高薪资 | 最低薪资 |
+--------------+--------------+--------------+
| 1 | 2000 | 1000 |
+--------------+--------------+--------------+
1 row in set (0.00 sec)
-- 3.查询出emp表中最低薪资小于2000的部门且job为clerk的部门编号、最低薪资和最高薪资.
select b.deptno as '部门号',max(sal) as '最高工资',min(sal) as '最低工资' from emp as b where job='derk' and (select min(sal) from emp as a where a.deptno=b.deptno)<2000 group by b.deptno;
Empty set (0.03 sec)
-- 4.查询出emp表中薪资小于2000的且job为clerk的部门编号、最低薪资和最高薪资.
select deptno as '部门编号', max(sal) as '最高薪资', min(sal) as '最低薪资' from emp where job='CLERK' and emp.sal< 2000 group by deptno;
+--------------+--------------+--------------+
| 部门编号 | 最高薪资 | 最低薪资 |
+--------------+--------------+--------------+
| 1 | 1000 | 1000 |
+--------------+--------------+--------------+
1 row in set (0.02 sec)
-- 5.查询出emp表中员工编号、员工名称、员工薪资并按照薪资由低到高、编号有高到低的顺序进行排序.
select deptno as '部门编号',ename as '员工名词',sal as '薪资' from emp order by deptno desc,sal asc;
+--------------+--------------+--------+
| 部门编号 | 员工名词 | 薪资 |
+--------------+--------------+--------+
| 3 | buddy | 1000 |
| 3 | canndy | 1500 |
| 2 | jenny | 600 |
| 2 | pretty | 800 |
| 1 | jacky | 1000 |
| 1 | tom | 2000 |
| 1 | biddy | 2000 |
+--------------+--------------+--------+
7 rows in set (0.00 sec)
-- 6.查询出emp中名字为buddy的所在部门编号以及该部门所在的员工,只查询部门编号与员工名词.
select a.deptno as '部门编号',a.ename as '员工名称' from emp as a where deptno=(select b.deptno as deptno from emp as b where b.ename = 'buddy');
* 需要注意的是在子查询中给表取别名的时候不能和前面的主查询的别名一致
+--------------+--------------+
| 部门编号 | 员工名称 |
+--------------+--------------+
| 3 | buddy |
| 3 | canndy |
+--------------+--------------+
2 rows in set (0.03 sec)
-- 7.查询emp中job为clerk的员工信息.
select a.deptno as '部门编号',a.dname as '部门名词', b.ename as '员工姓名', b.job as '员工内容' , b.sal as '员工薪资' from dept as a inner join emp b on b.job = 'CLERK' and a.deptno=b.deptno;
+--------------+--------------+--------------+--------------+--------------+
| 部门编号 | 部门名词 | 员工姓名 | 员工内容 | 员工薪资 |
+--------------+--------------+--------------+--------------+--------------+
| 1 | 销售部 | jacky | clerk | 1000 |
| 1 | 销售部 | tom | clerk | 2000 |
| 1 | 销售部 | biddy | clerk | 2000 |
+--------------+--------------+--------------+--------------+--------------+
3 rows in set (0.02 sec)
- JSP简单入门(1)
- mongodb取出json,利用python转成dataframe(dict-to-dataframe)
- JSP简单入门(2)
- JSP简单入门(3)
- 物化视图相关的性能改进 (r7笔记第58天)
- Maven 核心原理解析(1)
- LeetCode——Two Sum
- TensorFlow全新的数据读取方式:Dataset API入门教程
- 不经意发现的dba_objects和dba_tables中的细节(r7笔记第56天)
- LeetCode——Longest Substring Without Repeating Characters
- Python time模块详解(时间戳↔元组形式↔格式化形式三者转化)
- Maven 核心原理解析(2)
- Linux C 编程——互斥锁mutex
- python两个 list 获取交集,并集,差集的方法.
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解