2009-06-15 278 views

回答

24

一個是表ADMIN別名

SQL Alias

+3

+1兩種速度打字和得到一個鏈接在那裏了:) – 2009-06-15 15:53:09

+0

那麼爲什麼不乾脆 選擇名稱,數字,字符串,RDB $ DB_KEY FROM AMDIN? – jackhab 2009-06-15 15:53:44

0

A是一個速記符號(任期:別名)爲表ADMIN

1

一個是所謂的表別名。在查詢的一部分,上面寫着:

FROM ADMIN a 

通過將「一」表名之後,你已經創建了現在可以代替表名稱中使用的別名。如果沒有別名,則需要使用表的全名,以便完全限定查詢中引用的列名。

沒有表的別名,查詢應該是這樣的:

SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN 

雖然因爲你只從單一的表,表名(或別名)選擇列實際上並不需要在所有的這個例子。

1

A是表的別名。

您可以將a更改爲任何有效的標識符,它不依賴於基礎架構。 通常它用於區分不同表中的字段,每次保存您鍵入完整的表名稱(使SQL更容易用短別名讀取)。

它實際上不是你給的樣品中要求,

SELECT NAME, NUMBER, STRING, RDB$DB_KEY FROM AMDIN 

應該工作一樣好

1

查詢使用這樣只是讓你不必寫ADMIN .NAME,ADMIN.NUMBER等等。如果你的桌子上有15個字段,而你的桌子上有一個像VPCPDEEE這樣的名字,那麼一遍又一遍地輸入相同的表名非常麻煩。

0

一個= ADMIN

等效:

SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN 
2

爲表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 
1

底層概念是一個「範圍變量」的。

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規格 裝置中的任FROMJOIN上下文中定義,如在下面的例子:

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正確識別例如範圍變量

enter image description here