2021-06-01

内连接

语法

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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值