今天的MySQL数据操作与查询你会了吗?不会看这里,硬干货,一点通。

 

 

 

 

知识点一

交叉链接(笛卡尔积)

交叉连接(Cross Join),又称“笛卡尔连接(Cartesin Join)"或“叉乘(Product)" .它是所有类型的内连接的基础。

SQL语句如下:

select*from line CROSS JOIN vehicle 等价于: select *from lien vehicle

 

知识点2

内链接查询概要

内连接是应用程序中非常常见的连接操作,它-般都是默认的连接类型。内连接基于连接谓词,它将两张表(如A和B)的列组合在一起, 产生新的结果表。内连接查询会将A表的每- -行和B表的每- 行进行比较,并找出满足连接谓词的组合。当连接谓词被满足,A和B中匹配的行会按列组合(并排组合)成结果集中的一行。

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分3种:交叉连接、相等连接和自然连接。

SQL语句如下:

​
SELECT fieldlist FROM table1 [INNER] JOIN table2 ON table1 .column1= table2.column2
[where condition]

​

 

示例

使用内链接获取车辆型号含有‘DD’字样的车辆信息和司机信息

SQL语句如下:

select * from vehicle join driver on vehicle.driverID=driver.driverID where moderl like '%DD%'

 知识点3

 自然链接

自然连接(Natural Join)是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。在自然连接中两张表的所有名称相同的列都将被比较,并且在结果集中把重复的列去掉,结果集中两张表中名称相同的列仅出现一次。而普通的内连接并不去掉重复的列。(部分数据库不支持自然连接,如SQL Server等。)自然连接的语法如下: 

SELECT fieldlist FROM table1 NATURAL JOIN table2 
[where condition]

 示例

 使用自然链接获取客户“王传华”所有下单日期信息,要求显示客户姓名和下单日期。

select cName 姓名, ordersDate 下单日期 from customer natural join orders where cName='王传华'

 

 知识点4

多表链接查询

如果查询的信息来自多张表,则可以通过两两相连的方式建立多表链接查询。

语法:

SELECT fieldlist 
FROM table1 JOIN table2 
ON table1 .column1 =table2.column2_1 JOIN table3 on table2.column2_2= table3.column3 
[where condition]

 获取所有非空调车的车牌号、型号和司机姓名、所属线路的线路号、起点站和终点站信息


select name '司机姓名',plateNo '车牌号',model 型号,lineNo '线路号',from_station 起点站,end_ station 终点站 from vehicle v join driver d on V.driverID=d.driverID
join line l on v.linelD=l.lineID 
where type=' 非空调车;

 简单多表链接查询

 两表:

SELECT feldlist FROM table1, table2

WHERE table1.column1 =table2.column2 [and 其他条件]

三表:

SELECT feldlist 
FROM table1,table2,table3
where table1.column1=table2.column2_1 and table2.column2 2=able3.column3 [and 其他条件]

 示例:

(1)获取订单ID为4的订购明细信息,要求输出商品名、单价和件数。

(2)获取客户“王传华”所下订单详细信息,要求显示客户姓名、订单ID、下单日期、商品名、单价和件数。

select goodsName '商品名',unitPrice '单价',quantity '件数'
from orders o, ordersdetail 0d,goods g 
where o.ordersID=od.ordersID and od.goodsID=g.goodsID and o.ordersID=4

 

select o.ordersID '订单ID', ordersDate '下单日期',goodsName '商品名',unitPrice '单价',quantity '件数'
from customer c join orders o on c.customerID=o.customerID join ordersdetail od
on o.ordersID=od.ordersID join goodsID=g.goodsID
where cName='王传华'

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值