SELECT a.NAME, a.NUMBER, a.STRING, a.RDB$DB_KEY FROM ADMIN a
什麼做了立場?
謝謝。
SELECT a.NAME, a.NUMBER, a.STRING, a.RDB$DB_KEY FROM ADMIN a
什麼做了立場?
謝謝。
一個是表ADMIN別名
A是一個速記符號(任期:別名)爲表ADMIN
一個是所謂的表別名。在查詢的一部分,上面寫着:
FROM ADMIN a
通過將「一」表名之後,你已經創建了現在可以代替表名稱中使用的別名。如果沒有別名,則需要使用表的全名,以便完全限定查詢中引用的列名。
沒有表的別名,查詢應該是這樣的:
SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN
雖然因爲你只從單一的表,表名(或別名)選擇列實際上並不需要在所有的這個例子。
A是表的別名。
您可以將a更改爲任何有效的標識符,它不依賴於基礎架構。 通常它用於區分不同表中的字段,每次保存您鍵入完整的表名稱(使SQL更容易用短別名讀取)。
它實際上不是你給的樣品中要求,
SELECT NAME, NUMBER, STRING, RDB$DB_KEY FROM AMDIN
應該工作一樣好
查詢使用這樣只是讓你不必寫ADMIN .NAME,ADMIN.NUMBER等等。如果你的桌子上有15個字段,而你的桌子上有一個像VPCPDEEE這樣的名字,那麼一遍又一遍地輸入相同的表名非常麻煩。
一個= ADMIN
等效:
SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN
爲表ADMIN的別名。這裏沒有必要,因爲你的查詢只有一個表。
當你有多個表,並且一些列是相同的,那麼你需要區分它們。一種方法是在列名稱前寫入表名。例如,
Select ADMIN.Name, person.name from ADMIN, person where person.id = admin.id
爲了縮短這個時間,爲表名添加別名。
select a.Name, p.Name from ADMIN a, person p where person.id = admin.id
a用作ADMIN表的別名。
如果使用別名是正確的,並且該別名應採用哪種形式,可以從sql的作者身上引發一些強烈的意見。
繼承人幾個關於這個問題的stackoverflow問題。
底層概念是一個「範圍變量」的。
Chris Date和Hugh Darwen認爲俗語「別名」和SQL標準的術語「相關名稱」都是「不恰當的」,「嚴重地[誤導]真實事態」。
Hugh Darwen, 「SQL: A Comparative Survey」:
你可能有 瞭解到的範圍內變化,這是通過使用在科德他 早期的論文而不是由SQL標準採用直到2003年在 一些SQL文本是一個不同的項被稱爲別名,但實際上並不合適,因爲這意味着它是表名,因此 表示表而不是行。 SQL標準使用不相關的術語關聯名稱(它不表示任何關聯, ),但僅限於名稱爲 (通過示例中的
AS
)明確給出的情況,而不用於名稱爲 情況,其中 一個簡單的表名稱作爲範圍變量名稱加倍。在SQL:2003 範圍變量被採用作爲一個方便的單個術語來覆蓋 更一般的情況。
C. J. Date, 「SQL and Relational Theory: How to Write Accurate SQL Code」:
在關係模型中的範圍內的變量是變量,在某些表中的行的集合(或在一些 關係元組的集合「過範圍 」,是更確切)。在SQL中,這樣變量被的
AS
規格 裝置中的任FROM
或JOIN
上下文中定義,如在下面的例子:SELECT SX.SNO FROM S AS SX WHERE SX.STATUS > 15
SX
這裏是一個範圍變量,取值範圍在表S
;在其他 字中,其允許值是表S
的行。您可以整體考慮SELECT
表達式,如下所述。首先, 範圍變量採用其允許值之一,例如供應商SNO = ‘S1’
的行 。該行中的狀態值是否比15更大 ?如果是,則供應商編號’S1’
將顯示在結果中。 接下來,範圍變量移動到表S
的另一行,例如供應商SNO = ‘S2’
的 行;再次,如果該行 中的狀態值大於15,則相關供應商編號出現在 結果中。等等SQL要求
存在SELECT
表達式始終爲 根據範圍變量制定;如果沒有這樣的變量 明確指定,它假設隱含那些與 相同的名稱對應表警告:許多 參考範圍變量名稱(或相關名)作爲別名 SQL文本,和 將它們描述爲好像它們僅僅是表 的替代名稱。但是,這樣的表徵嚴重歪曲事實的真實情況 - 事實上,它嚴重缺乏瞭解真正發生的事情,並在該帳戶的 上被強烈棄用。
有趣的是,LINQ正確識別例如範圍變量
+1兩種速度打字和得到一個鏈接在那裏了:) – 2009-06-15 15:53:09
那麼爲什麼不乾脆 選擇名稱,數字,字符串,RDB $ DB_KEY FROM AMDIN? – jackhab 2009-06-15 15:53:44