从零开始学SQLSERER-INNER JOIN
导学
通过INNER JOIN来连接两张表算是进阶知识了,加油!
INNER JOIN·作用
主要作用是连接两张表。通过连接两张表对应列中,相同的部分。如果两个列中,没有对应相同得值,则为空白,可以看一下例子。
这样说可能有点抽象,我们可以看看下面的例子。
现在有两张表,一张学生信息Students表和家庭信息Info表,如下。
Students表:
id | name | class |
---|---|---|
5 | 张三 | 五班 |
7 | 李四 | 四班 |
3 | 王五 | 一班 |
2 | 小张 | 三班 |
Info表:
id | father | monther |
---|---|---|
5 | 张三妈 | 张三爸 |
7 | 李四妈 | 李四爸 |
3 | 王五妈 | 王五爸 |
4 | 小明妈 | 小明爸 |
这时候通过INNER以id列为中介进行关联,可以得到以下结果
id | name | class | father | monther |
---|---|---|---|---|
5 | 张三 | 五班 | 张三妈 | 张三爸 |
7 | 李四 | 四班 | 李四妈 | 李四爸 |
3 | 王五 | 一班 | 王五妈 | 王五爸 |
可以看到,Students表和info表对应id列,相同id为5,7,3,所以最终结果保留了id为5,7,3行的信息。而Students表中id为2的行在info表中没找到相同id进行对应所以没有保留,而info表中id为3的行在Students表中没找到相同id进行对应所以没有保留。
以上就是INNER的示例讲解,下面我们看看代码。
INNER JOIN·代码
SELECT 列名 FROM 表1名
INNER JOIN 表2名 ON 表1名.列名 = 表2名.列名 --通过两个列中相同值的部分进行关联
INNER JOIN·示例
首先,建立示范数据
CREATE TABLE Students
(
id BIGINT,
name VARCHAR(20) ,
class VARCHAR(20)
)
INSERT INTO Students VALUES('5','张三', '五班')
INSERT INTO Students VALUES('7','李四', '四班')
INSERT INTO Students VALUES('3','王五', '一班')
INSERT INTO Students VALUES('2','小张', '三班')
id | name | class |
---|---|---|
5 | 张三 | 五班 |
7 | 李四 | 四班 |
3 | 王五 | 一班 |
2 | 小张 | 三班 |
CREATE TABLE Info
(
id BIGINT,
father VARCHAR(20) ,
monther VARCHAR(20)
)
INSERT INTO Students VALUES('5','张三妈', '张三爸')
INSERT INTO Students VALUES('7','李四妈', '李四爸')
INSERT INTO Students VALUES('3','王五妈', '王五爸')
INSERT INTO Students VALUES('4','小明妈', '小明爸')
id | father | monther |
---|---|---|
5 | 张三妈 | 五班爸 |
7 | 李四妈 | 四班爸 |
3 | 王五妈 | 一班爸 |
4 | 小明妈 | 小明爸 |
需求:关联两张表具有相同id的信息。 |
SELECT * FROM Students
INNER JOIN Info ON Students.id = Info.id
结果:
id | name | class | father | monther |
---|---|---|---|---|
5 | 张三 | 五班 | 张三妈 | 张三爸 |
7 | 李四 | 四班 | 李四妈 | 李四爸 |
3 | 王五 | 一班 | 王五妈 | 王五爸 |
以上就是INNER JOIN的内容,这个内容很常用,必须掌握,还有其它对应的两张表连接方式,也要好好掌握,只有掌握了这些,才算是掌握基本的SQLSERVER技术。加油,冲冲冲!