【MySQL】多表查询
2021/11/3 19:12:14
本文主要是介绍【MySQL】多表查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
【MySQL】
文章目录
- 【MySQL】
- 一、前期准备
- 1.1 导入数据库
- 1.2 查看数据库内容
- 二、多表查询
- 2.1 显示员工姓名、员工薪水以及所在的部门名称
- 2.2 显示部门编号为10的部门名称,员工姓名和薪水
- 2.3 显示各个员工的姓名,薪水和工资级别
实际开发中往往数据来自不同的表,所以需要多表查询。今天我们用一个简单的公司管理系统,有三张表 emp, dept, salgrade 来演示如何进行多表查询。
一、前期准备
1.1 导入数据库
MariaDB [(none)]> source scott_data.sql
数据库下载:scott_data.sql 提取码:vrps
数据库部分代码
DROP database IF EXISTS `scott`; CREATE database IF NOT EXISTS `scott` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE `scott`; DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `deptno` int(2) unsigned zerofill NOT NULL COMMENT '部门编号', `dname` varchar(14) DEFAULT NULL COMMENT '部门名称', `loc` varchar(13) DEFAULT NULL COMMENT '部门所在地点' ); DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `empno` int(6) unsigned zerofill NOT NULL COMMENT '员工编号', `ename` varchar(10) DEFAULT NULL COMMENT '员工姓名', `job` varchar(9) DEFAULT NULL COMMENT '员工职位', `mgr` int(4) unsigned zerofill DEFAULT NULL COMMENT '员工领导编号', `hiredate` datetime DEFAULT NULL COMMENT '入职时间', `sal` decimal(7,2) DEFAULT NULL COMMENT '薪水', `comm` decimal(7,2) DEFAULT NULL COMMENT '奖金', `deptno` int(2) unsigned zerofill DEFAULT NULL COMMENT '部门编号' ); DROP TABLE IF EXISTS `salgrade`; CREATE TABLE `salgrade` ( `grade` int(11) DEFAULT NULL COMMENT '薪水级别', `losal` int(11) DEFAULT NULL COMMENT '此等级最低薪水', `hisal` int(11) DEFAULT NULL COMMENT '此等级最高薪水' );
1.2 查看数据库内容
MariaDB [scott]> show tables; +-----------------+ | Tables_in_scott | +-----------------+ | dept | | emp | | salgrade | +-----------------+ 3 rows in set (0.00 sec)
可以看到该数据库有三张表dept、emp以及salgrade,它们的表结构是这样的。
MariaDB [scott]> desc dept; +--------+--------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+--------------------------+------+-----+---------+-------+ | deptno | int(2) unsigned zerofill | NO | | NULL | | | dname | varchar(14) | YES | | NULL | | | loc | varchar(13) | YES | | NULL | | +--------+--------------------------+------+-----+---------+-------+ 3 rows in set (0.01 sec)
MariaDB [scott]> desc emp; +----------+--------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------------------+------+-----+---------+-------+ | empno | int(6) unsigned zerofill | NO | | NULL | | | ename | varchar(10) | YES | | NULL | | | job | varchar(9) | YES | | NULL | | | mgr | int(4) unsigned zerofill | YES | | NULL | | | hiredate | datetime | YES | | NULL | | | sal | decimal(7,2) | YES | | NULL | | | comm | decimal(7,2) | YES | | NULL | | | deptno | int(2) unsigned zerofill | YES | | NULL | | +----------+--------------------------+------+-----+---------+-------+ 8 rows in set (0.00 sec)
MariaDB [scott]> desc salgrade; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | grade | int(11) | YES | | NULL | | | losal | int(11) | YES | | NULL | | | hisal | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
三张表的结构如下图所示。
二、多表查询
2.1 显示员工姓名、员工薪水以及所在的部门名称
观察可知员工姓名和薪水是来自emp表,部门名称是来自dept表,因此单表查询对于实际开发是远远不够的,此时就需要用到多表查询。
select * from emp;
select * from dept;
select * from emp,dept;
那么显示员工姓名、员工薪水以及所在的部门名称,只需要让emp.deptno=dept.deptno
select emp.ename, emp.sal, dept.dname from emp,dept where emp.deptno=dept.deptno;
2.2 显示部门编号为10的部门名称,员工姓名和薪水
select dept.dname, emp.ename, emp.sal from emp,dept where emp.deptno=dept.deptno and dept.deptno=10;
2.3 显示各个员工的姓名,薪水和工资级别
select ename,sal,grade from emp,salgrade where emp.sal between losal and hisal;
这篇关于【MySQL】多表查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19Mysql安装教程:新手必看的详细安装指南
- 2024-11-18Mysql安装入门:新手必读指南
- 2024-11-18MySQL事务MVCC原理入门详解
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南