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的使用

猜你喜欢

转载自blog.csdn.net/mtx188/article/details/83545625