SQL Server 数据库常用操作:多表联查(JOIN...ON语句的使用)

article/2025/9/16 0:09:49

1.使用传统连接方式查询
(1). 有两张表Book(BookID,BookName,TypeID,AuthorID,…),BookType(TypeID,TypeName),查询每本书的书名和图书类型。

SELECT BookName, TypeName
FROM Book, BookType
WHERE Book.TypeID = BookType.TypeID

(2). 有三张表Book(BookID,BookName,TypeID,AuthorID,…),BookType(TypeID,TypeName),Author(AuthorID,AuthorName,…)查询每本书的书名、图书类型、作者姓名。

SELECT BookName, TypeName, AuthorName
FROM Book, BookType, Author
WHERE Book.TypeID = BookType.TypeID
AND Book.AuthorID = Author.AuthorID

2.使用SQL连接方式(JIOIN…ON)查询
  使用SQL连接方式时,必须将要连接的所有表或者视图放在 FROM 后面,用JOIN…ON连接起来,将所有表或者视图用 JOIN 连接,连接条件放在 ON 后面。
SQL连接说明

连接方式说明
内连接(INNER)系统默认的连接方式
外连接(OUTER)分为左外连接(LEFT)、右外连接(RIGHT)、完全外连接(FULL)
自然连接或者交叉连接(CROSS)生成一个笛卡尔积

外连接(OUTER)说明

方式说明
左外连接(LEFT)结果集包括满足条件的行和左表的所有行
右外连接(RIGHT)结果集包括满足条件的行和右表的所有行
完全外连接(FULL)结果集包括满足条件的行和左右两表的所有行

例(1)可以改为

SELECT BookName, TypeName
FROM Book JOIN BookType
ON Book.TypeID = BookType.TypeID

但是如果将例(2)改为

SELECT BookName, TypeName, AuthorName
FROM Book JOIN BookType JOIN Author
ON Book.TypeID = BookType.TypeID
ON Book.AuthorID = Author.AuthorID

则会出现
在这里插入图片描述
因为三个表是两两连接。JOIN连接和ON条件是有顺序的,当顺序改变结果就不一定正确。JOIN…ON默认连接方式是内连接。
可以改为

SELECT BookName, TypeName, AuthorName
FROM Book JOIN BookType
ON Book.TypeID = BookType.TypeID
JOIN Author
ON Book.AuthorID = Author.AuthorID

或者

SELECT BookName, TypeName, AuthorName
FROM  BookType RIGHT JOIN Book LEFT JOIN Author
ON Book.AuthorID = Author.AuthorID
ON Book.TypeID = BookType.TypeID

下一篇:SQL Server 数据库常用操作:子查询(嵌套查询)


http://chatgpt.dhexx.cn/article/ZHDxitXr.shtml

相关文章

Oracle SQL中join方式总结

在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图、物化视图等联结)。SQL JOIN其实是一个逻辑概念,像NEST LOOP JOIN、 HASH JOIN等是表连接的物理实现方式。 为了更直观的了解以上join方式…

SQL语句中的join用法

SQL中join的各种用法 1.自然连接(natural join) 自然连接将表中具有相同名称的列自动进行匹配,自然连接不必指定任何同等连接条件也不能认为指定哪些列需要被匹配,自然连接得到的结果表中,两表中名称相同的列只出现一次…

sql中join的各种用法

sql中join的用法 sql中join的含义可以理解为单词“join”,用来连接两张表,join所有连接方式可以分为: 内连接,外连接,右连接,左连接,自然连接 上面这张图已经很清晰的表明了各种连接方式的语法…

SQL Server中JOIN的使用方法总结

JOIN 分为:内连接(INNER JOIN)、外连接(OUTER JOIN)。 其中,外连接分为:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)、全外连接&…

sql 语法中 join 的所有用法总结(简单例子)

join 常见的用法有: 目录 left join (left outer join) right join (right outer join) join (inner join) full join(full outer join 、outer join) cross join 说明:left join 就是 left outer join、 right join 就是 r…

SQL语句各种join用法(图文)

1、INNER JOIN(内连接) select * from table A A inner join table B B on A.key B.key //内连接 2、LEFT JOIN(左连接) select * from table A A left join table B B on A.key B.key //左连接 3、RIGHT JOIN(右连接) select * from table A A right join table B B on A…

sql join中on条件后接and和where

