SQL-инструкции

Инструкция SELECT. В основе большинства SQL-запросов лежит инструкция SELECT, важнейшие параметры которой приведены в следующем списке:

SELECT Список_полей

FROM Имена_таблиц

WHERE Критерии_поиска

IN Имя_базы_данных

ALL, DISTINCT,DISTINCTROW предикаты

Таблица1 INNER JOIN Таблица2

GROUP BY Список_полей

HAVING Критерии_поиска

ORDER BY Список_полей.

Примечание. С целью повышения наглядности каждая инструкция в примерах помещена в отдельную строку. Однако при оформлении SQL-запроса Access требует, чтобы все SQL-инструкции находились в одной строке, для перехода на следующую строку следует нажимать не клавишу [Enter], а комбинацию клавиш [Ctrl+Enter].

Пример:

SELECT Клиенты.Фирма

FROM Клиенты, [Потенциальные покупатели]

WHERE Клиенты.Фирма=[Потенциальные покупа те ли].Фирма;

Внимание! SQL-запрос всегда завершается точкой с запятой.

При отработке данного запроса анализируются сведения, взятые из таблиц Потенциальные покупатели и Клиенты.

Приведённый запрос состоит из инструкции SELECT с параметрами FROM и WHERE. Инструкция SELECT определяет поля, которые подлежат обработке (будут извлечены и представлены в качестве результата запроса). В рассматриваемом примере это поле Фирмаиз таблицы Клиенты. Параметр FROM указывает, какие таблицы содержат данное поле (между именами таблиц должны стоять запятые). В нашем примере это таблицы Потенциальные покупатели и Клиенты. С помощью параметра WHERE определяются требования, которым должны соответствовать извлекаемые записи (в рассматриваемом примере – равенство содержимого полей Клиенты. Фирма и [Потенциальные покупатели].Фирма).

При выполнении запроса из таблиц, заданных параметром FROM, извлекаются записи, удовлетворяющие условию WHERE, а из отобранных записей – поля, которые перечислены в инструкции SELECT. Приступая к работе с инструкцией SELECT, необходимо принимать во внимание следующее:

1. Обычно SELECT является первой командой SQL-запроса.

2. Между именами полей следует ставить запятые. Порядок имён полей в списке соответствует порядку их обработки и отображения в результирующем наборе данных.

3. Имя поля, содержащее пробел или разделитель, необходимо заключить в квадратные скобки.

4. При наличии одноимённых полей в обрабатываемых таблицах надлежит приводить полную спецификацию поля: Имя_Таблицы. Имя_поля.

Параметр FROM. Посредством параметра FROM определяют, какие таблицы или запросы содержат поля, приведённые в инструкции SELECT, т. е. составляют список обрабатываемых таблиц и запросов.

Следует учитывать:

1. FROM задаётся как параметр для инструкции SELECT и всегда следует за ней.

2. В списке таблиц сначала указывается меньшая.

Используя символ * в качестве заменителя имени поля в инструкции SELECT, из таблицы можно отобрать все поля.

Пример:

SELECT Клиенты.*

FROM Клиенты;

Параметр WHERE. Параметр WHERE не обязателен, но если он присутствует в инструкции, то должен следовать за параметром FROM. Если параметр WHERE не задан, SQL-запрос выберет все записи.

Параметр WHERE позволяет определить, какие записи таблиц, указанных в списке FROM, появятся в результирующем наборе данных запроса. Access выбирает записи, которые соответствуют критериям, установленным с помощью параметра WHERE. Эти критерии идентичны критериям, вводимым в QBE-области.

Параметр IN. Данный параметр используется при работе с базами данных другого формата, с которыми может работать Access.

Этот SQL-запрос аналогичен запросу из предыдущего примера, но в данном случае сведения о клиентах собраны не в Access-базе, а в таблицах Клиентыи Потенциальные покупателииз базы формата dBASE IV, хранящиеся в файле C:/DBASE/INFO/CLIENTS.

При использовании параметра IN принимайте во внимание следующее:

1. Пользователь может обращаться только к одной внешней (любой другой, исключая активную) базе данных.

2. Указывая тип данных, созданных не в Access, следует добавлять точку с запятой (;), а также кавычки или апострофы: ’dBASE;’, ”dBASE;”.

Пример:

SELECT Клиенты.Фирма

FROM Клиенты, [Потенциальные покупатели]

IN “C:/DBASE/IFNO/CLIENTS” “dBASE IV;”

WHERE Клиенты.Фирма = [Потенциальные покупатели].Фирма;

Предикат ALL. С помощью параметра WHERE определяется критерий отбора записей из входного набора. Но в таблице могут присутствовать дубликаты (например, в таблицу клиентов ошибочно может быть дважды занесена запись об одном и том же клиенте). По умолчанию в выходном наборе, генерируемом при выполнении SQL-запроса, присутствуют все дубликаты. Управлять включением дубликатов в выходной набор можно с помощью специальных параметров-предикатов. По умолчанию команде SELECT соответствует предикат ALL (его можно явно не указывать), который задаёт включение в выходной набор всех дубликатов, отобранных по критерию WHERE. В команде SELECT предикат ALL следует за ключевым словом SELECT (перед именами отбираемых полей).

Пример:

SELECT ALL *

FROM Клиенты;

Выполняя такой запрос, Access выберет из таблицы клиентов все записи со всеми полями. Если в таблице есть одинаковые записи, они будут присутствовать в выходном наборе в том же количестве, что и в обрабатываемой таблице. Для борьбы с дубликатами применяются предикаты DISTINCT и DISTINCTROW.

