We wczesnych latach SQL został wybrany jako rozwiązanie problemu radzenia sobie ze zduplikowanymi nazwami kolumn (patrz uwaga poniżej).
Aby wypożyczyć zapytanie z innej odpowiedzi:
SELECT P.ProductName,
P.ProductRetailPrice,
O.Quantity
FROM Products AS P
INNER JOIN Orders AS O ON O.ProductID = P.ProductID
WHERE O.OrderID = 123456
Kolumna ProductID
(i być może inne) jest wspólna dla obu tabel, a ponieważ składnia warunku łączenia wymaga odniesienia do obu, „kwalifikacja kropkowa” zapewnia ujednoznacznienie.
Oczywiście lepszym rozwiązaniem było to, aby nigdy nie dopuścić do powielania nazw kolumn! Na szczęście, jeśli używasz nowszej NATURAL JOIN
składni, potrzeba zmiennych zakresu P
i O
znika:
SELECT ProductName, ProductRetailPrice, Quantity
FROM Products NATURAL JOIN Orders
WHERE OrderID = 123456
Ale dlaczego AS
słowo kluczowe jest opcjonalne? Moje wspomnienie z osobistej dyskusji z członkiem komitetu ds. Standardu SQL (Joe Celko lub Hugh Darwen) było takie, że ich wspomnienie było takie, że w czasie definiowania standardu, produkt jednego dostawcy (Microsoft?) Wymagał jego włączenia, a innego produkt (Oracle?) wymagał jego pominięcia, więc wybrany kompromis był opcjonalny. Nie mam na to żadnego cytatu, albo mi wierzysz, albo nie!
We wczesnych dniach modelu relacyjnego iloczyn krzyżowy (lub łączenie theta lub łączenie równe) relacji, których nagłówki nie są rozłączne, wydawał się tworzyć relację z dwoma atrybutami o tej samej nazwie; Rozwiązaniem tego problemu Codda w jego rachunku relacyjnym było zastosowanie kwalifikacji kropkowej, która została później emulowana w języku SQL (później zdano sobie sprawę, że tak zwane sprzężenie naturalne jest prymitywne bez utraty; to znaczy, sprzężenie naturalne może zastąpić wszystkie łączenia theta i nawet iloczynu krzyżowego).
Źródło: Business System 12, przypisy do slajdów z prezentacji przedstawionej na warsztatach TTM Implementers 'Workshop, University of Northumbria, 2-3 czerwca 2011, autorstwa Hugh Darwena