1. 程式人生 > >資料庫常用操作回顧二

資料庫常用操作回顧二

在資料庫的常用操作一中,其中的一個概念 “屬性名” 使用不嚴謹,在此之後更改為列名-即資料庫中表的“列名”


在資料庫常用操作一中,我總結了資料庫層面、表層面和記錄的插入、刪除更新操作的知識。今天總結查詢方面的內容。
在關係資料庫中查詢是使用得比較多也是稍微有點複雜度的操作,根據表的數量可以分為單表查詢和多表查詢。從條件方面分為有條件和無條件,常用的查詢條件分為六種:分別是比較、範圍、集合、字元匹配、空值、多重條件。

1.無條件查詢

1.1 簡單查詢
select <列名1>,<列名2>, <列名3>… from <表名>

查詢所有列時可以使用
select * from <表名>

要去除列中重複值時可以使用
select distinct <列名1>, <列名2>… from <表名>

1.2 分組結果(group by)
該查詢常常和聚合函式配合使用
聚合函式有count()、max()、min()、 sum()、avg()
select <列名1>,<列名2>,<列名3>… from <表名>
group by <列名>
例如要查詢不同教育水平的人的平均收入和對應的教育水平
這裡寫圖片描述


其中教育下的數值代表不同的教育水平。但是這樣的查詢結果顯然並不讓人滿意,我們可能更加希望查詢的結果可以按照收入高低或者教育水平高低進行排序或者使用條件進行篩選。

1.3對結果排序(order by)
select <列名1>,<列名2>,<列名3>…
from <表名>
order by <列名1>,<列名2>… ASC|DESC;
其中ASC為升序,DESC為降序,預設情況下按升序排列。
這裡寫圖片描述
從查詢的資料結果中我們也可以看出教育水平越高的群體平均收入也越高。

2.有條件查詢

有條件的查詢需要用where關鍵字來指明條件
2.1 比較


比較條件通常要用到=, >, <, …常用的數學比較符號
select <列名>
from <表名>
where <列名> <比較關鍵字> <值>

2.2 範圍
確定範圍條件通常用到between and、 not between and 關鍵字
select <列名1>, <列名2>…
from <表名>
where <列名> (not)between <值> and <值>

2.3 集合
確定集合條件需要用到 in和 not in關鍵字
select <列名1>,<列名2>…
from <表名>
where <列名> in (集合值)

2.4 匹配字元
匹配字元用like 和 not like 關鍵字,除此之外還需要用萬用字元和換碼字元來輔助篩選。常用的萬用字元有 ‘%’ 、‘_’, 換碼字元是‘\’。
%:表示任意長度字串
_:表示單個任意字元
\:換碼字元,比如‘_’代表‘_’本身而不再是任意單個字元

select <列名1>, <列名2>…
from <表名>
where <列名> (not)like ‘<匹配字串>’ escape ‘\’

其中換碼字元‘\’需要用escape指出來,不然無法發揮他的作用

2.5 空值判斷
空值條件判斷用到 is null 和is not null關鍵字,用於查詢列中值為空或不為空的元組
select <列名1>,<列名2>…
from <表名>
where <列名> is (not) null

2.6 多重條件
多重條件查詢用到and 和 or關鍵字,用來連線多個查詢條件
and:同時滿足多個條件
or:滿足多個條件中的一個條件
select <列名1>,<列名2>…
from <表名>
where <條件> and|or <條件2> and|or <條件3>

3.having關鍵字

之前我們在回顧group by分組查詢時說過,對於分組後的結果我們可能還會需要進行一定的條件篩選操作,而且我們知道了where可以用來指明條件,但是這裡where不能用於group物件,它只能用於基本表或者檢視,所以我們需要用到having關鍵字,它的作用物件是組。
select <列名1>,<列名2>…
from <表名>
group by <列名>
having <條件>