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

原文地址:https://www.cnblogs.com/LeeSki/p/12303907.html

时间: 2024-10-08 18:15:23

SQLServer学习(多表连接查询)(四)的相关文章

SQLServer学习笔记<> 表连接查询----交叉连接、内连接、左连接、右连接

(1)交叉连接(cross join)即我们所说的笛卡尔积.查询出满足两张表所有的记录数,A(3条记录),B(9条记录),A*B(27条记录). 比如:雇员表(HR.employees)和货运公司(Sales.shippers)表做一个交叉连接. 1 select * from hr.employees; 2 select * from sales.shippers; 进行交叉连接以后,则找到27条记录. 1 select a.empid,b.shipperid 2 from hr.employ

MySql数据库再学习——简述多表连接查询的自我理解

一:序 这几天在学习数据库部分,因为在学校听课也是比较迷糊,经过学习之后感觉现在思路比较清楚,对于多表连接查询操作有了一个新的认识. 二:假设 假设现在有两个表 :A ,B. 三:两表之间的连接方式 两个表的连接方式分为,内,外,交叉三种. 内连接的查询方式又分为隐式和显式两种. 外连接的查询方式又分为左,右两种. 交叉是将两个表的记录做乘积,因为得到的记录很大程度上没有直接联系,所以交叉连接查询基本没什么意义. 四:内连接 内连接的关键词:inner join...(inner可以省略) 隐式

(MYSQL学习笔记2)多表连接查询

3种连接方式的区别: INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录. RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录. 3个表连接查询,语句如下: SELECT a.YHID,a.TDID,b.YHMC,b.YHZH,c.TDMC FROM (km_tdcy a LEFT JOIN km_xtyh b ON a.YHID=b

SQL多表连接查询(详细实例)

转自: http://www.dedecms.com/knowledge/data-base/sql-server/2012/0709/2872.html 本文主要列举两张和三张表来讲述多表连接查询.新建两张表:表1:student  截图如下:表2:course  截图如下:(此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.)一.外连接外连接可分为:左连接.右连接.完全外连接.1.左连接  left join 或 left oute

Mysql 表连接查询

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

010.简单查询、分组统计查询、多表连接查询(sql实例)

-------------------------------------day3------------ --添加多行数据:------INSERT [INTO] 表名 [(列的列表)] --SELECT UNION --SELECT 'HAHA',1,32--UNION ALL --全部显示/显示重复数据 即使集合相同--UNION---------将查询的两个结果集合并.结构必须一致 -->常见面试题 --SELECT 'HEHE',2,33------将查询结果添加到列表中(子查询)IN

SQL多表连接查询

SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中不会这样建表,实际开发中这两个表会有自己不同的主键.) 一.外连接 外连接可分为:左连接.右连接.完全外连接. 1.左连接  left join 或 left outer join SQL语句:select * from student left join course on student.

MySQL多表连接查询

多表连接查询: create table class( cid int primary key auto_increment, cname varchar(20) )default charset='utf8'; create tablr stu( sid int primary key auto_increment, sname varchar(20). cid int );default charset='utf8'; insert into class(name) values('一班')

数据库多表连接查询的实现方式

数据库多表连接查询的实现方式 连接查询是关系数据库中最主要的查询,主要包括自连接.内连接.外连接和交叉连接.通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中.当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息.连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型.为不同实体创建新的表,然后通过连接进行查询. 内连