MySQL 数据操作 查询之多表查询

MySQL 数据操作 查询之多表查询

连接查询
/*
含义:又称多表查询,当查询的字段来自于多个标识,就会用到连接

笛卡尔乘积 表1 有m行,表2 有n行,结果=m*n行
发生的原因:没有添加有效的连接条件
解决方法:添加有效的连接条件

分类:
按年代:
sql92(仅仅支持内连接)
sql99【推荐】除了全外连接,都支持

按功能:
	内连接
		等值连接
		非等值连接
		自连接
	外连接
		左外连接
		右外连接
		全外连接
	交叉连接

*/

#创建两个表
CREATE TABLE beauty(
	id INT,
	NAME VARCHAR(10),
	sex CHAR(1),
	boyfriend_id INT
)
CREATE TABLE boys(
	id INT,
	boyName VARCHAR(10),
	userCP INT
)
INSERT INTO beauty() VALUES(1,'柳岩','女',NULL),(2,'苍老师','女',NULL),(3,'Angelababy','女',3),(4,'热巴','女',2),(5,'周冬雨','女',NULL),
(6,'周芷若','女',1),(7,'岳灵珊','女',NULL),(8,'小昭','女',1),(9,'双儿','女',NULL),(10,'王语嫣','女',4),(11,'夏雪','女',NULL),
(12,'赵敏','女',1);
INSERT INTO boys() VALUES(1,'张无忌',100),(2,'鹿晗',800),(3,'黄晓明',50),(4,'段誉',300);
SELECT * FROM beauty;
SELECT * FROM boys;

SELECT NAME,boyName FROM beauty,boys;

SELECT
  NAME,
  boyName
FROM
  beauty,
  boys
WHERE beauty.`boyfriend_id` = boys.`id`

#一.sql92
#1.等值连接
/*
1.多表等值连接的结果为多表的交集部分
2.n表连接,至少需要n-1个连接条件
3.多表的顺序没有要求
4.一般需要为表起别名
5.可以搭配前面介绍的所有字句,比如排序,分组,筛选
*/
#案例1:查询女神名和对应的男神名

SELECT NAME,boyName
FROM beauty,boys
WHERE boyfriend_id=boys.`id`
#limit 0,3

#2.非等值连接 把条件换为不是=就行

#3.自连接 相当于等值连接,自己连接自己(在一个表中)

#二。sql99
/*
语法
select 查询列表
from 表一 别名 连接条件
join 表二 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选列表】
【order by 排序列表】

内连接 inner
外连接
左left outer
右right outer
全外 full outer
交叉连接 cross
*/

#一.内连接
/*
语法:
select 查询列表
from 表一 别名
inner join 表二 别名
on 连接条件

分类:
等值
非等值
自连接
特点:
1.可以添加排序,分组,筛选
2.inner可以省略
3.筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读
*/

SELECT b.`name`,s.`boyName`
FROM beauty b
INNER JOIN boys s
ON b.`boyfriend_id`=s.`id`

#二.非等值连接
#三.自连接

#1.外连接 用于查询一个表有,另一个表中没有

#按例1:查询没有男朋友的女神的信息

SELECT * FROM beauty LEFT JOIN boys ON beauty.`boyfriend_id`=boys.`id` WHERE boys.`id` IS NULL ORDER BY beauty.id ASC;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值