SQLServer学习(多表连接查询)
Posted ZedFFF
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer学习(多表连接查询)相关的知识,希望对你有一定的参考价值。
(1)双表内部连接查询
①在where中指定内部连接的条件(这种写法使用的很少)
SELECT WorkNo,Name,DeptName,SignImg FROM S_A_User,S_A_UserImg WHERE S_A_User.ID=S_A_UserImg.UserID ORDER BY DeptName,Name
②在from中指定内部连接的条件(推荐使用)
SELECT WorkNo,Name,DeptName,SignImg FROM S_A_User INNER JOIN S_A_UserImg on S_A_User.ID=S_A_UserImg.UserID ORDER BY DeptName DESC,Name
总结:
(2)多表连接查询
③对表定义别名进行查询
使用方法:在表名后面空格 然后写上别名即可,注意:使用了别名就不能再使用原表名
SELECT u.WorkNo,u.Name,u.DeptName,r.Name FROM S_A_User u INNER JOIN S_A__RoleUser ru ON ru.UserID=u.ID INNER JOIN S_A_Role r on r.ID=ru.RoleID
根据用户表、用户角色表、角色表查出所有用户的角色
(3)外部连接查询
①左外连接查询:是将最左侧的表作为主表,而右侧的表作为从表,主表的所有记录都会显示出来,而从表只有匹配到主表的记录才会显示出来,没有记录的字段值显示为null;
写法:其实就是将inner join中的inner 换成left (注意:在某些数据库中,left join 也写成 left outer join)
SELECT u.Name,u.WorkNo,ui.SignImg FROM S_A_User u LEFT JOIN S_A_UserImg ui ON u.ID=ui.UserID
②右外连接
SELECT u.NAME,u.WorkNo,ui.UserID FROM S_A_User u RIGHT JOIN S_A_UserImg ui ON u.ID=ui.UserID
③完全外连接:两张表都是主表,全部的数据都显示出来
SELECT u.NAME,u.WorkNo,ui.UserID FROM S_A_User u FULL JOIN S_A_UserImg ui ON u.ID=ui.UserID
④交叉连接:
SELECT u.NAME,u.WorkNo,ui.UserID FROM S_A_User u CROSS JOIN S_A_UserImg ui
总结:
备注:SQL中各种连接的用法:https://www.cnblogs.com/jepson6669/p/9425491.html
End
以上是关于SQLServer学习(多表连接查询)的主要内容,如果未能解决你的问题,请参考以下文章
SQL数据库语言基础之SqlServer多表连接查询与INNER JOIN内连接查询