mysql多表成绩查询_MySQL多表数据记录查询(一)
1.交叉連接SQL語句的語法結(jié)構(gòu)如下:
select * from表1 cross join 表2;
或
Select * from表1,表2;
2.內(nèi)連接SQL語句有兩種表示形式:
使用inner join 語法結(jié)構(gòu)如下:
Select表達(dá)式1,表達(dá)式2,...,表達(dá)式n
From表1 【inner】join 表2
On連接條件
【where過濾條件】;
或
使用where字句定義連接條件語法結(jié)構(gòu)如下:
Select表達(dá)式1,表達(dá)式2,...,表達(dá)式n
From表1,表2
Where連接條件【and過濾條件】;
主要參數(shù)說明:
表達(dá)式1,表達(dá)式2,...表達(dá)式n :表示為需要檢索的名稱或列名。
表1和表2 :是進(jìn)行內(nèi)連接的表名。
連接條件 :連接查詢中用來連接兩個表的條件。
一般格式是:表名1.字段名1 比較運(yùn)算符 表名2.字段名2
比較運(yùn)算符主要有:=,,>=,<=,當(dāng)比較運(yùn)算符為“=”時表示
等值連接,其他則為非等值連接
1:查詢學(xué)生表與成績表的交叉連接:
在庫db_school下創(chuàng)建tb_class、tb_student、tb_course、tb_score四張表
show databases;usedb_school;
show tables;select * from tb_student cross jointb_score;
或Select * from tb_student,tb_score;
2:查詢每個學(xué)生選修課程的情況:
Select tb_student.*,tb_score.* fromtb_student,tb_scoreWhere tb_student.studentNo=tb_score.studentNo;
或Select tb_student.*,tb_score.*bFrom tb_student inner jointb_scoreOn tb_student.studentNo=tb_score.studentNo;
3:查詢與“數(shù)據(jù)庫”這門課學(xué)分相同的課程信息:
Select c1.* //c1表示tb_course的別名//
From tb_course as c1,tb_course asc2Where c1.credit=c2.credit and c2.courseNa=’數(shù)據(jù)庫’;
或Select c1.*
From tb_course as c1 join tb_course asc2On c1.credit=c2.creditWhere c2.courseName=’數(shù)據(jù)庫’;
4:用自然連接查詢每個學(xué)生及其選修課程的情況,要求顯示每個學(xué)生學(xué)號、姓名、選修的課程號和成績;
Selecta.studentNo,studentName,courseNo,scoreFrom tb_student as a natural join tb_score as b;
注意:自然連接只有當(dāng)連接字段在兩張表中的字段名都相同才可以使用,否則返回的就是笛卡兒積的結(jié)果集!
5:使用左外連接查詢所有學(xué)生及其選修課程的情況,包括沒有有選修課程的學(xué)生,要求顯示學(xué)號、姓名、性別、班號、選修的課程號和成績:
向?qū)W生表中插入一條數(shù)據(jù):
Insert intotb_student bValues(‘2013310102’,’林海’,’男’,’19960118’,’北京’,’滿’,’IS1301’);
然后進(jìn)行左連接查詢:Selecta.studentNo,studentName,sex,classNo,courseNo,scoreFrom tb_student as a left outer join tb_score asbOn a.studentNo=b.studentNo;
6:使用右外連接查詢所有學(xué)生及其選修課程的情況,包括沒有有選修課程的學(xué)生,要求顯示學(xué)號、姓名、性別、班號、選修的課程號和成績:
SelectcourseNo,score,b.studentNo,studentName,sex,classNoFrom tb_score as a right outer join tb_student asbOn a.studentNo=b.studentNo;
連接查詢?
連接查詢是關(guān)系數(shù)據(jù)庫中重要的查詢方式,其包括交叉連接,內(nèi)連接和外連接。
什么是笛卡兒積?
就是沒有連接條件表關(guān)系返回的結(jié)果。
自連接和自然連接的區(qū)別?
自然連接操作就是表關(guān)系的笛卡兒積中,首先根據(jù)表關(guān)系中相同名稱的字段自動進(jìn)行記錄匹配,然后去掉重復(fù)的字段
等值與非等值連接的區(qū)別
一個選擇所匹配字段值相等的數(shù)據(jù)記錄一個不相等
連接條件及其格式是怎么樣的?
字段數(shù)據(jù)所要達(dá)成的效果,內(nèi)連接、外連接、交叉連接,自然連接、自連接,等值連接、不等連接,
左連接、右連接、全外連接
外連接根據(jù)連接表的順序分為幾種?它們有什么區(qū)別?
左?連?接:連接于第一個為主
右?連?接:連接于第二個為主
全外連接:除了選擇相匹配的數(shù)據(jù)記錄,還包含關(guān)聯(lián)左右兩邊表中不匹配的數(shù)據(jù)記錄
總結(jié)
以上是生活随笔為你收集整理的mysql多表成绩查询_MySQL多表数据记录查询(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iPhone14可以MagSafe无线充
- 下一篇: mysql索引命名规范_mysql使用规