【mysql】多表查询、左外连接、内连接、练习题

多表查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBdzXkoQ-1659581225088)(C:\Users\L00589~1\AppData\Local\Temp\1659337934641.png)]

左外连接&右外连接

-- 查询emp表所有数据和对应的部门信息
select * from emp left join dept on emp.dep_id = dept.did;-- 右外连接
-- 查询 dept 表所有数据和对应的员工信息select * from emp right join dept on emp.dep_id = dept.did;

内连接

select * from emp where salary > (select salary from emp where name = '猪八戒')-- 多行单列子查询
-- 查询 '财务部' 和 '市场部' 所有员工的信息
select * from emp where dep_id in (select did from dept where dname = '财务部' or dname = '市场部');-- 查询入职日期是 '2011-11-11' 之后的员工信息和部门信息
select * from (select * from emp where join_date > '2011-11-11') t1, dept where t1.dep_id = dept.did;

查询练习

DROP TABLE
IFEXISTS emp;
DROP TABLE
IFEXISTS dept;
DROP TABLE
IFEXISTS job;
DROP TABLE
IFEXISTS salarygrade;-- 部门表
CREATE TABLE dept ( id INT PRIMARY KEY, -- 部门iddname VARCHAR ( 50 ), -- 部门名称loc VARCHAR ( 50 ) -- 部门所在地
) -- 职位表, 职务名称, 职务描述
CREATE TABLE job ( id INT PRIMARY KEY, jname VARCHAR ( 20 ), description VARCHAR ( 50 ) );-- 员工表
CREATE TABLE emp (id INT PRIMARY KEY,-- 员工 idename VARCHAR ( 50 ),-- 员工姓名job_id INT,-- 职务 idmgr INT,-- 上级领导joindate DATE,-- 入职日期salary DECIMAL ( 7, 2 ),-- 工资bonus DECIMAL ( 7, 2 ),-- 奖金dept_id INT,-- 所在部门编号CONSTRAINT emp_jobid_ref_job_id_fk FOREIGN KEY ( job_id ) REFERENCES job ( id ),CONSTRAINT emp_deptid_ref_dept_id_fk FOREIGN KEY ( dept_id ) REFERENCES dept ( id ) 
);-- 工资等级表
CREATE TABLE salarygrade ( grade INT PRIMARY KEY, -- 级别losalary INT, -- 最低工资hisalary INT -- 最高工资
);-- 添加4个部门
INSERT INTO dept ( id, dname, loc )
VALUES( 10, '教研部', '北京' ),( 20, '学工部', '上海' ),( 30, '销售部', '广州' ),( 40, '财务部', '深圳' );-- 添加4个职务
INSERT INTO job ( id, jname, description )
VALUES( 1, '董事长', '管理整个公司,接单' ),( 2, '经理', '管理部门员工' ),( 3, '销售员', '向客人推销产品' ),( 4, '文员', '使用办公软件' );-- 添加员工
INSERT INTO emp ( id, ename, job_id, mgr, joindate, salary, bonus, dept_id )
VALUES( 1001, '孙悟空', 4, 1004, '2000-12-17', '8000.0', NULL, 20 ),( 1002, '卢俊义', 3, 1006, '2001-02-20', '16000.00', '3000.00', 30 ),( 1003, '林冲', 3, 1006, '2001-02-22', '12500.00', '5000.00', 30 ),( 1004, '唐僧', 2, 1009, '2001-04-02', '29750.00', '5000.00', 30 ),( 1005, '李逵', 4, 1006, '2001-09-28', '12500.00', '14000.00', 30 ),( 1006, '宋江', 2, 1009, '2001-05-01', '28500.00', NULL, 30 ),( 1007, '刘备', 2, 1009, '2001-09-01', '24500.00', NULL, 10 ),( 1008, '猪八戒', 4, 1004, '2007-04-19', '30000.00', NULL, 20 ),( 1009, '罗贯中', 1, NULL, '2001-11-17', '50000.00', NULL, 10 ),( 1010, '吴用', 3, 1006, '2001-09-08', '15000.00', '0.00', 30 ),( 1011, '沙僧', 4, 1004, '2007-05-23', '11000.00', NULL, 20 ),( 1012, '李逵', 4, 1006, '2001-12-03', '9500.00', NULL, 30 ),( 1013, '小白龙', 4, 1004, '2001-12-03', '30000.00', NULL, 20 ),( 1014, '关羽', 4, 1007, '2002-01-23', '13000.00', NULL, 10 );-- 添加5个工资等级
INSERT INTO salarygrade ( grade, losalary, hisalary )
VALUES( 1, 7000, 12000 ),( 2, 12010, 14000 ),( 3, 14010, 20000 ),( 4, 20010, 30000 ),( 5, 30010, 99990 );-- 1、查询所有员工信息,查询员工编号,员工姓名,工资,职务名称,职务描述
SELECTemp.id,emp.ename,emp.salary,job.jname,job.description
FROMemp,job 
WHEREemp.job_id = job.id
ORDER BY(emp.id);-- 2、查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置
SELECTemp.id,emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc
FROM emp,job,dept
WHERE (emp.job_id = job.id AND emp.dept_id = dept.id)
ORDER BY (emp.id);-- 3、查询员工姓名,工资,工资等级
SELECT emp.ename,emp.salary,t2.grade
FROMemp, salarygrade t2
WHERE emp.salary >= t2.losalary AND emp.salary <= t2.hisalary;-- 4、查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级
SELECT emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc,t3.grade
FROMemp
INNER JOIN job ON emp.job_id = job.id
INNER JOIN dept ON emp.dept_id = dept.id
INNER JOIN salarygrade t3 ON emp.salary BETWEEN t3.losalary AND t3.hisalary;-- 5、查询出部门编号、部门名称、部门位置、部门人数
SELECTdept.id,dept.dname,dept.loc,count(*) count
FROM emp
INNER JOIN dept ON emp.dept_id = dept.id
GROUP BY(dept_id);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

