SQL数据库语言基础之SqlServer多表连接查询与INNER JOIN内连接查询

一、简单连接查询

1、直接连接:无连接规则连接两表,得到的是两个表的笛卡尔积。

  • 连接后的行数=表1行数*表2行数
  • 连接后的列数=表1列数+表2列数
    原表:
    1.1
    直接连接查询后就会得11列,30行的数据。
SELECT * FROM STU,COU

SELECT * FROM STU
SELECT * FROM COU

注意:这中直接连接一般都不会用,因为连接后的数据是没有规律的,是简单粗暴地结合在一起的,因此很难得到有效信息。

2、有连接规则连接两表:使用WHERE语句设定条件
(1)查询所有学生的学生信息和家庭作业信息(等值连接):

SELECT * 
FROM STU,HOMEWORKS 
WHERE STU.SNO=HOMEWORKS.H_SNO

2.1
(2)查询所有学生的学生名字和家庭分数(等值连接):

SELECT STU.SNAME,HOMEWORKS.H_SCORE_1,HOMEWORKS.H_SCORE_2,HOMEWORKS.H_SCORE_3
FROM STU,HOMEWORKS
WHERE STU.SNO=HOMEWORKS.H_SNO

2.2
3、表别名简化语句

SELECT a.SNAME,b.H_SCORE_1,b.H_SCORE_2,b.H_SCORE_3
FROM STU a,HOMEWORKS b
WHERE a.SNO=b.H_SNO

就是直接在FROM的表名后面加上名字,需要注意的是,起完别名后,在SELECT和其他语句中只能用别名了,不能使用原名。
当表名很长或者很复杂的时候,别名是个很好用的方法,可以很好地简化语句。

二、多表连接查询

就是连接多个表,方法和两个表连接类似,只是需要加多个等值条件
1、连接多表实例: 查询 张一 的所有选课及各个选课的成绩:

SELECT S.SNAME, C.C_COURSE_NAME, H.H_SCORE_1, H.H_SCORE_2, H.H_SCORE_3
FROM STU S, COU C, HOMEWORKS H
WHERE S.SNO=H.H_SNO AND C.CNO=H.H_CNO AND S.SNAME='张一'

2.1

2、分析:
需要连接3个表,然后需要确定这3个表的连接条件,即为学号与课程号,分别为其中两个表的主键,通过主键对应的外键进行与另外一个表的连接。并且在WHERE中需要添加一个查询条件,也就是名字为“张一”。

三、INNER JOIN 内连接查询

1、inner join说明
也就是连接查询的典型连接规则,将两个表或两个以上的表以一定的连接条件连接起来,从中检索出满足条件的数据。

2、连接查询实例练习
(1)与使用WHERE的连接规则一样,不过INNER是放在FROM中的:

--直接使用WHERE
SELECT * 
FROM STU,HOMEWORKS 
WHERE STU.SNO=HOMEWORKS.H_SNO AND STU.SNAME='张一'

--使用JOIN内连接
SELECT *
FROM STU INNER JOIN HOMEWORKS ON STU.SNO=HOMEWORKS.H_SNO
WHERE STU.SNAME='张一'

2.2.1

(2)还是上面的例子:查询 张一 的所有选课及各个选课的成绩(三表连接,直接使用多个INNER JOIN):

--使用WHERE
SELECT S.SNAME, C.C_COURSE_NAME, H.H_SCORE_1, H.H_SCORE_2, H.H_SCORE_3
FROM STU S, COU C, HOMEWORKS H
WHERE S.SNO=H.H_SNO AND C.CNO=H.H_CNO AND S.SNAME='张一'

--使用JOIN内连接
SELECT S.SNAME,C.C_COURSE_NAME,H.H_SCORE_1,H.H_SCORE_2,H.H_SCORE_3
FROM STU S JOIN HOMEWORKS H ON S.SNO=H.H_SNO
	INNER JOIN COU C ON C.CNO=H.H_CNO  
WHERE S.SNAME='张一'

2.2.2

3、注意
(1)select … from A join B on …和select … from B join A on …查询结果本质上一样,都是内连接。
(2)inner join 可以简写为 join,也称为内连接。

  • 12
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
内连接多表查询可以使用INNER JOIN关键字来实现。在查询语句中,需要连接多个表,并确定连接条件。连接条件通常是两个表之间的主键和外键的对应关系。同时,可以在WHERE子句中添加其他查询条件来筛选结果。 例如,如果我们有三个表A、B和C,需要连接它们并查询学号为"张一"的记录,可以使用以下语法: SELECT 字段 FROM A INNER JOIN B ON A.学号 = B.学号 INNER JOIN C ON B.课程号 = C.课程号 WHERE A.姓名 = "张一"; 在这个例子中,我们使用INNER JOIN关键字连接了三个表A、B和C,分别通过学号和课程号进行连接。然后,在WHERE子句中添加了一个条件,筛选出姓名为"张一"的记录。 需要注意的是,INNER JOIN可以简写为JOIN,它们是等价的。内连接查询可以帮助我们从多个表中获取相关的数据。 #### 引用[.reference_title] - *1* *2* [SQL数据库语言基础SqlServer多表连接查询INNER JOIN内连接查询](https://blog.csdn.net/Viewinfinitely/article/details/121451783)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [017 INNER JOIN ON 多表连接查询语句](https://blog.csdn.net/test253506088/article/details/116504330)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鸿蒙Next

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

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

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

打赏作者

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

抵扣说明:

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

余额充值