SQL基礎 查詢資料 連線查詢

2021-10-03 14:02:43 字數 3684 閱讀 8497

連線查詢時另一種型別的多表查詢

簡單地來說,就是先確定乙個主表作為結果集,然後,把其他表的行有選擇性地『連線』在主表結果集上

例項

-- 選出students表的所有學生資訊

select s.id, s.name, s.class_id, s.gender, s.score

from students s;

查詢結果

查詢結果只有class_id列,缺少對應班級的name列。

存放班級名稱的name列儲存在classes表中,只有根據students表的class_id,找到classes表對應的行,再取出name列,就可以獲得班級名稱。

通過內鏈結實現——inner join來實現

-- 選出所有學生,同時返回班級名稱

select s.id, s.name, s.class_id, c.name class name, s.gender, s.score

from students s

inner

join classes c

on s.class_id = c.id

查詢結果

inner join查詢寫法:

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

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

3.然後確定連線條件,使用on 《條件...>,這裡的條件是s.class_id = c.id,表示students表的class_id列與classes表的id列相同的行需要連線;

4.可選:加上where子句、order by等子句;

注:使用別名不是必須的,但可以更好地簡化查詢語句。

通過外連線實現——outer join

-- 使用outer join

select s.id, s.name, s.class_id, c.name class_name, s.gender, score

from students s

right

outer

join classes c

on s.class_id = c.id;

查詢結果

right outer join和inner join相比,多了一行,多出來的是』四班』,但是,學生相關的namegenderscore都為null

根據on條件s.class_id = c.idclasses表的id=4的行正是』四班『,但students表中並存在class_id=4的行。

right outer join,left outer join,full outer join區別

inner join只返回同時存在於兩張表的行資料。

由於students表的class_id包含1,2,3,classes表的id包含1,2,3,4。所以inner join根據條件s.class_id = id返回的結果集僅包含1,2,3。

right outer join返回右表都存在的行。

如果某一行僅在右表存在,那麼結果集就會以null填充剩下的字段。

left outer join則返回左表都存在的行。

如果給students表增加一行,並新增class_id=5,由於classes表並不存在id=5的行,所以,left outer join的結果會增加一樣,對應的class_name是null

-- 先增加一列class_id=5;

insert

into students (class_id, name, gender, score)

values(5

,'新生'

,'m',88

);-- 使用left outer join

select s.id, s.name, s.class_id, c.name class_name, s.gender, s.score

from students s

left

outer

join classes c

on s.class_id = c.id;

查詢結果

full outer join,它會把兩張表的所有記錄全部選擇出來,並且,自動把對方不存在的列填充為null

-- 使用full outer join

select s.id, s.name, s.class_id, c.name class_name, s.gender, s.score

from students s

full

outer

join classes c

on s.class_id = c.id

查詢結果

假設查詢語句是:

select..

.from tablea

???join tableb

on tablea.column1 = tableb.column2;

tablea看作左表,tableb看成右表

那麼inner join是選出兩張表都存在的記錄

left outer join是選出左表存在的記錄

right outer join是選出右表存在的記錄

full outer join則是選出左右表都存在的記錄

sql基礎 sql連線查詢

這兩天在專案中寫連線查詢的時候突然回憶了一下各種連線查詢的語法 結果等,發現自己出了經常用的left join on 和等值連線以外其他的都不是很確定,於是乎就看看了相關的資料便有了這篇博文。sql 92標準所定義的from子句的連線語法格式為 fromjoin tablejoin typejoin...

sql連線查詢基礎概念

交叉連線即笛卡爾積,是指兩個關係中所有元祖的任意組合。一般情況下,交叉查詢是沒有實際意義的。select from student cross join course1 等值連線 列出被連線表中的所有列,包括其中的重複列。連線條件中的運算子為 這種查詢方式形成的中間表為兩個表的笛卡爾積,有inner...

SQL基礎 查詢資料 條件查詢

select語句可以通過where條件來設定查詢條件,查詢結果是滿足查詢條件的記錄。條件查詢語法 select from 表where 條件表達 例項 select from students where score 80 查詢結果 條件表示式可以用 條件1 and 條件2 表達滿足條件1並且滿足條...