首页 >

一起聊聊SQL的表连接

数据库|SQL一起聊聊SQL的表连接
SQL
数据库-SQL
像素鸟 源码,vscode注释html,ubuntu 拖拽,tomcat 加载多次,sqlite添加索引查询慢,苹果cms影音先锋播放器插件,cs55plus蓝鲸前端框架,爬虫爬取最新电影资源,16位md5 php,seo推广哪家稳妥,商城网站源码修改教程,网页 上下滑动,oa系统模板htmllzw
《SQL教学》
tomexam源码购买,ubuntu调取数据代码,档案地下爬虫族,php swith,温州seo推荐lzw
SQL的表连接
最美贺卡 源码,平板怎么装vscode,ubuntu 离线,tomcat 不编译,sqlite如何解密,网页设计是干什么的,php 链接mysql数据库,购买服务器价格,jquery 商品对比插件,前端开发需要什么框架,爬虫阿里,const php,深圳seo网站排名,springboot本地,php截取标签怎么截,网站前台模版,网页飞入图片后 停止,学生管理系统网页模板,dedecms忘记后台密码,wordpress 页面 分栏,c 进销存管理系统源码,999朵玫瑰小程序lzw
在关系数据库中,数据分布在多个逻辑表。想要获得完整有意义的数据集,则需要使用连接来查询这些表中的数据。SQL Server中支持多种连接,包括内连接、左连接、右连接、交叉连接和全外连接。

A、内连接

内部连接子句用于查询来自两个或多个相关表的数据。INNER JOIN 子句的语法:

SELECT p.product_name, p.list_price ,c.category_nameFROM production.products p INNER JOIN production.categories c ON c.category_id = p.category_id

注意:要查询的字段,必须要在字段的前面加上表名或者表的别名,如:p.product_name
其中FROM后面的是主表,然后 INNER JOIN 后面的表是要连接的表。主表和连接表进行比较,查 找满足的条件的所有行。连接谓词的计算结果为true是,则将主表和连接表进行合并成新的结果 集,下图例:

一起聊聊SQL的表连接

内连接的多个表连接,如下所示:

SELECT p.product_name, p.list_price ,c.category_name, b.brand_nameFROM production.products p INNER JOIN production.categories c ON c.category_id = p.category_id INNER JOIN production.brands b ON b.brand_id = p.brand_id

B、左连接

在左连接中使用 LEFT JOIN 子句用于查询来自多个表的数据,它返回是左表中的所有行和右表中匹配行。若是右表中找不到匹配行,则使用NULL代替显示,如图所示:

一起聊聊SQL的表连接

使用 LEFT JOIN 语句进行连接:如下所示:

SELECT p.product_name, p.list_price ,c.category_nameFROM production.products p LEFT JOIN production.categories c ON c.category_id = p.category_id

在上面的语法中 FROM 后面的表是左表(production.products),而 LEFT JOIN 后面紧跟的右 表(production.categories)。

C、右连接

在右连接中使用RIGHT JOIN子句来进行两个表或多个表进行查询。右查询刚好与左查询的是相反 的,返回右表的所有行和左表的匹配行,若左表找不到匹配行,则返回NULL代替显示,如图所示:

一起聊聊SQL的表连接

使用 RIGHT JOIN 语句进行连接:如下所示:

SELECT p.product_name, p.list_price ,c.category_nameFROM production.products p RIGHT JOIN production.categories c ON c.category_id = p.category_id

在上面的语法中 FROM 后面的表是左表(production.products),而 RIGHT JOIN 后面紧跟的右 表(production.categories)。

D、交叉连接

CROSS JOIN 连接两个或多个不相关的表。 以下是两个表的CROSS JOIN 的语法,两种写法:

SELECT T1.select_list FROM T1 CROSS JOIN T2;

或者

SELECT T1.select_list FROM T1, T2;

CROSS JOIN 将第一个表(T1)中的每一行与第二个表(T2)中的每一行连接起来。 换句话说,交叉连 接返回两个表中行的笛卡尔积。与INNER JOIN或LEFT JOIN不同,交叉连接不会在连接的表之间 建立关系。
假设 T1 表包含三行: 1 , 2 和 3 , T2 表包含三行: A , B 和 C 。 CROSS JOIN 从第一个 表(T1)获取一行,然后为第二个表(T2)中的每一行创建一个新行。 然后它对 第一个 表(T1)中的 下一行执行相同操作,依此类推。在此图中, CROSS JOIN 总共创建了 9 行。

E、自连接

自联接用于将表连接到自身(同一个表)。 它对于查询分层数据或比较同一个表中的行很有用。
自联接使用内连接或左连接子句。 由于使用自联接的查询引用同一个表,因此表别名用于为查询 中的表分配不同的名称。
注意:如果在不使用表别名的情况下在查询中多次引用同一个表,则会出现错误。
示例:

SELECT t1.select_list FROM T1 t1INNER JOIN T1 t2 ON t1.category_id = t2.category_id

在 INNER JOIN 这里可以使用其他的子句,比如:LEFT JOIN ,RIGHT JOIN

F、全外连接

FULL OUTER JOIN当左表或右表中存在匹配项时,该命令将返回所有行。如图所示:

一起聊聊SQL的表连接

使用 FULL OUTER JOIN 查询 pm.projects 表和 pm.member 表中的数据:

SELECT m.name member, p.title project FROM pm.members m FULL OUTER JOIN pm.projects p ON p.id = m.project_id;

pm.projects 表数据:
一起聊聊SQL的表连接

pm.member 表数据:

一起聊聊SQL的表连接

查询结果:
一起聊聊SQL的表连接

《SQL教学》


  • 暂无相关文章
  • Posted in 未分类