1. 程式人生 > >MySQL多表查詢-學習筆記

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