Руководство разработчика

SELECT

Инструкция SELECT используется для получения данных из одной или нескольких таблиц. SELECT, который получает данные из нескольких таблиц, называется "объединением". Local SQL поддерживает следующие формы инструкции SELECT:

SELECT [DISTINCT] column_list
FROM table_reference
[WHERE search_condition]
[ORDER BY order_list]
[GROUP BY group_list]
[HAVING having_condition]
[UNION select_expr]

За исключением описанных ограничений и особенностей, все части инструкции интерпретируются так же, как и в стандартном SQL.

column_list указывает столбцы, из которых нужно извлечь данные. Например, следующий запрос извлекает данные из 2 столбцов:

SELECT PART_NO, PART_NAME
FROM PARTS

Предложение FROM

Предложение FROM определяет одну таблицу или несколько таблиц, из которых нужно извлечь данные. table_reference может быть одиночной таблицей, списком таблиц (разделенным запятыми), а также внешним или внутренним соединением, определенным в стандарте SQL-92. Например, следующий запрос задает одиночную таблицу:

SELECT PART_NO
FROM "PARTS.DBF"

В следующем примере на месте table_reference задается левое внешнее объединение:

SELECT * FROM PARTS LEFT OUTER JOIN INVENTORY
ON PARTS.PART_NO = INVENTORY.PART_NO

Предложение WHERE

Необязательное предложение WHERE фильтрует возвращаемые строки, оставляя только те, которые удовлетворяют заданному в search_condition условию. Например, следующий запрос получает только строки, в которых PART_NO больше 543:

SELECT * FROM PARTS
WHERE PART_NO > 543

Предложение WHERE может включать предикат IN со списком значений в скобках после него. Например, следующий запрос получает только строки. где номер части совпадает с одним из заданных в списке предиката IN:

SELECT * FROM PARTS
WHERE PART_NO IN (543, 544, 546, 547)

В дополнении к скалярным операторам сравнения ( =, <, > ... ), поддерживаются предикаты IN, ANY, ALL, EXISTS.

Предложение ORDER BY

Предложение ORDER BY определяет порядок сортировки полученных строк. Например, следующий запрос получает список всех частей, отсортированный в алфавитном порядке по имени:

SELECT * FROM PARTS
ORDER BY PART_NAME ASC

Этот запрос получает всю информацию о частях, отсортированную в порядке убывания номера части:

SELECT * FROM PARTS
ORDER BY PART_NO DESC

Сортировка по вычисленным полям может быть задана посредством коррелированного имени или численной позиции. Например, следующий запрос сортирует строки по FULL_NAME - вычисленному полю:

SELECT LAST_NAME || ', ' || FIRST_NAME AS FULL_NAME, PHONE,
FROM CUSTOMER
ORDER BY FULL_NAME

Предложение GROUP BY

Предложение GROUP BY определяет, как полученные строки группируются для применения агрегатных функций.

Предложение HAVING

Предложение HAVING используется вместе с предложением GROUP BY. Оно позволяет задать условие для группы, соответствующей строке результата запроса. Группы, не удовлетворяющие заданному в HAVING условию, исключаются из результата. Поддерживаются подчиненные запросы.

В дополнении к скалярным операторам сравнения ( =, <, > ... ), поддерживаются предикаты IN, ANY, ALL, EXISTS.

Предложение UNION

Предложение UNION объединяет результаты двух или более предложений SELECT в единую таблицу.

Разнородные объединения

Local SQL поддерживает объединения таблиц в различных форматах; такое объединение называется разнородным.

При осуществлении разнородных объединений, можно выбрать локальную ссылку. Для выбора псевдонима, выберите SQL|Select Alias. Если вы не выбрали псевдоним, Local SQL попытается найти таблицу в текущей папке используемой базы данных. Например, ссылка :WORK: может быть идентификатором базы данных, переданным в функцию.

При указании имени таблицы после выбора локальной ссылки:

Следующий запрос получает данные из объединения таблицы PARADOX и таблицы dBase:

SELECT DISTINCT C.CUST_NO, C.STATE, O.ORDER_NO
FROM "CUSTOMER.DB" C, "ORDER.DBF" O
WHERE C.CUST_NO = O.CUST_NO

Также можно использовать ссылки BDE вместе с именами таблиц.


См. также: