首页 > 数据库 >idea内置数据库DataGrip + 多表查询sql语句 -- 内连接与外连接

idea内置数据库DataGrip + 多表查询sql语句 -- 内连接与外连接

时间:2024-07-20 13:50:56浏览次数:13  
标签:多表 -- where dept emp tb 连接 select

多表查询

内连接与外连接

-- ——————————多表查询
-- 用的是多表设计中一对多的表与数据
-- 单表
select * from tb_dept;
select * from tb_emp;
-- 多表
select * from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id ;
-- ==============内链接     没有联系的查询不出来
-- a.查询员工的姓名和所属的部门名称    隐式内连接实现
select tb_emp.name , tb_dept.name from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id;
-- 别名      起别名之后后边只能用别名
select e.name , d.name from tb_emp e ,tb_dept d where e.dept_id = d.id;
-- b.查询员工的姓名和所属的部门名称    显式内连接实现     inner可以省略
select tb_emp.name , tb_dept.name from tb_emp inner join tb_dept on tb_emp.dept_id = tb_dept.id;
-- ==============外链接        显示所有数据      outer可以省略
-- 以下员工表为左表,部门表为右表
-- a.查询员工表所有员工姓名和对应的部门名称    (左外链接)
select e.name , d.name from tb_emp e left outer join tb_dept d on e.dept_id = d.id;
-- b.查询部门表所有部门信息和对应的员工名称    (有外链接)
select e.name , d.name from tb_emp e right outer join tb_dept d on e.dept_id = d.id;
-- 内连接(显式、隐式)只是方法不同,结果是一样的,外连接(左外链接、右外连接)结果不同(左外包含左表所有内容,右外同理)
-- ==============子查询
-- -----------------标量子查询       子查询的返回结果是单行单列的值
-- a.查询教研部所有员工信息
-- 步骤1:查询教研部的部门id   - demp
select id from tb_dept where name = '教研部';
-- 步骤2:再查询该部门id下在员工信息   - emp
select * from tb_emp where dept_id = 2;
-- 最终:
select * from tb_emp where dept_id = (select id from tb_dept where name = '教研部');
-- b.查询在六入职之后的员工信息
-- 步骤1:查询六的入职时间
select entrydate from tb_emp where name = '六';
-- 步骤2:查询六入职之后的员工信息
select * from tb_emp where entrydate > '2010-01-01';
-- 最终:
select * from tb_emp where entrydate > (select entrydate from tb_emp where name = '六');
-- -----------------列子查询     子查询的返回结果是一列(可多行
-- a.查询教研部和咨询部的所有员工信息
-- 步骤1:查询教研部和咨询部的id
select id from tb_dept where name = '教研部' or name = '咨询部';
-- 步骤2:根据部门id查询该部门下的员工信息
select * from tb_emp where dept_id in (2,3);
-- 最终:
select * from tb_emp where dept_id in (select id from tb_dept where name = '教研部' or name = '咨询部');
-- -----------------行子查询    子查询的返回结果是一行(可多列
-- a.查询和六入职日期和职位都相同的员工
-- 步骤1:查询六入职日期和职位
select entrydate , job from tb_emp where name = '六';
-- 步骤2:与其入职日期和职位都相同的员工
select * from tb_emp where entrydate = '2010-01-01' and job = 3;
-- 最终?
select * from tb_emp where entrydate = (select entrydate from tb_emp where name = '六') and job = (select job from tb_emp where name = '六');
-- 优化1:
select * from tb_emp where (entrydate , job) = ('2010-01-01' , 3);
-- 优化2:
select * from tb_emp where (entrydate , job) = (select entrydate , job from tb_emp where name = '六');
-- -----------------表子查询    多行多列
-- a.查询入职日期是 2010-01-01 之后的员工信息及其部门名称
-- 步骤1:查询查询入职日期是 2010-01-01 之后的员工信息
select * from tb_emp where entrydate > '2010-01-01';
-- 步骤2:查询这部分的员工信息及其部门名称     将上一个查询结果作为一张临时表来查询
select e.* , d.name from (select * from tb_emp where entrydate > '2010-01-01') e ,tb_dept d where e.dept_id = d.id;

 

标签:多表,--,where,dept,emp,tb,连接,select
From: https://www.cnblogs.com/yansans/p/18313021

相关文章

  • 数位 DP
    数位\(dp\)大多使用高位计算的时候使用低位计算后的结果,从而做到优化效率[ZJOI2010]数字计数题目描述给定两个正整数\(a\)和\(b\),求在\([a,b]\)中的所有整数中,每个数码各出现了多少次。保证\(1\lea\leb\le10^{12}\)。求解策略第一种方法-递推法定义\(dp_i......
  • F. Equal XOR Segments
    链接https://codeforces.com/problemset/problem/1968/F题目思路感觉这是一道非常好的区间异或结论题!思路参考大佬题解值得总结的:1.区间异或的可加性:^[la,ra]==^[ra+1,rb]-->^[1,ra]==^[1,rb]2.aaa=a,用来消除过长的异或.虽然刚开始想用线段树,但是没法实现判断如何实......
  • Java计算机毕业设计秒杀系统实现(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和电子商务的蓬勃兴起,秒杀活动作为一种高效促销手段,在各大电商平台中屡见不鲜。秒杀活动以其时间紧迫、价格诱人的特点,迅速......
  • Java计算机毕业设计老年教育学习系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球人口老龄化的加速,老年教育作为提升老年人生活质量、促进终身学习的重要途径,日益受到社会各界的关注。然而,传统教育模式在满足老年人多样化、......
  • Python按条件筛选、剔除表格数据并绘制剔除前后的直方图
      本文介绍基于Python语言,读取Excel表格文件数据,以其中某一列数据的值为标准,对于这一列数据处于指定范围的所有行,再用其他几列数据的数值,加以数据筛选与剔除;同时,对筛选前、后的数据分别绘制若干直方图,并将结果数据导出保存为一个新的Excel表格文件的方法。  首先,我们来明确一......
  • Java解决贪心法解决盛水问题
    贪心法定义:   贪心算法是一种常见的解决优化问题的算法,其基本思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优的决策,以期获得全局最优解贪心法的基本思路是从问题的某一个初始解出发,通过每一步的最优解,逐步逼近给定的目标,以尽可能快地求得更好......
  • 多个AJAX请求,带执行进度及结果
    functionCreateAll(){varlen=$("[src='/images/err.png'][title='点击重新生成']").length;varlayerMsg=layer.open({title:"正在生成,共有"+len+"个试题正在生成",content:&q......
  • 05. Kubernetes基础篇-Docker知识
    常用命令dockerinfo查看docker信息#客户端信息Client:DockerEngine-CommunityVersion:26.1.4Context:defaultDebugMode:falsePlugins:buildx:DockerBuildx(DockerInc.)Version:v0.14.1Path:/usr/libexec/docker/cli-plu......
  • 第十节 JMeter基础-初级购物车【接口关联-鉴权】
    声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改。 背景:商城购物车可以添加数据,也可以删除数据。思路:登录后添加购物车,加入成功后查看购物车列表。购物车列表,随机删除,或者指定删除(需要特殊指定,例如购物车ID)。全部删除:依次读取购物车列表并删除。 1......
  • 04. Kubernetes安装篇-Kuberadm
    架构解析高可用架构图组件用途EtcdClusterectd是一个键值数据库,主要存放Kubernetes数据,如创建的资源、变更的操作等;MasterKubernetes中的控制节点,主要用于控制Kubernetes集群;NodeKubernetes中的工作节点,主要用于运行Kubernetes集群部署的Pod;Kube-APISer......