SQL-Server学习笔记05-T-SQL查询之连接查询

连接查询

根据两个或多个表之间的关系,实现多表查询;主要有内连接、外连接、全连接、交叉连接。

准备工作:学生信息表,教师信息表,课程表,学生成绩表(见笔记02)

一、内连接查询

inner join 表名 on 关联条件

--查询本次考试有语文成绩的学生信息及语文成绩
--显式写法
select s.s_id as '学生ID', s.s_name as '学生姓名', s_score
from student s
inner join score sc on s.s_id=sc.s_id and sc.c_id=1

--隐式写法
select s.s_id as '学生ID', s.s_name as '学生姓名', s_score
from student s,score as sc
where s.s_id=sc.s_id and sc.c_id=1

知识点:

s.s_id as '学生ID'--as后面跟着别名,as可省略,也可写成'学生ID'=s.s_id,底下student s也是别名,可以加as,但是不能写成等号形式。给表命名别名是为了区分不同表的相同名称的列。

拓展训练:查询本次语文成绩大于数学成绩的学生信息及语文和数据的成绩

二、外连接查询

1、左/右连接:left/right (outer) join 表名 on 关联条件 --返回左/右表所有行,右/左表如无数据的显示null

2、全连接:full (outer) join --返回左、右表所有行,右、左表如无数据的显示null

--查询所有学生的成绩
select * from student s
left outer join score sc on s.s_id=sc.s_id  --outer可省略

3、交叉连接:cross join --又称笛卡尔积,如果不带where子句,返回两个表行数乘积的行数;如果带where子句,结果等价于inner join。

select s.s_id as '学生ID', s.s_name as '学生姓名', s_score
from student s
cross join score sc where s.s_id=sc.s_id and sc.c_id=1

结果与内连接的案例一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值