資料庫查詢方式

2022-09-04 13:18:16 字數 2674 閱讀 1428

連線就是指兩個或2個以上的表(資料來源)「連線起來成為乙個資料來源」。

實際上,兩個表的完全的連線是這樣的乙個過程:

左邊的表的每一行,跟右邊的表的每一行,兩兩互相「橫向對接」後所得到的所有資料行的結果。

注意:連線之後,並非形成了乙個新的資料表,而只是一種「記憶體形態」。

from 表

1  [連線方式

]  join 表

2  [on 連線條件];

連線的結果可以當作乙個「表」來使用。常用有以下幾種連線方式:

實際上,交叉連線是將兩個表不設定任何條件的連線結果。

交叉連線通常也被叫做「笛卡爾積」——數學上可能比較多。

語法:from  表

1  join  

表2  ; //可見交叉連線只是沒有

on條件而已。

語法:from  表

1   join  

表2  on  表1.

欄位1=表2.

欄位2;含義:找出(過濾)在交叉連線的結果表中的表1的字段

1的值等於表

2的字段2的值

的那些行。

形式:from  表

1  left  [outer]  join   

表2   on  

連線條件。

說明:1,這裡,

left

是關鍵字。

2,連線條件跟內連線一樣。

3,含義是:內連線的結果基礎上,加上左邊表中所有不符合連線條件的資料,相應本應放右邊表的字段的位置就自動補為「

null

」值。右連線跟左連線恰恰相反:

形式:from  表

1  right  [outer]  join   

表2   on  

連線條件。

說明:1,這裡,

right

是關鍵字。

2,連線條件跟內連線一樣。

3,含義是:在內連線的結果基礎上,加上右邊表中所有不符合連線條件的資料,相應本應放左邊表的字段的位置就自動補為「

null

」值。形式:

from  表

1  full  [outer]  join  

表2  on  

連線條件;

說明:1,含義:其實是左右連線的「並集」(消除重複項),即內連線的結果,加上左表中不滿足條件的所有行(右邊對應補

null

),再加上,右表中不滿足條件的所有行(左邊對應補

null

)。2,

mysql

中其實不認識全[外

]連線語法,即

mysql

這個軟體本身不支援全連線的語法。

3,此概念在其他資料庫有的存在,了解就可以。

乙個查詢,通常就是乙個select語句(即出現一次

select

關鍵字)

但,如果在乙個select查詢語句中,又出現了

select

查詢語句,此時就稱後者為「子查詢」,前者就是「主查詢」

形式:selelct 欄位或表示式或(子查詢1)[as 別名] from 表名或(子查詢2)where 欄位或表示式或(子查詢3)的條件判斷

注意:每個位置所放置的子查詢結果,應該符合該位置的資料需求。

通常:子查詢1應該是乙個「資料結果」。

子查詢2可以是「任意結果」,此位置的查詢結果,通常作為資料來源,可以給乙個別名

子查詢3可以是乙個資料或一列資料甚至是一行資料

錶子查詢

:乙個子查詢返回的結果理論上是「多行多列」的時候。此時可以當做乙個「表」來使用,通常是放在from後面。

行字查詢

:乙個子查詢返回的結果理論上是「一行多列」的時候。此時可以當做乙個「行」來使用,通常放在「行比較語法」中。

列子查詢

:乙個子查詢返回的結果理論上是「多行一列」的時候。此時可以當做「多個值」使用,類似這種:(5, 17, 8, 22)。

標量子查詢:乙個子查詢返回的結果理論上是「一行一列」的時候。此時可以當做「乙個值」使用,類似這種:select 5 as c1; 或select ...where a = 17,或select ... where b > 8;

作為主查詢的結果資料

:select c1,(select f1 from tab2) as f11from tab1; #這裡子查詢應該只有乙個資料(一行一列,標量子查詢)

作為主查詢的條件資料

:select c1 from tab1 where c1 in(select f1 from tab2); #這裡子查詢可以是多個資料(多行一列,列子查詢,

以及標量子查詢,實際上行子查詢也可能,但極少)作為

主查詢的**資料

:select c1 from(select f1 as c1, f2 from tab2) as t2; #這裡子查詢可以是任意查詢結果(錶子查詢)。

資料庫的查詢方式

內連線 外連線 左外連線 右外連線 全外連線 自然連線 內連線有三種表示方式 1.方言版 不一定適用於所有資料庫 select from table1 t1,table2 t2 where t1.column1 t2.column2 上述 會先將table1的每一行和table2的每一行進行笛卡爾積...

編碼方式 查詢資料庫的編碼方式

1 檢視mysql資料庫編碼 show variables like character set database 或者 show create database 資料庫名稱 2 檢視mysql中某張表的編碼 show create table 表名show create database 資料庫名...

ThinkPhp查詢資料庫的幾種方式

thinkphp內建了非常靈活的查詢方法,可以快速的進行資料查詢操作,查詢條件可以用於讀取 更新和刪除等操作,主要涉及到where方法等連貫操作即可,無論是採用什麼資料庫,你幾乎採用一樣的查詢方法 個別資料庫例如mongo在表示式查詢方面會有所差異 系統幫你解決了不同資料庫的差異性,因此我們把框架的...