查询的分类:
1.内连接查询
#交叉连接CROSS JOIN没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积
2.多表连接查询
#内连接就是两个表的交集 ,左外连接就是左边表加两表交集 ,右外连接就是右边表加两表交集
3.外连接查询
#左外连接:LEFT OUTER JOIN或LEFT JOIN
#右外连接:RIGHT OUTER JOIN或RIGHT JOIN
4.连接查询综合运用
查询的语法:
1.内连接查询
select * from line CROSS JOIN vehicle 或者 select * from line ,vehicle
例如:实现路线表与车辆表笛卡尔积如下图所示
2.多表连接查询
如果查询的信息来源于多张表,则可通过两两相连的方式建立多表连接查询。
例如:车牌号和型号来源于车辆表;司机姓名来源于司机表;线路号、起点站和终点站来源于线路表,因而需要连接3张表:车辆表、司机表和线路表,SQL 语句如下
select name 司机姓名,plateNo 车牌号,model 型导,lineNo 线路号,from_station 起点站 end_station 终点站 from vehicle V join Driver D on V.driverlD=D.driverlD join line L on V. linelD=LlinelD where type=' 非空调车
3.外连接查询
SELECT 字段名称 FROM 表名1 LEFTIRIGHTIFULL JOUTERI JOIN 表名2 ON 表名 1. 字段名 1= 表名 2.字段名 2
#左外连接:LEFT JOIN
例如: 由于需要显示所有的非空调车,所以只能外连接。如果将车辆表vehicle作为连报左表,线路表line作为右表则该连接为左外连接。具体的 SQL 语句如下:
select plateno 主牌, model g, tineno s 线路, roistation t 起点站, and station se from vehiclo v left join line t on v linetDalneld where type” 非空汽车
#右外连接:RIGHT JOIN
右外连接是左外连接的反向连接 。
例如:由于需要显示所有的线路信息,所以只能外连接。如果车锅表 vehicle作为连报在表,钱络表ine作为有表。则该连接为右外连接。具体的 SQL 语句如下:
select plateNo 车牌号,model 型号,lineNo 线路号, from_station 起点站,end_station 终点站 from vehicle v right join line L on V.linelD=LlinelD
4.连接查询综合运用
综合使用连接查询,聚合函数和分组查询,可以实现很多复杂的查询需求。
例如:(1)由于需要显示所有的线路信息,所以只能外连接。如果车锅表 vehicle作为连报在表,钱络表ine作为有表。则该连接为右外连接。具体的 SQL 语句如下:
select plateNo 车牌号,model 型号,lineNo 线路号,from_station 起点站,end_station 终点站 from vehicle v right join line L on V.linelD=LlinelD where type='非空调车'
统计每件商品的销售数量和销售金额
(2)需要连接订单表、订单明细表、商品表和客户表,具体的 SQL语句如下:
select o.orderslD 订单ID,o.ordersDate 下单日期 ,sum(od.quantity*g unitPrice) 订单金额
c.cName 客户名 from orders o,ordersdetail od,goods g,customer c where o.orderslD=od.ordersid and od goodslD=g.goodslD and o.customerlD=c.customerlD group by o.ordersld order by 下单日期,订单金额 desc
计算订单金额
就是这么简简单单!今天的你学会了吗?快去试试看吧!!!