内连接
语法
SELECT fieldist
FROM table1 [INNER] JOIN table2
ON table1.column1=table2.column2
[WHERE condition]
查询后加条件字段,INNER可省略,必须要有from语句,from语句链接查询表on语句也是必须要有的这是链接表的关键where是条件语句
自然连接
自然连接是一种特殊的内连接,它要求相连的两张表的依据列必须是相同字段
select fieldlist
FROM table1 NATURAL JOIN table2 【where condition】
多表连接查询
如果查询的信息来源多张表,则可通过两两相连的反式建立多表连接查询。
SELECT fieldllist FROM table1 JOIN table2 ON
tabke1.column1=table.column2_1 JOIN table3 on
table2.column2_2=table.column3【where condition】
外连接
在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际血用中,如果秀望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。还分两种连接
SELECT字段名称FROM表名1 LEFT|RIGHT|FULL [OUTER] JOIN 表名2
ON 表名1.字段名1=表名2.字段名2`
左外连接
结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于表的列值为nullo
右外连接
结果集包括右表的所有记录和左表中满足连换条件的记象,结果集中那些不符合连接条件的来源于左表的列值为nullo。
使用多表连接的练习
1.获取所有非空调车的车牌号、型号和司机姓名、所属线路的线路号、起点站和终点站信息
SELECT
v.plateNO 车牌号,
v.model 型号,
d. NAME 司机姓名,
l.lineNo 线路号,
l.from_station 起点站,
l.end_station 终点站
FROM vehicle v join Driver d
on v.driverID=d.driverID
join line l
on v.lineID=l.lineID
WHERE
v.type = '非空调车'
2.获取公交二公司所有司机信息。要求输出司机姓名、身份证、性别和电话
SELECT
NAME 司机姓名,
licenseNO 身份证,
d.gender 性别,
phone 电话
FROM
vehicle v join Driver d
on v.driverID=d.driverID
join line l
on v.lineID=l.lineID
WHERE
company = '公交二公司'
3.查询所有非空调车的车牌号、型号、线路号、起点站和终点站
SELECT
v.plateNO 车牌号,
v.model 型号,
l.lineNo 线路号,
l.from_station 起点站,
l.end_station 终点站
FROM
vehicle v join Driver d
on v.driverID=d.driverID
join line l
on v.lineID=l.lineID
WHERE
v.type = '非空调车
4.显示所有线路及其所配车辆基本信息,并查询车辆所配司机相关信息,要求输出司机姓名、性别、电话、车牌号、型号、线路号、起点站和终点站(这里用到了多表查询,一开始还不理解后面等老师讲完就有点理解了)
SELECT
d.NAME 司机姓名,
licenseNO 身份证,
d.gender 性别,
phone 电话,
v.plateNO 车牌号,
v.model 型号,
l.lineNo 线路号,
l.from_station 起点站,
l.end_station 终点站
FROM
vehicle v join Driver d
on v.driverID=d.driverID
join line l
on v.lineID=l.lineID
WHERE
company='公交二公司'
5.获取订单 ID 为 4 的订购明细信息,要求输出商品名、单价和件数
SELECT
g.goodsName 商品名,
g.unitPrice 单价,
o.quantity 件数
FROM
ordersdetail o
JOIN goods g
where o.ordersID = 4
6.获取客户“王传华”所下订单详细信息,要求显示客户姓名、订单 ID、下单日期、商品名、单价和件数(打from语句是要特别注意orders和ordersdetail这两个表的另命名不要重复)
SELECT
c.cName 客户姓名,
o.ordersDate 下单日期,
g.goodsName 商品名,
g.unitPrice 单价,
od.quantity 件数
FROM
customer c join orders o
on c.customerID=o.customerID
join ordersdetail od
on o.ordersID=od.ordersID
join goods g
on od.goddsID=g.goodsID
WHERE
c.cName = '王传华'
7.使用左接获取所有客户的基本信息以及订购信息,要求输出客户姓名、电话、订单 ID 和下单时间
SELECT
c.cName 客户姓名,
c.phone 电话,
o.ordersID 订单ID,
o.ordersDate 下单时间
FROM
customer c
LEFT JOIN orders o on c.customerID=o.customerID;
8.使用右接获取所有客户的基本信息以及订购信息,要求输出客户姓名、电话、订单 ID 和下单时间。
SELECT
c.cName 客户姓名,
c.phone 电话,
o.ordersID 订单ID,
o.ordersDate 下单时间
FROM
orders o
right JOIN customer c on c.customerID=o.customerID;