sqlserver——查询(四)——连接查询

news2024/9/20 18:37:00

目录

一.连接查询

分类:

 内连接:

        1. select ... from A,B ;

        2. select ..from A,B where ..;

         3.select ...,... from A join B on...

        4. where 与 join...on 的区别  

        5. where位置的先后


导语:连接查询用于多表查询,是数据库查询操作的核心,在实际中一定会使用到的,难度比较大;

一.连接查询

        将两个表或多个表连接起来,检索出满足条件的数据;

 

分类:

        内连接         外连接         完全连接         交叉连接         自连接         联合        

 

 内连接:

        1. select ... from A,B ;

        结果:产生一个临时表(笛卡尔积),临时表的行数=表A行数*表B行数;列数=表A列数+表B列数;

 

        2. select ..from A,B where ..;

        结果:对产生的笛卡尔积使用where进行过滤;

         明白了上面两个语句,我们就可以理解下面的语句了;

         3.select ...,... from A join B on...

        select  emp.ename  as  "员工姓名" , dept.dname  as  "部门名称"  --查询表的某一列使用 【表.字段名】
            from emp
            join dept --join是连接的意思,后面所跟连接的表
            on 1=1 ; --on 后面是连接的条件;

        不使用 join ...on,使用 where 也可以  

               select * 
                    from emp , dept 
                   where emp.deptno=dept.deptno 
                    order by emp.deptno;

 

        4. where 与 join...on 的区别  

        select ...,...from A ,B where ......        这是sql 92标准;

        select ...,... from A join B on ......       这是sql99标准;

        两者得到的结果是相同的,但是更推荐大家使用sql99标准。

        下面我们通过连接三张表来体会一下sql99与sql92标准的区别;

        我们先连接三张表,主要思路是先连接两张表,再使用生成的临时表去连接第三张表;

                select  *
                    from  emp 
                    join   dept
                    on  1 = 1
                    join  salgrade
                    on  3 > 2 ; 

                我们再好好地设置条件,对这三张表进行过滤;

        --sql99标准
        select *
            from emp 
            join  dept
            on emp.deptno = dept.deptno
            join salgrade
            on emp.sal >= salgrade.losal and emp.sal <= salgrade.hisal
            where emp.sal > 2000 ;

 

      这里需要强调的是  emp.sal >= salgrade.losal and emp.sal <= salgrade.hisal ,虽然前面我们说是前面两个表形成的临时表与第三张表连接,但是在使用的时候我们不会给临时表取名字,使用其名字进行操作,例如temporary.sal >= salgrade.losal and temporary.sal <= salgrade.hisal ( temporary 为临时表名 ),我们仍旧使用原先的表名进行操作。因为在实际操作中,可能会连接上百张表,如果每次连接都给临时表取名字的话,恐怕连名字都记不住,更别谈操作了;

        我们再使用 sql92 的标准进行操作 :

        --sql92标准
        select  *
            from emp , dept,salgrade 
            where emp.deptno = dept.deptno  and (emp.sa l>= salgrade.losal and  emp.sal <=             salgrade.hisal) and emp.sal > 2000 ;

        显而易见,sql99标准更加容易理解,sql 92把条件都堆放在 where 后面,而且条件的顺序可以调整,显得逻辑不太清晰;


       5. where位置的先后

        我们会过头来再看一下这个语句;

        如果我们将 where 过滤的 emp.sal > 2000,放在前面如何?他不是先连接再过滤的吗?咱们把他放前面相当于先过滤再连接,反而减少了工作量,提高了查询效率,这样行不行呢?

  --sql99标准
        select *
            from emp 
            join  dept
            on emp.deptno = dept.deptno
            join salgrade
            on emp.sal >= salgrade.losal and emp.sal <= salgrade.hisal
            where emp.sal > 2000 ;

        答案是不行的!至于为什么就需要大家充分发挥自己的聪明才智了,总之,我们记住就可以了。

                select *
            from emp 
            join  dept
            where emp.sal>2000
           on emp.deptno=dept.deptno
            join salgrade
            on emp.sal>=salgrade.losal and emp.sal<=salgrade.hisal;

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

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