Предикат DISTINCT. Если, выполняя этот SQL-запрос, Access найдёт название одной фирмы в нескольких записях, то в выходной набор это название будет включено только один раз.

Предикат DISTINCT следует применять в тех случаях, когда необходимо исключить записи, которые содержат повторяющиеся данные в выбранных полях. При использовании этого предиката значения указанных в инструкции SELECT полей должны быть уникальными, чтобы содержащая их запись вошла в выходной набор.

Пример:

SELECT DISTINCT Клиенты.Фирма

FROM Клиенты, [Потенциальные покупатели]

WHERE Клиенты.Фирма = [Потенциальные покупатели].Фирма;

Примечание. Результат запроса, в котором применён предикат DISTINCT, нельзя актуализировать. Действие команды с этим предикатом то же, что и в случае установки значения Да для опции Уникальные значения в диалоговом окне Свойства запроса.

Предикат DISTINCTROW. Этот предикат используется для исключения дубликатов из всех полей, а также для исключения повторяющихся записей.

Пример:

SELECT DISTINCTROW Фирма

FROM Клиенты, Заказы,

Клиенты INNER JOIN Заказы

ON Клиенты. [Номер Клиента] = Заказы. [Номер Клиента]

GROUP BY Фирма;

Между таблицами Клиентыи Заказыустанавливается связь через поле Номер Клиента. Так как номер клиента является уникальным, таблица Клиенты не содержит дубликатов в поле Номер Клиента (в отличие от таблицы Заказы, в которой для некоторых клиентов указано несколько заказов).

В выходной набор запроса будет включен список всех фирм, которые сделали минимум один заказ.

Обращайте внимание на следующие моменты:

1. Предикат DISTINCTROW эффективен, если поля выбираются из одной, а не из всех используемых в запросе таблиц.

2. Предикат DISTINCTROW игнорируется, если в запрос включена только одна таблица.

Операция INNER JOIN. С помощью операции INNER JOIN создаётся специальное объединение таблиц. Объединение производится при условии равенства содержимого полей, приведённых после ключевого слова ON в записях таблиц, указанных в операции INNER JOIN. Записи из двух таблиц объединятся при обнаружении совпадающих значений в указанных полях. Такое объединение записей используется наиболее часто.

Операция INNER JOIN является не обязательной частью инструкции SELECT. Она оформляется как часть параметра FROM:

Пример:

Таблица1 INNER JOIN Таблица2

ON таблица1.ПолеА = Таблица2.ПолеБ

В данном случае установится связь между таблицами Таблица1и Таблица2. В выходной набор будут включены записи из этих таблиц при условии равенства содержимого: Таблица1.ПолеА = Таблица2.Поле Б. В операции могут участвовать два числовых поля любого типа (даже различных). Для полей других типов необходимо соблюдать следующее правило: поля должны иметь один и тот же тип данных, но могут иметь разные имена.

Параметр GROUP BY. При использовании параметра GROUP BY все идентичные значения в заданном поле объединяются в один элемент выходного набора. В нашем примере повторяющиеся имена фирм будут включены в выходной набор только один раз. Используя параметр GROUP BY, учитывайте:

1. Параметр GROUP BY является уточняющим (необязательным) параметром при использовании параметров FROM и WHERE.

2. Имя поля, содержащее пробел или разделитель, следует заключить в квадратные скобки.

Параметр HAVING. Access рассортирует данные о потенциальных покупателях по названиям фирм, сведёт повторяющиеся записи воедино и укажет в выходном наборе только те фирмы, названия которых содержат аббревиатуру Ltd.

В результате объединения записей с помощью параметра GROUP BY и применения параметра HAVING отображаются записи, соответствующие условиям, заданным в параметре HAVING. Это дополнительная возможность фильтрации выходного набора. Используя параметр HAVING, принимайте во внимание следующее:

1. HAVING – необязательный параметр, но если он задан, то должен следовать за параметром GROUP BY.

2. У параметра HAVING те же функции, что и у параметра WHERE, но область их действия ограничена выходным набором. WHERE определяет записи, которые должны быть выбраны. HAVING устанавливает, какие записи, сгруппированные посредством параметра GROUP BY, должны отображаться на экране.

Пример:

SELECT [Потенциальные покупатели].*

FROM [Потенциальные покупатели]

GROUP BY Фирма

HAVING Фирма Like “ *H Ltd;”

Параметр ORDER BY. Названия фирм-клиентов будут рассортированы в обратном алфавитном порядке.

Посредством параметра ORDER BY выполняется сортировка данных выходного набора в заданной последовательности. Сортировка может осуществляться по нескольким полям, которые в этом случае перечисляются через запятую после ключевого слова ORDER BY. Способ сортировки определяется ключевым словом, которое указывается в рамках параметра ORDER BY и следует за названием поля, по которому сортируются данные. Сортировка может выполняться для каждого поля из списка параметра ORDER BY. Используя параметр ORDER BY, принимайте во внимание следующее:

1. Параметр ORDER BY не является обязательным параметром; если он не задан, данные не сортируются и приводятся в том порядке, в котором они извлечены из набора.

2. По умолчанию выполняется сортировка по возрастанию. Явно она задаётся ключевым словом ASC.

3. Для выполнения сортировки в обратном порядке (от Я до А) или сортировки по убыванию необходимо после имени поля, по которому сортируются данные, ввести ключевое слово DESC.

4. Параметр ORDER BY обычно является последним элементом SQL-инструкции.

Пример:

SELECT Фирма

FROM Клиенты

ORDER BY Фирма DESC;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: