SQL Server学习系列(一)——内部连接查询

     关系数据库中的查询往往不是仅限于单表的,而是在很多表之间的连接查询。连接包括以下几种:

一、内部连接;二、外部连接;三、完全连接;四、交叉连接。今天就介绍第一种——内部连接。

首先看一下内部连接的语法结构:

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

当然连接不止限于两个表之间的,可以是很多的。内部连接和关系代数中的自然连接很类似。顺便复习一下关系代数中的自然连接。

自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。若R和S具有相同的属性组B,则自然连接的形式定义为:

      

举个例子如下:


部门表和雇员表相同的属性组是 DeptName,自然连接时就把相同属性组中,属性值相同的元组组合在一起形成新的元组。

复习完自然连接,再看内部连接,所有的SQL查询都是遵循关系代数的,关系代数学的好坏,直接关系到SQL语句的理解。所以,像连接、投影、除法等基本的关系代数一定要弄清楚。

接下来以Northwind数据库为例介绍内部连接查询。

1、先弄一个简单的例子:在Microsoft SQL Server Management Studio 中新建查询,输入以下语句:

SELECT *
FROM Products
INNER JOIN Suppliers
ON Products.SupplierID = Suppliers.SupplierID

部分结果如图:

从结果可以看都,把Products和Suppliers表中SupplierID属性列中值相等的元组连接在了一起。当然可以不使用 SELECT *  来选择全部列,而是选择一部分。另外可以再加上where子句来缩小范围。比如下面的语句:

SELECT p.ProductID, s.SupplierID, p.ProductName, s.CompanyName
FROM Products p
INNER JOIN Suppliers s
ON p.SupplierID = s.SupplierID
WHERE p.ProductID < 4
结果如下:

 当然可以改写成等价的用SELECT ……WHERE来实现的连接查询。如上面的例子可以改写为:

SELECT p.ProductID, s.SupplierID, p.ProductName, s.CompanyName
FROM Products p,Suppliers s
WHERE p.SupplierID = s.SupplierID AND p.ProductID < 4
结果是一样的。 

需要说明的是写内部连接时一般省略 INNER关键字,而只用JOIN,因为默认情况下就是内部连接。


好了,内部连接就到这里……,熟练应用才是王道。。。。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naruto

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值