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

目录

一.连接查询

分类:

 内连接:

        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.mzph.cn/web/16680.shtml

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

相关文章

每日5题Day11 - LeetCode 51 - 55

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;51. N 皇后 - 力扣&#xff08;LeetCode&#xff09; class Solution {public List<List<String>> solveNQueens(int n) {List<List<String>…

如果查看svn的账号和密码

一、找到svn存放目录&#xff08;本地默认存放SVN用户信息的目录为&#xff1a;C:\Users\Administrator\AppData\Roaming\Subversion\auth\svn.simple&#xff09;每个人的电脑环境不一样&#xff0c;因人而异。 如果找不到直接搜索svn.simple 二、下载密码查看工具 链接: 百…

MySQL——MySQL目录结构

MySQL安装完成后&#xff0c;会在磁盘上生成一个目录&#xff0c;该目录被称为MySQL的安装目录。在MySQL的安装目录中包含了启动文件、配置文件、数据库文件和命令文件等。 下面对 MySQL 的安装目录进行详细讲解 (1)bin 目录 : 用于放置一些可执行文件,如 mysql.exe、mysqld. …

软件设计师基础知识难点总结

软件设计师基础知识难点 I/O设备管理软件一般分为4个层次&#xff0c;如下图所示。 用户进程与设备无关的系统软件设备驱动程序中断处理程序硬件 直接查询控制 分为有无条件传送和程序查询方式&#xff0c;都需要通过CPU执行程序来查询外设的状态&#xff0c;判断外设是否准备好…

C#多维数组不同读取方式的性能差异

背景 近来在优化一个图像显示程序&#xff0c;图像数据存储于一个3维数组data[x,y,z]中&#xff0c;三维数组为一张张图片数据的叠加而来&#xff0c;其中x为图片的张数&#xff0c;y为图片行&#xff0c;Z为图片的列&#xff0c;也就是说这个三维数组存储的为一系列图片的数据…

深度解析 Spring 源码:探秘 CGLIB 代理的奥秘

文章目录 一、CGLIB 代理简介1.1 CGLIB 代理的基本原理和特点1.2 分析 CGLIB 如何通过字节码技术创建代理类 二、深入分析 CglibAopProxy 类的结构2.1 CglibAopProxy 类结构2.2 CglibAopProxy 类源码 三、CGLIB 代理对象的创建过程3.1 配置 Enhancer 生成代理对象3.2 探讨如何通…

PageHelper分页查询时,count()查询记录总数与实际返回的数据数量不一致

目录 场景简介代码判断异常情况排查原因解决 场景简介 1、使用PageHelper进行分页查询 2、最终构建PageInfo对象时&#xff0c;total与实际数据量不符 代码判断 异常情况 排查 通过对比count()查询的SQL与查询记录的SQL&#xff0c;发现是PageHelper分页查询时省去了order b…

Linux系统编程——基础IO与文件描述符(管理已打开的内存文件)

目录 一&#xff0c;文件预备 二&#xff0c;C语言文件操作函数 2.1 默认打开的三个流 2.2 写文件 2.3 读文件 2.4 再次理解当前路径 三&#xff0c;Linux操作文件系统调用 3.1 open()和close() 3.1.1 第一个参数 3.1.2 *第二个参数 3.1.3 第三个参数 3.2 write(…

(2024,基于熵的激活函数动态优化,具有边界条件的最差激活函数,修正正则化 ReLU)寻找更优激活函数

A Method on Searching Better Activation Functions 公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 动机 4. 方法论 4.1 问题设定 4.1.1 贝叶斯错误率和信息熵 4.1.2 激活…

host修改

前言 想要修改 hosts 文件&#xff0c;您需要具有对系统文件的适当访问权限&#xff0c;并且知道如何编辑文本文件。hosts 文件是一个用于域名解析的本地文件&#xff0c;它允许您为特定的 IP 地址指定主机名。 以下是在不同操作系统中修改 hosts 文件的步骤&#xff1a; 一、…

