sql語句中的連線字元

2021-08-09 20:08:44 字數 3615 閱讀 6129

union 操作符用於合併兩個或多個 select 語句的結果集。 

請注意,union 內部的 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同。

//聯合兩個表,沒有重複

select e_name from employees_china

union

select e_name from employees_usa

資料來源: 

結果: 

預設地,union 操作符選取不同的值。如果允許重複的值,請使用 union all。 

另外,union 結果集中的列名總是等於 union 中第乙個 select 語句中的列名。

//聯合兩個表,允許重複

select e_name from employees_china

union

allselect e_name from employees_usa

結果: 

有時為了得到完整的結果,我們需要從兩個或更多的表中獲取結果。我們就需要執行 join。 

資料庫中的錶可通過鍵將彼此聯絡起來。主鍵(primary key)是乙個列,在這個列中的每一行的值都是唯一的。在表中,每個主鍵的值都是唯一的。這樣做的目的是在不重複每個表中的所有資料的情況下,把表間的資料交叉**在一起。

資料來源: 

persion表: 

orders表: 

//使用連表查詢

select persons.lastname, persons.firstname, orders.orderno

from persons, orders

where persons.id_p = orders.id_p

//使用join查詢

select persons.lastname, persons.firstname, orders.orderno

from persons

inner

join orders

on persons.id_p = orders.id_p

order

by persons.lastname

結果: 

不同的 sql join 

除了我們在上面的例子中使用的 inner join(內連線),join預設使用內連線,可以省略inner。 我們還可以使用其他幾種連線。 

下面列出了您可以使用的 join 型別,以及它們之間的差異。

//使用left join查詢,只要左表有匹配的條件,就會生成一行,右表的列值為空。

select persons.lastname, persons.firstname, orders.orderno

from persons

left

join orders

on persons.id_p=orders.id_p

order

by persons.lastname

結果: 

//使用right join查詢,只要右表有匹配的條件,就會生成一行,左表的列值為空。

select persons.lastname, persons.firstname, orders.orderno

from persons

right

join orders

on persons.id_p=orders.id_p

order

by persons.lastname

結果: 

//使用full join查詢,只要其中乙個表中存在匹配,就會生成一行,另乙個表的列值為空。

select persons.lastname, persons.firstname, orders.orderno

from persons

full

join orders

on persons.id_p=orders.id_p

order

by persons.lastname

結果: 

有時候會遇到需要多個表連線的情況,只要遵守以下規則就可以輕鬆的應對多表連線的情況了。

比如:欲連線abcde五個表

//a: 可以這樣:

select * from a inner

join(((

b inner

join c on b.b = c.c)

inner

join d on b.b = d.d)

inner

join e on d.d = e.e)

on a.a = e.e

//b: 也可以這樣:

select * from (((

a inner

join b on a.a = b.b)

inner

join c on c.c = a.a)

inner

join d on d.d = c.c)

inner

join e

on e.e = d.d

//c: 也可以這樣:

select * from

a inner

join b on a.a = b.b

inner

join c on c.c = a.a

inner

join d on d.d = c.c

inner

join e on e.e = d.d

我們可以先把a和b連線起來,然後將結果與c連線,當然,如果c只和b相關而不和a相關的話,我們也可以先把b和c連線起來,結果再與a連線,只要保持關係是正確的,你可以以任意方式來定義巢狀的join。

Sql語句中的DDL語句

資料庫模式定義語言ddl data definition language 是用於描述資料庫中要儲存的現實世界實體的語言。主要由create 新增 alter 修改 drop 刪除 和 truncate 刪除 四個關鍵字完成。create database 資料庫名 建立乙個資料庫 create d...

SQL語句中查詢字元的位置

語法如下 string1 源字串,要在此字串中查詢。string2 要在string1中查詢的字串 start position 代表string1 的哪個位置開始查詢。此引數可選,如果省略預設為1.字串索引從1開始。如果此引數為正,從左到右開始檢索,如果此引數為負,從右到左檢索,返回要查詢的字串在...

SQL語句中查詢字元的位置

語法如下 instr string1,string1 源字串,要在此字串中查詢。string2 要在string1中查詢的字串 start position 代表string1 的哪個位置開始查詢。此引數可選,如果省略預設為1.字串索引從1開始。如果此引數為正,從左到右開始檢索,如果此引數為負,從右...