手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

如何实现查询sql左边表全部

时间:2024-10-14 10:49:51

1、我们用sqlserver作为测试,创建学生、教师、班级三张表。每张表都有一个id,int类型的(自增长),作为每个表的主键。

如何实现查询sql左边表全部
如何实现查询sql左边表全部

2、添加测试数据,并创建班级与学生、教师与班级的中间表。insert into dbo.Student(Sname) values('张三'),插入多条,由于id自增长所以sid自动填充了。类似将教师和班级也添加上测试数据。

如何实现查询sql左边表全部

3、创建班级教师表Class_Teacher,班级学生表Class_Student

如何实现查询sql左边表全部

4、然后将1和2 放到1班,3和4放到2班。5和6 不放(可以理解为刚入学没有分配班级)。然后将3个老师分配到3个班级insert into dbo.Class_Teacher values (1,1)insert into dbo.Class_Teacher values (2,2)insert into dbo.Class_Teacher values (3,3)

如何实现查询sql左边表全部

5、这样,1班和2班各有迷撞笸痉两名同学,3班没有同学,有两个同学没有分配班级,每一个老师都分配了班级。现在要查询所有班级学生情况。select t1.ClassName,t3.Sn锾攒揉敫amefrom Class t1 inner join dbo.Class_Student t2 on t1.ClassId = t2.CIDinner join dbo.Student t3 on t2.[SID] = t3.[SID]

如何实现查询sql左边表全部

6、我们要查询学生和老师的关系就比较复杂,因为学生和教师没有直接关系,需要通过班级进行对应。select t1.ClassName,t4.Tname,t5.Sname fromClass t1 inner join dbo.Class_Student t2 on t1.ClassId = t2.CIDinner join dbo.Class_Teacher t3 on t3.CID = t1.ClassIdinner join dbo.Teacher t4 on t4.TId = t3.TIDinner join dbo.Student t5 on t5.[SID] = t2.[SID]

如何实现查询sql左边表全部

7、但是我们看到的结果始终少两个学生的信息,怎么样才能显示所有学生的信息呢。我们使用left join。select t1.*,t2.* fromStudent t1 left join Class_Student t2 on t1.[SID] = t2.[SID]

如何实现查询sql左边表全部

8、可以看到左边表全部显示,没有对应记录的地方为NULL,既然有left join,也会有right join。select t1.*,t2.* fromClass_Student t2 right join Student t1 on t1.[SID] = t2.[SID]效果类似。

如何实现查询sql左边表全部
© 手抄报圈