mysql表連線sql表 MYSQL表連線查詢

2021-10-17 12:26:30 字數 3738 閱讀 7656

表連線查詢

一、交叉連線 - 笛卡爾積

​   查詢teacher和course表中所有的資料

​   select * from teacher,course;

​   select name,courseid,course.id,cname from teacher,course where teacher.courseid=course.id;

二、內連線

在關聯的兩張表中,把滿足條件的資料篩選出來

select 字段,... ...

from 表1

inner join 表2

on 條件

inner join 表3

on 條件

--使用內連線查詢teacher和course 表中的資料(姓名,年齡,課程名稱,課時)

selectt.name,t.age,c.cname,c.cdurationfrom teacher astinner join course ascon t.course_id=c.id;--查詢學員的姓名,年齡,所在班級名稱,專業名稱 並篩選出1902的學員

selects.name,s.age,c.classname,m.m_namefrom student assinner join classinfo ascon s.class_id=c.idinner join major asmon s.major_id=m.idwhere c.classname='1902';--查詢學員的姓名,畢業院校,所在班級,考試科目,考試成績

selects.name,s.school,c.classname,course.cname,sc.scorefrom student assinner join classinfo ascon s.class_id=c.idinner join score asscon s.id=sc.stu_idinner joincourseon sc.course_id = course.id;

三、外鏈結

1.左外鏈結

作用:(1)左表中所有的資料都會查詢出來(即便不滿足條件)

(2)將右表中滿足關聯條件的資料查詢出來

(3)關鍵不上的資料關聯欄位將以null作為填充(查詢哪些課程沒有老師去講 就用左外鏈)

語法:select 字

from a left join b

on 關聯條件

--左外鏈結,左表:course 右表:teacher--關聯條件:teacher.course_id=course.id--以左表為主 左表的id都顯示出來 查詢右表關聯資訊,未關聯到的資訊顯示為null,一般用來查詢null的值

select * fromcourseleft jointeacheron teacher.course_id =course.idwhere teacher.id is null;

​  2.右外鏈結

​   作用:1.右表中所有的資料都會查詢出來(即便不滿足條件)

2.將左表中滿足關聯條件的資料查詢出來

3.關鍵不上的資料關聯欄位將以null作為填充

​   語法:select 字段

from a right join b

on 關鍵條件

select * fromteacherright joincourseon teacher.course_id =course.idwhere teacher.id is null;

--練習:查詢沒有參加考試的學生

select student.name,score.score fromstudentleft joinscoreon student.id=score.stu_idwhere score.score is null;

四、子查詢

1.什麼是子查詢:將乙個查詢的結果作為外側操作的乙個條件出現

2.語法:select ... from 表名 where 條件=(select ...);

--查詢student表中比『李四』年齡大的學員的資訊

select * fromstudentwhere age>(select age from student where name='李四');

1 --練習:1、查詢考過『王老師』老師所教課程的學校的資訊

2 --方法1

3 select * from student where id in(4 select stu_id from score where course_id=(5 select course_id from teacher where name='王老師'

6 )7 );8 --方法2

9 selects.name,s.school10 from student ass11 inner join score assc12 on s.id =sc.stu_id13 inner join teacher ast14 on t.course_id=sc.course_id15 where t.name='王老師';16

17 --練習:2、查詢在score表中有成績的學員的資訊

18 select * from student where id in(select stu_id fromscore);19

20 --練習:3、查詢'python基礎'課程並且分數在80分以上的學員的姓名和學校

21 --方法1

22 select student.name,student.school from

23 student left joinscore24 on student.id =score.stu_id25 left joincourse26 on score.course_id =course.id27 where score>80 and cname='python基礎';28 --方法2

29 select name,school from student where id in(30 select stu_id from score where score>80 and course_id =(31 select id from course where cname='python基礎'

32 )33 );34

35 --練習:4、查詢和『張三』相同班級以及相同專業的同學的資訊

36 --方法1

37 select student.name,classinfo.classname,major.m_name from

38 student left joinclassinfo39 on student.class_id=classinfo.id40 left joinmajor41 on student.major_id=major.id42 where class_id=(select class_id from student where name='張三')43 and major_id=(select major_id from student where name='張三')44 and student.name!='張三';45 --方法2

46 selectstudent.name,classinfo.classname,major.m_name47 fromstudent48 inner joinclassinfo49 on student.class_id=classinfo.id50 inner joinmajor51 on student.major_id=major.id52 where class_id=(select class_id from student where name='張三')53 and major_id=(select major_id from student where name='張三')54 and student.name!='張三';

練習題

mysql表連線自己本身 mysql連線表本身

我遇到了這個問題,我希望它是可能的.我有乙個來自wordpress的表,用於儲存後元資料,因此無法更改列和字段資料 輕鬆 因此,表結構 post id meta key meta value 元鍵儲存欄位名稱和meta value,即該字段的值.我需要根據帖子id對這些進行分組,這樣我就可以在兩個字...

SQL表交叉連線

mssql文件中也叫交叉聯接.好比 a表裡面的a,b,c 查詢符合a x 條件的.b表裡面 d,e,f 查詢符合 d 1 語句 select a.a,a.b,a.c,b.d,b.e b.f from a,b where a.a x b.d 1 這個是錯的.錯在 怎麼改?把 where裡面的,改為an...

sql語句 連線表

cartesian join 笛卡爾連線 表1的每一行同表2的每一行結合做為一條記錄。這樣的查詢將返回 表1行數 x 表2行數 條記錄。這樣的連線沒有什麼使用者只是說明了所有連線是把表進行組合的。equi join 相等連線 一般用在表間有相同屬性的列。如有員工表和員工工資表,兩個表中都有員工號這一...