noi2018

day0 笔试没啥问题&#xff0c;基本都是100 day1 时间有点紧&#xff0c;念了2h题目&#xff0c;能写80848&#xff0c;第一题不会可持久化所以只能暴力。第二题感觉没第三个好做。第三题sa乱搞&#xff0c;随机串只hash长度小于20的。 最后几分钟才改过了所有小样例&#xff0…

Python自建collections模块

本篇将学习python的另一个内建模块collections,更多内容请参考:Python学习指南 collections是Python内建的一个集合模块&#xff0c;提供了许多有用的集合类。 namedtuple 我们知道tuple可以表示不变集合&#xff0c;例如&#xff0c;一个点的二维左边就可以表示成&#xff1a;…

Thymeleaf th:include、th:replace使用

最近做到页面数据展示分页的功能&#xff0c;由于每个模块都需要分页&#xff0c;所以每个页面都需要将分页的页码选择内容重复的写N遍&#xff0c;如下所示&#xff1a; 重复的代码带来的就是CtrlC&#xff0c;CtrlV ,于是了解了一下thymeleaf的fragment加载语法以及th:includ…

(OS X) OpenCV架构x86_64的未定义符号:错误(OpenCV Undefined symbols for architecture x86_64: error)...

原地址&#xff1a;http://www.it1352.com/474798.html 错误提示如下&#xff1a; Undefined symbols for architecture x86_64:"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:_main in test-41a30e.o"cv::namedWindow(std::__1::basic…

【算法】大根堆

