連線就是指兩個或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在表示式查詢方面會有所差異 系統幫你解決了不同資料庫的差異性,因此我們把框架的...