Неограниченный запрос - это тот, где критерии поиска не особенно специфичны, и поэтому могут возвращать очень большой набор результатов. Запрос без предложения WHERE, безусловно, попадет в эту категорию, но давайте на минутку рассмотрим некоторые другие возможности. Допустим, у нас есть таблицы следующим образом:
CREATE TABLE SALES_DATA
(ID_SALES_DATA NUMBER PRIMARY KEY,
TRANSACTION_DATE DATE NOT NULL
LOCATION NUMBER NOT NULL,
TOTAL_SALE_AMOUNT NUMBER NOT NULL,
...etc...);
CREATE TABLE LOCATION
(LOCATION NUMBER PRIMARY KEY,
DISTRICT NUMBER NOT NULL,
...etc...);
Предположим, что мы хотим получить определенную транзакцию, и мы знаем идентификатор продажи:
SELECT * FROM SALES_DATA WHERE ID_SALES_DATA = <whatever>
В этом случае запрос ограничен, и мы можем гарантировать, что он будет содержать одну или ноль строк.
Другим примером ограниченного запроса, но с большим набором результатов, будет тот, который получен, когда директор округа 23 говорит: «Я хочу видеть общие продажи для каждого магазина в моем округе за каждый день в прошлом году», что будет что-то вроде
SELECT LOCATION, TRUNC(TRANSACTION_DATE), SUM(TOTAL_SALE_AMOUNT)
FROM SALES_DATA S,
LOCATION L
WHERE S.TRANSACTION_DATE BETWEEN '01-JAN-2009' AND '31-DEC-2009' AND
L.LOCATION = S.LOCATION AND
L.DISTRICT = 23
GROUP BY LOCATION,
TRUNC(TRANSACTION_DATE)
ORDER BY LOCATION,
TRUNC(TRANSACTION_DATE)
В этом случае запрос должен возвращать 365 (или меньше, если магазины открыты не каждый день) для каждого магазина в районе 23. Если в округе 25 магазинов, он вернет 9125 строк или меньше.
С другой стороны, скажем, наш вице-президент по продажам хочет получить некоторые данные. Он / она / он не совсем уверен, чего хотел, но он / она / он вполне уверен, что что бы то ни было произошло в первые шесть месяцев года ... не совсем уверен насчет того года ... и не уверен насчет местоположения - вероятно, в округе 23 (у него / нее / нее была вражда с человеком, который управляет округом 23 в течение последних 6 лет, начиная с того турнира по гольфу, где ... хорошо не берите в голову ... но если проблема может быть повешена на двери директора района 23, пусть будет так!) ... и, конечно, он / она / она хочет все детали, и иметь его на своем / ее / ее Письменный стол сладкий! И, таким образом, мы получаем запрос, который выглядит примерно так:
SELECT L.DISTRICT, S.LOCATION, S.TRANSACTION_DATE,
S.something, S.something_else, S.some_more_stuff
FROM SALES_DATA S,
LOCATIONS L
WHERE EXTRACT(MONTH FROM S.TRANSACTION_DATE) <= 6 AND
L.LOCATION = S.LOCATION
ORDER BY L.DISTRICT,
S.LOCATION
Это пример неограниченного запроса. Сколько строк он вернет? Хороший вопрос - это зависит от того, каковы были условия бизнеса, сколько мест было открыто, сколько дней было в феврале и т. Д.
Проще говоря, если вы можете посмотреть на запрос и довольно хорошо представить, сколько строк оно собирается вернуть (даже если это число может быть относительно большим), запрос ограничен. Если вы не можете, это неограниченно.
Делись и наслаждайся.