const swap (arr, i, j) > {const tmp arr[i];arr[i] arr[j];arr[j] tmp; } const heapInsert (arr , i) > { // 插入大根堆的插入算法while(arr[i] > arr[Math.floor((i - 1) / 2]) {swap(arr, i, Math.floor((i - 1) / 2);i Math.floor((i - 1) / 2; } } cons…

[CF1082E] Increasing Frequency

Description 给定一个长度为 \(n\) 的数列 \(a\) &#xff0c;你可以任意选择一个区间 \([l,r]\) &#xff0c;并给区间每个数加上一个整数 \(k\) &#xff0c;求这样一次操作之后数列中最多有多少个数等于 \(c\)。 \(n,c,a_i\leq 10^5\) Solution 假设当前选择区间的右端点为 …

Thymeleaf select 使用 和多select 级联选择

1.使用select 并且回绑数据; 页面&#xff1a; 状态&#xff1a; <select name"status" th:field"*{status}" id"idstatus" class"input-select" th:value"*{status}"> <option value"">--请选择-…

Switch语句的参数是什么类型的?

在Java5以前&#xff0c;switch(expr)中&#xff0c;exper只能是byte&#xff0c;short&#xff0c;char&#xff0c;int类型。 从Java5开始&#xff0c;java中引入了枚举类型&#xff0c;即enum类型。 从Java7开始&#xff0c;exper还可以是String类型。 switch关键字对于多数…

【LOJ】#2184. 「SDOI2015」星际战争

题解 直接二分然后建图跑网络流看看是否合法即可 就是源点向每个激光武器连一条二分到的时间激光武器每秒攻击值的边 每个激光武器向能攻击的装甲连一条边 每个装甲向汇点连一条装甲值的边 代码 #include <bits/stdc.h> #define fi first #define se second #define pii …

表达式符号

Thymeleaf对于变量的操作主要有$*#三种方式&#xff1a; 变量表达式&#xff1a; ${…}&#xff0c;是获取容器上下文变量的值.选择变量表达式&#xff1a; *{…}&#xff0c;获取指定的对象中的变量值。如果是单独的对象&#xff0c;则等价于${}。消息表达式&#xff1a; #{……

Java学习的快速入门:10行代码学JQuery

生活在快速发展时代的我们&#xff0c;如果不提速可能稍不留神就被时代淘汰了。快节奏的时代成就了快餐&#xff0c;亦成就了速成教育。尤其是身处互联网行业的我们&#xff0c;更新换代的速度更是迅速&#xff0c;快速掌握一门技术已经成为潮流趋势。怎样才能快速入门学习java…

项目管理

项目先后衔接的各个阶段的全体被称为项目管理流程。项目管理流程对于一个项目能否高效的执行起到事半功倍的效果。接下来我会利用36张的ppt&#xff08;当然了这里我只用部分图片展示要不然就太多图片了&#xff09;&#xff0c;介绍项目管理的整体流程。 1.项目管理的五大过程…

docker——三剑客之Docker Machine

Docker Machine是Docker官方三剑客项目之一&#xff0c;负责使用Docker的第一步&#xff0c;在多种平台上快速安装Docker环境。它支持多种平台&#xff0c;让用户在很短时间内搭建一套Docker主机集群。Machine项目是Docker官方的开源项目&#xff0c;负责实现对Docker主机本身进…

egret:什么是脏矩形

脏矩形是2D图形性能优化一个重要的概念。Egret2.5开始脏矩形完全可以由引擎自动计算&#xff0c;即大名鼎鼎的"自动脏矩形"。 简单说脏矩形&#xff0c;就是画面刷新时&#xff0c;产生变化而需要重绘的舞台局部区域。 什么叫脏&#xff0c;即什么情况下会弄脏&#…

软件项目管理(一)

首先软件项目管理&#xff0c;什么是项目&#xff1f;什么是软件项目&#xff1f; 项目是唯一的&#xff0c;临时的&#xff0c;即在一定的时间内完成。 具体定义&#xff1a;项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。 项目的特征&#xff1a; …

strace参数

strace参数 strace参数 -c 统计每一系统调用的所执行的时间,次数和出错的次数等. -d 输出strace关于标准错误的调试信息. -f 跟踪由fork调用所产生的子进程. -ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号. -F 尝试跟踪vfork调…

软件项目管理(二)

根据上次的路线图 从项目初始开始&#xff1a;包括项目确立和生存期 项目确立分成 项目立项、项目招投标、项目授权 项目立项&#xff1a;确定项目的目标、时间、资源、资金&#xff0c;关键在于得到项目发起人的认可 一个软件项目的立项开始于软件项目的启动&#xff0c;只…

centos6.5和centos7.5统一字符集为zh_CN.UTF-8解决系统和MySQL数据库乱码问题

linux的服务器需要做的操作 centos6.5下&#xff1a; 修改默认字符集为 zh_CN.UTF-8&#xff0c;如果没有中文语言包可能需要安装中文语言包支持 [rootmeinv01 ~]# yum groupinstall chinese-support [rootmeinv01 ~]# cat /etc/sysconfig/i18n #<修改此配置文件为如下 L…

软件项目管理(三)

上次讲完了项目初始部分&#xff0c;包括立项、招投标、授权 在进入第二部分&#xff0c;项目计划 前我们要先了解软件的需求以及任务的分解 软件需求管理 软件需求定义&#xff1a;用户对软件功能和性能的要求 软件需求管理过程&#xff1a;需求获取、需求分析、需求规格…

Winform-图片上传

1.界面上拖个.pictureBox(pictureBox1) //上传点击按钮 private void button1_Click(object sender, EventArgs e) { OpenFileDialog fileDialog new OpenFileDialog(); DialogResult result fileDialog.ShowDialog(); if (result DialogResult.OK) { this.pictureBox1.Imag…