MySQL多表查询-学习笔记

交叉连接
1. 集合:无序性、唯一性
两个集合的元素相乘,成为笛卡尔积
设集合A有M个数据,M个数据各不相同
集合B有N个数据,N个数据各不相同
笛卡儿积:MN
表A有9行,表B有10行,笛卡儿积为90行
等值连接
2(1)得到两个2表的笛卡儿积,表之间用逗号或者join或者cross join
select * from student,classinfo;
(2)得到两个表的连接条件,添加筛选条件
select * from student ,classinfo
where student.cid=classinfo.cid;
(3)显示列
若是字段重复,要用表名.列名,不重复直接写列名
连接n个表,至少需要n-1个连接条件
(4)确定其他条件
内链接
Select <列名> from 表1 inner join 表2
On 表1.列名 条件运算符 表2.列名
条件运算符 = <> > < >= <=
SELECT stuid,name,student.cid,cname from
student inner join classinfo
on student.cid=classinfo.cid
where name=‘jim’;
– 查询张三java的考试成绩,显示学生姓名,科目名,成绩名,班级名
– 1.把表连成大表(一个表一个表的连接)
select name,subname,socre,cname from student inner join classinfo
on student.cid=classinfo.cid
INNER JOIN score
ON student.stuid=score.stuid
INNER JOIN subject
on score.subid=subject.subid
where name=‘张三’ and subname=‘java’;
外连接
左外连接
Select * from table_A left join table_b on 连接条件
左外连接
以左表为准去右表找匹配的数据,如果找不到用null填充
右外连接
以右表为准去左表找匹配的数据,如果找不到用null填充
内链接:左表和右表的交集,如果匹配成功显示,匹配不成功,不显示
左右链接可以相互转换,可以把左连接转成右链接
以后建议用左连接代替右链接,因为数据库不支持右链接
AS的使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值