MySQL學習 多表查詢和連線查詢

2021-09-23 05:49:57 字數 2257 閱讀 9222

上節學習了查詢的一些高階操作,算是入門了對資料庫的初級查詢使用。本節在回顧並練習上節習題的基礎上,學習剩下的兩種查詢內容。

多表查詢select * from 《表1>,《表2>

這種多表查詢又叫笛卡爾查詢,要小心使用,因為其結果是在各個表查詢到的記錄量的乘積。

實際上也就是把兩個表或者多個表的記錄排列組合在一起。但是不同的表可能會有相同的欄位名,如id欄位。這時候就可以給相同的字段起別名來避免這種情況,使用投影查詢的命名方式,如select student.id sid ........ from students,classes;。因為要逐個輸入表名.欄位也是相當麻煩,所以可以使用表的簡寫:select s.id ........... from students s, classes c;

多表查詢後面也能跟where語句來限制顯示的記錄,如用c.id=1 and s.gender='m'來顯示。其實我雖然理解了多表查詢的顯示內容和實現方法,但是不懂它有什麼意義,如果不根據一些聯絡,只是把多個表湊在一起結合顯示好像沒有什麼意思。等後面再思考解決這個問題。

連線查詢from 《**1> inner join 《**2> on 連線關係

連線查詢對多個表進行join、運算。簡單地說,就是先確定乙個主表作為結果集,然後,把其他表的行有選擇性地「連線」在主表結果集上。這是一種非常有用的查詢,在多表之間的互動中很有用,查詢關聯資訊並且把關聯結果生成新錶,但是這裡沒有說後續的內容,只有查詢,咱先拿下怎麼查的:

先確定主表,仍然使用from 《表1>的語法;

再確定需要連線的表,使用inner join 《表2>的語法;

然後確定連線條件,使用on 《條件...>

可選:加上where子句、order by等子句。

舉例說明:我們的兩個表students和classes如下

表students中班級沒有名稱,而根據表classes中的id和表students中的class_id對應可以將表students中的班級名稱填充上:

inner join外,還有:

right outer join:列出右表都存在的記錄,沒有的字段用null填充

left outer join列出左表都存在的記錄,沒有的字段用null填充

full outer join列出兩個表都存在的記錄,沒有的字段用null填充

舉例顯示根據班級id的連線查詢(四班沒有學生,新生在的五班沒有班級名稱資訊):

學習感悟:今天終於把這些查詢方式都學完了,後續還需要勤加練習,不過應該不需要專門練習,在學習後續內容的過程中自然會多多的使用。總體瀏覽了一下簡單的教程,也是包括兩大部分:查詢和修改,其中修改的內容量還要少於查詢。另外還要包含一些資料庫的管理命令。總之,資料庫沒有我想象中的那麼複雜和困難,使用起來也是簡單方便,不過要想熟練地運算元據庫,乃至於後面的自主構建資料庫還有很長的路要走,加油~~

mysql多表連線查詢

查詢姓名 部門名 地點 select emp.ename dept.dname,dept.loc from emp,dept where emp.deptno emp.deptno 簡化select ename dname,loc,emp.deptno from emp,dept where emp...

MySQL 連線查詢(多表查詢)

mysql 連線查詢 多表查詢 連線就是指兩個或2個以上的表 資料來源 連線起來成為乙個資料來源 實際上,兩個表的完全的連線是這樣的乙個過程 左邊的表的每一行,跟右邊的表的每一行,兩兩互相 橫向對接 後所得到的所有資料行的結果。注意 連線之後,並非形成了乙個新的資料表,而只是一種 記憶體形態 fro...

MySQL多表查詢(內連線和外連線)

新建兩張表a table和b table,如果把 當作乙個集合,那麼 中的記錄就是集合中的乙個元素。表a 表b 1.內連線 只有一種場景 select a.b.from a table a inner join b table b on a.a id b.b id 或select a.b.from ...