| PostgreSQL | ||
|---|---|---|
| 上一頁 | 第二章. SQL 語法 | 下一頁 |
一個表達式是下表中的一種:
| ( a_expr ) |
| 常數 |
| 字段 |
| a_expr binary_operator a_expr |
| a_expr right_unary_operator |
| left_unary_operator a_expr |
| 參數 |
| 函數表達 |
| 巨集表達 |
我們已經討論了常數和字段。三種符號表達式分別表示雙目(中綴),右目(後綴)和左目(前綴)符號。下面章節討論剩下的選項。
$number例如,假設一個函數 dept 的定義如下
CREATE FUNCTION dept (name) RETURNS dept AS 'select * from dept where name=$1' LANGUAGE 'sql';
function (a_expr [, a_expr ... ] )例如,下面的語句計算一個雇員的薪水的平方根:
sqrt(emp.salary)
| aggregate_name (expression) |
| aggregate_name (ALL expression) |
| aggregate_name (DISTINCT expression) |
| aggregate_name ( * ) |
這裡 aggregate_name 是一個預先定義的巨集,並且 expression 是任意自身不包含巨集表達式的表達式。
第一種形式的巨集表達式激活對所有給出的表達式產生的輸入行進行巨集計算,產生一個非空值。第二種形式與第一種相同,因為 ALL 是預設值。第三種形式激活對所有輸入行中相異的非空值的巨集計算。最後一種形式激活對每個輸入行的單次巨集計算,不管該行是空還是非空值﹔因為沒有聲明特定的輸入值,這種形式通常只是對 count() 巨集有用。
例如,count(*) 產生所有輸入行的總行數﹔count(f1) 產生 f1 非空的輸入行的總行數﹔count(distinct f1) 產生非空的 f1 的不重複的總行數。
a_expr [ AS result_attname ]這裡 result_attname 是要創建的字段名(或者在更新語句裡的一個已經存在的字段名。)如果 result_attname 不存在,那麼 a_expr 必須只包含一個字段名,這時它被假定為結果域的名稱。在Postgres 裡,只有 a_expr 是一個字段時才使用預設命名。
| NOT |
| AND |
| OR |
一個子句是一個對一套實例計算產生一個 boolean 的 a_expr。
[ class_reference ] instance_variable
{, [ class_ref ] instance_variable... }
這裡 class_reference 是下面形式
class_name [ * ]"from 表達式"定義一個或多個實例變數以圈定 class_reference 裡指明的表的範圍。我們同樣還可以用後跟星號("*")限定符的方法要求實例變數的範圍包括在繼承級中低於指定表的所有表。
| 上一頁 | 首頁 | 下一頁 |
| 符號 | 開頭 | 數據型態 |