相关文章

统计计算四|蒙特卡罗方法(Monte Carlo Method)

系列文章目录 统计计算一|非线性方程的求解 统计计算二|EM算法&#xff08;Expectation-Maximization Algorithm&#xff0c;期望最大化算法&#xff09; 统计计算三|Cases for EM 文章目录 系列文章目录一、基本概念&#xff08;一&#xff09;估算 π \pi π&#xff08;二&…

antd(react) ProFormUploadDragger(Upload)上传组件上传图片及省略图模糊展示

antd&#xff08;react&#xff09; ProFormUploadDragger&#xff08;Upload&#xff09;上传组件上传图片及省略图模糊展示 本文基于reactantdProComponents 需求&#xff1a;图片模糊展示&#xff08;数据脱敏&#xff09; 像营业执照、身份证这种&#xff0c;可能用户不希…

信息学奥赛初赛天天练-13-数论-素数的判定

更多资源请关注纽扣编程微信公众号 1 素数 质数又称素数&#xff0c;有无限个。一个大于1的自然数&#xff0c;除了1和它本身外&#xff0c;不能被其他自然数整除&#xff0c;就是该数除了1和它本身以外不再有其他的因数;否则称为合数 1 既非素数也非合数 2 是唯一的偶素数。…

全局查询筛选器适用场景 以及各场景示例

EF Core中的全局查询筛选器&#xff08;Global Query Filters&#xff09;是一种强大的功能&#xff0c;可以在实体框架的DbContext级别为特定的EntityType设置默认的过滤条件。这些筛选器自动应用于所有涉及到相关实体的LINQ查询中&#xff0c;无论是直接查询还是通过Include或…

深入解读 ChatGPT 的基本原理(个人总结版)

引言 背景 人工智能&#xff08;AI&#xff09;技术自20世纪中期诞生以来&#xff0c;经历了多次革新和进步。从最早的图灵测试&#xff0c;到20世纪末的深蓝计算机击败国际象棋冠军&#xff0c;再到21世纪初谷歌AlphaGo击败围棋冠军&#xff0c;AI技术的飞速发展改变了人们的…

4,八种GPIO模式

资料来源:【STM32基础学习】八种GPIO模式总结-云社区-华为云 (huaweicloud.com) 【STM32基础学习】八种GPIO模式总结-云社区-华为云 (huaweicloud.com) 【STM32基础学习】八种GPIO模式总结-云社区-华为云 (huaweicloud.com) 仅作个人自学笔记&#xff0c;如有冒犯&#xf…

STM32Cube系列教程10:STM32CubeIDE工程创建+串口DMA+IDLE+printf重定向+软中断处理串口数据+非阻塞延时任务

文章目录 工程配置配置时钟配置Debug接口配置串口外设配置时钟树生成代码 配置串口重定向printf配置串口&#xff0c;开启IDLE&#xff0c;开启软中断 配置非阻塞延时任务调度函数编写任务调度函数延时任务创建 编译&#xff0c;下载与测试编译下载测试 前两天收到了ST社区的NU…

C数据结构:二叉树

目录 二叉树的数据结构 前序遍历 中序遍历 后序遍历 二叉树的创建 二叉树的销毁 二叉树的节点个数 二叉树叶子节点个数 二叉树第K层节点个数 二叉树的查找 层序遍历 判断二叉树是否为完全二叉树 完整代码 二叉树的数据结构 typedef char BTDataType; typedef str…

Golang的内存关系

