sql 基礎語句
阿新 • • 發佈:2018-07-12
表達式 實現 tom 可能 包含 大小 篩選 分組 排序
select
邏輯處理順序
可以將每個步驟想象為生成一個臨時的數據集
from子句
- 可以包含表、視圖、物化視圖、分區、子分區、子查詢結果集。
處理聯結語句時的順序:交叉聯結、內連接、外聯結
where子句
篩選條件判斷的值為空值(null)時,判斷結果為false,該行數據不包含在結果集。
group by子句
- 對結果集進行聚合
- 可以按照from子句所列出的對象的任意字段進行分組,且分組的列可以不在輸出結果列表中顯示。
- select列表中的任何非聚合字段都必須包含在group by 表達式中。
- rollup運算用來產生部分求和值
cube運算用來求得交互分類值
having子句
在group by子句執行之後用來篩選匯總的值得第二個where子句。
select列表
- select列表列出查詢的最終結果集需要顯示那些列,可以是實際列、表達式、查詢結果集(只能返回一行一列的值,稱為標量子查詢,數據量大的時候可能會造成非常大的查詢代價,慎用)等。
distinct 從結果集中去除重復的行。
order by子句
- 需要排序的數據量大小非常重要。數據量是指結果集的總字節數,即行數乘以每一行字節數。
- 較小的排序會在內存中實現,較大的排序將使用臨時磁盤空間。
當返回結果集較大時,排序是查詢過程中一個開銷非常大的操作。
例句
select c.customer_id,count(o.order_id) as orders_ct
from oe.customers c
join oe.orders o
on c.customer_id=o.customer_id
where c.gender=‘f‘
group by c.customer_id
having count(o.order_id)>4
order by orders_ct,c.customer_id;
insert
sql 基礎語句