「 MySQLDay2连接查询」

MySQL 连接查询

1-分类

sql语句可以被分类成为,92标准与99标准,异同在于连接查询的关键字

出现问题的地方在于:多表连接查询时出现的笛卡尔乘积,将所以满足的信息进行排列组合;

解决方法:添加有效的连接条件(等值、非等值)…

2-sql92

-- 等值连接 语法格式如下
SELECT 
	关键字
FROM 
	表名1, 表名2
WHERE1.key AND2.key
GROUP BY
	分组字段
HAVING
	二次分类条件
ORDER BY
	排序字段;

需要注意的是:WHERE 与GROUP BY二者,对应着排序前查询于排序后查询,HAVING后是指原表中不存在的字段进行筛选,WHERE后的条件是指已经存在表中的字段

特点:

  • 表的顺序可以调换
  • 一般为表起别名
  • 等值连接的结果为两个表的交集

同样的,非等值连接与等值连接差别只在于WHERE后的判断方式采用非等值进行判断,例如区间判断。

对于自连接,意为将一张表中的字段当作条件进行判断,语法与等值连接差别不大,异同在于FROM关键字后,是可以添加两张相同的表(可以为两张相同表起不同的名字)。

3-sql99

sql92中出现的连接只有1种:

  • 内连接(内连接等值连接、非等值连接、自连接)

sql99中出现的连接有3种:

  • 内连接(内连接等值连接、非等值连接、自连接)
  • 外连接(左外,右外、全外不支持)
  • 交叉连接
-- 连接语法
SELECT 
	查询字段
FROM
	表1
LEFT|RIGHT|INNER|CROSS JOIN
	表2
ON 
	连接条件
WHERE
	筛选条件
GROUP BY
	分组字段
ORDER BY
	排序关键字
LIMIT 
	子句;

外连接中,又分为主表与从表,

  • 左外连接返回结果为主表所有记录+右表符合条件的连接字段+左表无法与右表匹配时的NULL;
  • 右外连接与左外连接类似
  • 内连接使用关键字INNER进行连接,可以求出表的交集
  • 交叉连接得到的结果为笛卡尔乘积,用的较少。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值