第7章:连接查询
连接查询的语法如下:
select 字段列表 from 表1 join 表2 on 表1.字段名1=表2.字段名2
join 表3 on 表2.字段名2=表3.字段名3
[where<条件表达式>]
第一大题
第一问:
获取所有非空调车的车牌号、型号和司机姓名、所属线路的线路号、起点站和终点站信息
select name 司机姓名,plateNo 车牌号,model 型号,lineNo 线路号,from_station 起点站,end_station 终点站
from vehicle v inner
join driver d
on v.driverID =d.driverID
inner join line l
on v.lineID=l.lineID
where type='非空调车';
运行结果如下:
第二问:
获取公交二公司所有司机信息。要求输出司机姓名、身份证、性别和电话;
select name 司机姓名,licenseNo 身份证,gender 性别,phone 电话
from vehicle v inner join driver d
on v.driverID=d.driverID
join line l
on v.lineID=l.lineID
where company='公交二公司';
运行结果如下:
第三问:
查询所有非空调车的车牌号、型号、线路号、起点站、终点站;
select plateNo 车牌号,model 型号,lineNo 线路号,from_station 起点站,end_station 终点站
from vehicle v
left join line l
on v.lineID=l.lineID
where type='非空调车';
运行结果如下:
第四问:
显示所有司机基本信息,并查询其所驾驶车辆和行驶线路的相关信息,要求输出司机姓名、性别、电话、车牌号、型号、线路号、起点站、终点站;
select name 司机姓名,gender 性别,phone 电话,plateNo 车牌号,model 型号,lineNo 线路号,from_station 起点站,end_station 终点站
from driver d
left join vehicle v
on d.driverID=v.driverID
left join line l
on v.lineID=l.lineID;
运行结果如下:
第二大题
第一问:
获取订单ID为4的订购明细信息,要求输出商品名、单价和件数;
select goodsName 商品名,unitPrice 单价,quantity 件数 from
orders o,ordersdetail od,goods g
where o.ordersID=od.ordersID and
od.goodsID=g.goodsID and
o.ordersID=4;
运行结果如下:
第二问:
获取客户“王传华”所下订单详细信息,要求显示客户姓名,订单id、下单日期、商品名、单价和件数。
select o.ordersID 订单ID,ordersDate 下单日期,goodsName 商品名,unitPrice 单价,quantity 件数
from customer c,orders o,ordersdetail od,goods g
where c.customerID=o.customerID and
o.ordersID=od.ordersID and
od.goodsID=g.goodsID and
cName='王传华';
第三问:
使用左外连接获取所有客户的基本信息以及订购信息,要求输出客户姓名、电话、订单ID和订单时间;
select cName 姓名,ordersID 订单ID,ordersDate 下单日期 from
customer c left join orders o on
c.customerID=o.customerID;
第四问:
使用左外连接获取所有客户的基本信息以及订购信息,要求输出客户姓名、电话、订单ID和订单时间;
select cName 姓名,ordersID 订单ID,ordersDate 下单日期 from
customer c right join orders o on
c.customerID=o.customerID;