《SQL Server 2008从入门到精通》--20180703

1 SELECT操作多表数据

关于连接的问题,在《SQL必知必会》学习笔记中已经讲到过,但是没有掌握完全,所以再学一下。

1.1 JOIN连接

首先我们先来看一下最简单的连接。Products表和Vendors表的连接
示例1
Products表数据如下
Products表
Vendors表数据如下
这里写图片描述
将这两张表通过以下语句连接

USE test
SELECT prod_name,Products.vend_id,vend_name
FROM Products,Vendors
WHERE Products.vend_id=Vendors.vend_id;
--连接条件为两张表的vend_id相同

连接结果如下
这里写图片描述
当用户所需数据不在一个表中,而在多个表中,就需要使用多表连接,将多个表中的数据组合到一起,使数据更直观地体现出来。在上述语句中,通过JOIN我们可以从结果中很明确地知道产品及其供应商。

1.1.2 内连接

内连接是一种比较常用的数据连接查询方式,上述语句就是内连接。下面将给出另一种内连接的语法。两者的查询结果是一样的。

--内连接INNER JOIN
USE test
SELECT prod_name,Products.vend_id,vend_name
FROM Products INNER JOIN Vendors--和上面语句差异之处
ON Products.vend_id=Vendors.vend_id;

注:使用INNER JOIN时,关键字INNER可省略,但是连接条件必须用ON连接,不能用FROM了。

内连接分为等值连接,非等值连接和自然连接三种。

1.1.2.1 等值连接

连接条件用等号相连,查询结果中列出被连接表中的所有列,包括重复列。为了更加形象地体现“列出重复列”这个特点,接下来还是用Products和Vendors表来举例。逻辑是:一种产品可以对应多个供应商,一个供应商可以生产多种产品。
示例2
Products表数据如下
这里写图片描述
Vendors表数据如下
这里写图片描述
然后执行等值连接的代码

SELECT * FROM Vendors,Products
WHERE Vendors.vend_id=Products.vend_id;

结果如图所示
这里写图片描述
可以看到,在结果中vend_id列重复。

注:等值连接要满足2个条件,连接条件用=号,查询结果中包含被连接表中所有列,包含重复列。

1.1.2.2 非等值连接

连接条件中使用除等号以外的比较运算符来比较连接列的列值。例如使用>,<,>=,<=,<>等,也可以使用范围运算符BETWEEN。下面用stu表和class表来示范非等值连接
示例3
新建stu表并插入数据,stu表用来表示学生和该学生的年级总成绩

    CREATE TABLE stu(
    sto VARCHAR(8) NOT NULL,
    stname VARCHAR(20) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值