初学者总结的连接查询!!!
Posted 焉小馒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学者总结的连接查询!!!相关的知识,希望对你有一定的参考价值。
内连接、外连接、左连接、右连接、全连接
- 内连接
-
查询信息的来源如果是来自多张表,就必须对这些表进行一个连接查询。连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。连接查询分为内连接和外连接。
语法:select fieldlist FROM table1 [INNER] JOIN table2 ON table1.column1=table2.column2 [WHERE 条件表达式]
(1)fieldlist:table1表和table2表中的字段列。如果fieldlist取两张表所有列,则可用“*”代替,此时会出现连接依据列重复,即table1表的column1与table2表的column2为重复列。
(2)table1 JOIN table2:将table1表与table2表进行内连接,INNER 可省略。
(3)table1.column1=table2.column2:连接条件,其中column1和column2为table1表与table2表的关联列,通常它们为外键列和主键列。
(2)table1 JOIN table2:将table1表与table2表进行内连接,INNER 可省略。
(3)table1.column1=table2.column2:连接条件,其中column1和column2为table1表与table2表的关联列,通常它们为外键列和主键列。
(4)INNER:可省略
2.左连接(左外连接)
在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记录,还包含左表或右表或左右表中所有的数据记录。
语法:SELECT 字段名称
FROM 表名 1 LEFT|RIGHT|FULL [OUTER] JOIN 表名 2
ON 表名 1.字段名 1= 表名 2.字段名 2
- OUTER:可省略
- 用左外连接的结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于右表的列值为 null。
- 查询所有非空调车的车牌号、型号、线路号、起点站和终点站。
示例: select plateNo 车牌号 , model 型号 , lineNo 线路号 , from_station 起点站 , end_station 终点站 from vehicle V left join line L on V.lineID=L.lineID where type=' 非空调车 ';
3.右连接(右外连接)
右外连接是在左外连接的反向连接。右外连接的结果集包括右表中的所有记录和左表中满足连接条件的记录,结果集中那些不符合连接条件的来源于左表的列值为 null。
- 查询所有线路的车辆信息,要求显示车牌号、型号、线路号、起点站和终点站
示例: select plateNo 车牌号 , model 型号 , lineNo 线路号 , from_station 起点站 , end_station 终点站 from vehicle V right join line L on V.lineID=L.lineID
4.综合连接
用综合使用连接查询、聚合函数和分组查询可以实现很多复杂的查询所需的要求。
- 需要连接订单表、订单明细表、商品表和客户表。
示例:
select o.ordersID 订单 ID,o.ordersDate 下单日期 ,sum(od.quantity*g.unitPrice) 订单金额 ,
c.cName 客户名
from orders o,ordersdetail od,goods g,customer c where o.ordersID=od.ordersID and od.goodsID=g.goodsID and o.customerID=c.customerID
group by o.ordersID
order by 下单日期 , 订单金额 desc
以上是关于初学者总结的连接查询!!!的主要内容,如果未能解决你的问题,请参考以下文章
初学 go 入门-案例-教程-记录(13)orm 框架 Gorm 简单案例 - 连接sqlserver,并查询数据