创建高级联结

使用表别名

别名除了用于列名和计算字段外,SQL还允许该表名起别名。这样做主要有两个理由:
1.缩短SQL语句
2.允许在单条SELECT语句中多次使用相同的表

在这里插入图片描述
表的别名不仅可以用于WHERE子句,它还可以用于SELECT的列表、ORDER BY子句以及语句的其他部分。

·

使用不用类型的联结

之前我们使用的只是称为内部联结或等值联结的简单联结。现在来看3种其他联结。分别是自联结、自然联结和外部联结。

自联结

例子:找到供应RTX4060的供应商在订单中供应的其他商品
在这里插入图片描述
此查询中需要的两个表实际上是相同的表,因此Products表在FROM子句中使用了两次。
因为有的时候处理联结远比子查询快得多,所以我们在写SQL时应该试一下两种方法,以确定哪一种的性能更好。

自然联结

略,平时基本上建立的内部联结都是自然联结,用不到非自然联结的内部联结。

外部联结

使用关键字OUTER JOIN来指定是外部联结类型(而不是WHERE子句中指定)。但是,与内部联结两个表中的行不用的是,外部联结还包括没有联结的行。*在使用OUTER JOIN 语法时,必须同时使用RIGHT或LEFT关键字指定包括其所有行(这里就会出现可能是没联结的行)的表(RIGHT指的是OUTER JOIN右边的表,同理LEFT JOIN指左边)。

外部联结存在两种形式:左外联和右外联,两种类型的外部联结可以互换使用,使用哪种根据方便决定。

·
使用带聚集函数的联结

聚集函数可以用来汇总数据,它不仅可以从单个表中汇集数据,也可以与联结一起使用。
左外联结
在这里插入图片描述
内联结
在这里插入图片描述
注意,内联结和外联结返回结果的区别。

·

联结及其使用的特点

1.注意使用联结的类型,一般我们都使用内部联结,但使用外联结也是有效的
2.保证使用正确的联结条件,否则将返回不正确的数据
3.应该总是提供联结条件,否则得出的是笛卡尔积
4.在一个联结中可以包含多个表,但不推荐使用,一是因为影响响应性能,二是出现故障不容易排查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值