目录 场景1:left join on a.xx b.xx and a.xx2 aa 场景2:left join on a.xx b.xx and b.xx2 aa 场景3:left join on a.xx b.xx where b.xx2 aa 场景4:inner join on a.xx b.xx where a.xx2 aa 场景5:…

详解SQL中的各种连接(JOIN)方法

详解SQL中的各种连接(JOIN)方法 简介 有时候为了得到完整的结果,我们需要从两个或更多的表中获取结果,而 SQL 就提供了 JOIN 子句,用来把来自两个或者多个表的行结合起来(基于这些表之间的共同字段) 数据库中的表可以…

SQL语句中JOIN的用法

记录:257 写SQL最高境界:SELECT * FROM 表名。当然这是一句自嘲。探究一下SQL语句中JOIN的用法,直到经历这个场景,变得想验证一下究竟。 一、场景 把关系型数据库A中表TEST_TB01和TEST_TB02迁移到大数据平台M(MaxCom…

SQL中连接(JOIN)子句介绍

本文主要介绍 SQL(Structured Query Language)中连接(JOIN)子句的相关知识,同时通过用法示例介绍连接的常见用法。 说明:本文的用法示例是面向 MySQL 数据库的。 1 概述 SQL 中 JOIN 子句用于把来自两个…

SQL 中 JOIN 的用法

一、概要 JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操作。 图片是很容易被接受和理解,所以尝试使用图片来说明一下。 二、JOIN分类 客…

思科三层交换机IPv6静态和默认路由配置

基础配置: SWA: Switch>ena Switch#conf t Switch(config)#host SWA SWA(config)#vlan 10 SWA(config-vlan)#vlan 100 SWA(config-vlan)#int vlan 10 SWA(config-if)#ipv6 add 2001:10::1/64 SWA(config-if)#int vlan 100 SWA(config-if)#i…

Cisco 三层交换机与路由器ospf协议配置多区域area

分布操作: 1.划分vlan 2.ospf、area 3.测试ping 三层交换机2 路由器2 PC机4 路由器使用WIC-2T模块 使用DCE串口线连接 其余设备间均用直通线连接 各种预配置信息: 设备从左往右,从上往下依次为 S1,R2,R3&#…

三层交换机配置的步骤

网管不会配置三层交换机怎么办? 学啊! 交换机是企业组网的重要设备,掌握交换机配置是作为网管的必备技能。这里以三层交换机的配置为例子,说一说配置的步骤。 配置管理地址 每个交换机需要配置一个管理地址,方便后期的…

思科利用三层交换机实现 VLAN 间路由

一、实验目的 掌握三层交换机基本配置方法 掌握三层交换机VLAN路由的配置方法 通过三层交换机实现VLAN间相互通信 二、实验原理 三层交换机具备网络层的功能,实现VLAN相互访问的原理是:利用三层交换机的路由功能,通过识别数据包的IP地址…

Cisco Packet Tracer中配置三层交换机

三层交换机介绍: 三层交换机就是具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程…

思科三层交换机配置SVI 实现VLAN 间路由

本次SVI实验参数如图: 依次三层交换我们命名为SW1,二层交换命名为SW2 下面我们开始先对二层交换机SW2进行配置 Switch>en Switch#conf t Switch(config)#host SW2 SW2(config)#vlan 20 SW2(config-vlan)#vlan 30 SW2(config-vlan)#vlan 40 SW2(config…

关于Cisco Packet Tracer三层交换机路由配置

步骤1:交换机trunk配置 交换机sw1配置 Switch>en Switch#conf t Switch(config)#ho sw1 sw1(config)#int f0/2 sw1(config-if)#sw mo tr sw1(config-if)#exit 交换机sw2配置 Switch>en Switch#conf t Switch(config)#ho sw2 sw2(config)#int f0/2 sw2(config-…

三层交换机dhcp服务器性能,CISCO三层交换机怎么配置DHCP服务?

利用CISCO三层交换机自带的DHCP功能,可以实现多VLAN的IP地址自动分配,在三层交换机上如何配置DHCP服务呢,下面由小编介绍下具体操作吧, 1、首先将三层交换机开机,电脑telnet 远程连接,并进入全局模式下&…

思科三层交换机配置ACL(访问控制列表)的步骤讲解

ACL访问控制列表是构建安全规范的网络不可缺少的,但在三层交换机上配置ACL却不为一些刚进企业的初级网络管理维护人员所知。下面介绍一下在三层交换机上配置ACL的试验过程。 三层交换机上配置本地Vlan 实现下层接入层交换机不同Vlan互通。 PC1 192.168.20.10 VLAN …