香橙派 Kunpeng Pro 上手初体验

香橙派 Kunpeng Pro 上手初体验 目录 香橙派 Kunpeng Pro 上手初体验1.前言2.开箱3.开发板资源介绍硬件规格参数外观规格参数4.系统环境搭建系统镜像烧录ssh连接5.简单测试6.总结 1.前言 我很荣幸能收到了来自CSDN的测评邀请&#xff0c;让我有机会对香橙派最新推出的Kunpeng …

C# 使用Aspose生成和修改文档

Aspose库 C#中的Aspose库是一个强大的文件处理库&#xff0c;可以用于各种文件格式的创建、编辑、转换和操作。该库提供了丰富的功能&#xff0c;包括处理文档、电子表格、幻灯片、PDF、图像等多种文件格式&#xff0c;能够轻松实现文件的读取、写入、格式化、样式设置、数据操…

历时3周圆满结营,Sui Move HackerHouse精彩回顾

Sui 是基于第一原理重新设计和构建而成的 L1 公有链&#xff0c;旨在为创作者和开发者提供能够承载 Web3 中下一个十亿用户的开发平台。Sui 上的应用基于 Move 智能合约语言&#xff0c;并具有横向可扩展性&#xff0c;让开发者能够快速且低成本支持广泛的应用开发。 Move 是用…

Vectorworks 2024 Mac安装包下载Vectorworks 2024安装教程3D建模设计工具

安装 步骤 1&#xff0c;双击下载好的安装包&#xff0c;打开。 2&#xff0c;将G1DXHL.ldf拖到桌面上备用。 3&#xff0c;返回打开的镜像 选择install vectorworks2024 双击打开启动安装程序。电脑就90hi高腰腿疼痛和Y&Aaa9yY 4&#xff0c;输入电脑密码。 5&#xff0…

python onnx 推理yolov10

python onnx 推理yolov10 import onnxruntime as ort import cv2 import numpy as np# Class names for the COCO dataset CLASSES = ["person", "bicycle", "car", "motorcycle", "airplane"

DasViewer V3.3全新升级 | 新增点云数据浏览、点云关联全景照片、3DTiles在线数据浏览...

近日&#xff0c;DasViewer迎来3.3版本更新&#xff0c;新增点云数据浏览展示、点云关联全景照片、3DTiles在线数据浏览等功能&#xff0c;为用户带来多源数据可视化极速浏览全新体验。 一起来先睹为快↓ 新增功能 1&#xff0c;点云数据浏览 在新版本中&#xff0c;DasView…

CentOS Samba配置挂载

目录 安装samba 配置 /home 文件夹权限 配置 /home 文件夹共享 配置防火墙 添加 root 登录用户并创建密码 重启samba服务&#xff0c;关闭selinux 查看samba状态 以/home目录挂载为例&#xff1a; 安装samba sudo yum install samba 配置 /home 文件夹权限 sudo se…

rapidssl泛域名https600元一年

泛域名https证书也可以称之为通配符https证书&#xff0c;指的是可以用一张https证书为多个网站(主域名以及主域名下的所有子域名网站)传输数据加密&#xff0c;并且提供身份认证服务的数字证书产品。RapidSSL旗下的泛域名https证书性价比高&#xff0c;申请速度快&#xff0c;…

自己手写一个线性表List【C风格】

#include <iostream>//线性表、顺序表List#define MAX_SIZE 20 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0typedef int Status;//返回状态类型 typedef int ElemType;//元素类型//结构体 typedef struct {ElemType data[MAX_SIZE];//数据类型&#x…

Python爬虫项目实战:百度任意图片抓取

大家好&#xff0c;我是南枫&#xff0c;这篇文章我将给大家介绍如何使用Python爬虫来达到想爬哪个明星图片就能爬下来的效果&#xff0c;那我们接下来看看如何实现的吧。 导入Python的requests库和re库。requests库用于发送HTTP请求&#xff0c;而re库用于处理正则表达式。 通…