1.Page Golang的Page,在操作系统对虚拟内存管理的MMU定义的物理页有相似的定义,默认的Page为8KB 2.mSpan 多个连续的Page称之为是一个Span&#xff0c;其定义含义有操作系统的管理的页表相似 3.Size Class Size Class: 相当于 一个等级和刻度, 比如 第二等级 就代表 一个Pag…

【C++ ——— 多态】笔记

文章目录 一、多态概念二、多态的定义即实现2.1 多态的构成条件2.2 虚函数2.3虚函数的重写1.虚函数中析构函数的重写2.重载、重写&#xff08;覆盖&#xff09;、重定义&#xff08;隐藏&#xff09;的区别 2.4 C11 override 和 final 三、抽象类3.1抽象类概念3.2 接口继承和实…

中断处理过程介绍

概念 中断 中断源 分类 中断处理过程 中断请求 实现器件 中断判优 软件判优 过程 器件实现 程序实现 硬件判优 链路判优 器件实现 控制器判优 中断响应 中断服务 中断返回

C语言作为计算机行业的基础之一,是否制约了行业本身的发展?

c不是计算机行业的基础啦&#xff0c;你想&#xff0c;c语言出现时已经有一套成熟的计算机体系&#xff0c;有基于内存地址的寻找指令、数据的工作方式&#xff0c;有汇编语言&#xff0c;那搞出c这种高级语言就很正常啊&#xff01;刚好我有一些资料&#xff0c;是我根据网友给…

代码随想录算法训练营第20天 |● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

文章目录 前言654.最大二叉树思路方法一 递归法方法一2 老师的优化递归法 617.合并二叉树思路方法一 递归法方法二 迭代法 700.二叉搜索树中的搜索思路方法一 递归法方法二 迭代法 98.验证二叉搜索树思路方法一 使用数组方法二 不使用数组代码注意点&#xff1a; 方法二 使用双…

【Linux】Linux的基本指令_3

文章目录 二、基本指令15. date16. cal16. find17. grep18. zip 和 unzip19. tar20. uname 未完待续 二、基本指令 15. date date 命令可以显示当前时间。 常用标记列表&#xff1a; %H : 小时(00…23) %M : 分钟(00…59) %S : 秒(00…61) %X : 相当于 %H:%M:%S %d : 日 (01……

简易计算器

前言 简易计算器&#xff0c;旨在实现一个简单的计算器功能。 整形&#xff0c;浮点型数据的加减乘除运算&#xff1b;数据的统计(如文件中某字符的出现频数)&#xff1b;期望&#xff0c;方程运算&#xff1b;平均数&#xff0c;最小值&#xff0c;最大值&#xff0c;中位数…

C++之“流”-第2课-C++和C标准输入输出同步

为什么C和C的标准输入输出不同步时&#xff0c;数据会混乱&#xff1f;同步会带来多大性能损失&#xff1f;为什么说这个损失通常不用太在乎&#xff1f; 0. 课堂视频 C之“流”-第2课&#xff1a;和C输入输出的同步 1. 理解cin和cout的类型与创建过程 std::cout 是std::ostre…

Css 提高 - 获取DOM元素

目录 1、根据选择器来获取DOM元素 2.、根据选择器来获取DOM元素伪数组 3、根据id获取一个元素 4、通过标签类型名获取所有该标签的元素 5、通过类名获取元素 目标&#xff1a;能查找/获取DOM对象 1、根据选择器来获取DOM元素 语法&#xff1a; document.querySelector(css选择…

C/C++运行时库和UCRT系统通用运行时库总结及问题实例分享

目录 1、概述 2、不同版本的Visual Studio对应的运行时库说明 3、在Windbg10.0安装目录中获取UCRT通用运行时库 4、微软官网对UCRT通用运行时库的相关说明 5、使用Visual Studio 2017开发软件初期遇到的UCRT通用运行时库问题 6、如何查看软件依赖了哪些C/C运行时库&#…

vueRouter路由总结

https://blog.csdn.net/qq_24767091/article/details/119326884