Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции БД к экзамену_2010.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
458.75 Кб
Скачать

3) Выборка данных средствами sql.

Ключевое слово

Перевод

SELECT<список_полей>

выбрать

FROM<имена_таблиц>

из

WHERE <Условия_поиска>

при

IN <имя_внешней_базы_данных>

в

INNER JOIN

объединяя

GROP BY <список_полей >

группируя по

HAVING <условия _поиска>

имеющие

ORDER BY <список_полей>

упорядочивая по

AS <псевдонимы>

как

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

все, различные, различные ряды, первые

При наборе запроса для перехода на другую строку следует использовать комбинацию <CTRL>+<ENTER> .

Оператор SELECT

Пример:

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

FROM Клиенты, [Заинтересованные лица]

WHERE Клиенты.Фирма = [Заинтересованные лица].Фирма;

Выборка будет содержать все фирмы, которые присутствуют как в таблице “Заинтересованные лица”, так и в таблице “Клиенты”.

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

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

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

  4. Если в запросе обрабатывается несколько таблиц, то во избежание неопределенности в списках полей рекомендуется приводить полную спецификацию поля, т.е. <имя_таблицы>.<имя_поля>.

Директива from

Директива FROM задает имя таблицы или запросы, которые содержат поля, перечисленные в операторе SELECT.

  1. Директива FROM является обязательной.

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

  3. С помощью “*” из таблицы можно выбрать все поля:

SELECT Клиенты.* FROM Клиенты;

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

В следующем примере поле «Фирма» должно быть представлено в выборке как поле «Название клиента»:

SELECT Фирма AS [Название клиента] FROM Клиенты;

Директива WHERE

WHERE является необязательной директивой. Если WHERE отсутствует, будут выбраны все записи данных.

Директива ORDER BY

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

Синтаксис:

ORDER BY поле1 [ASC | DESC] , поле2 [ASC | DESC] [,[…]]

  1. Директива ORDER BY не является обязательной. Если она не используется, данные представляются в неотсортированном виде. Однако, если используется предикат TOP, то Директива ORDER BY становится обязательной.

  2. По умолчанию используется группировка по возрастанию (ACS). DECS – группировка по убыванию.

  3. Порядок перечисления полей задает иерархию уровней сортировки.

  4. Директива ORDER BY является последней директивой в запросе.

Директива GROUP BY

Группирует записи данных и объединяет в одну запись все записи данных, которые содержат идентичные значения в указанном поле (или полях).

Пример:

SELECT [название товара], SUM([Стоимость])

FROM Товары

GROUP BY [Название товара]

В этом примере исходные записи с одинаковыми названиями товара группируются и объединяются в одну запись в выборке.

  1. Директива не является обязательной. Если условие указывается, оно должно следовать за FROM или WHERE.

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

  3. В директиве GROUP BY можно использовать любые поля, упомянутые в директиве FROM; эти поля не обязательно должны быть перечислены в списке полей оператора SELECT.

  4. В операторе SELECT для всех полей, включенных в выборку, но не перечисленных в директиве GROUP BY, обязательно должны присутствовать функции группирования, такие как SUM, COUNT, AVG.

Директива HAVING

Используется для фильтрации записей после группирования только в случае использования в запросе директивы GROUP BY.

  1. Директива HAVING не является обязательной. Если она присутствует, то должна следовать за директивой GROUP BY.

  2. Функция директивы HAVING схожа с WHERE – обе используются для фильтрации.

  3. Директива WHERE определяет, какие записи должны участвовать в группировании, т.е. фильтрует записи до группирования. HAVING определяет, какие из получившихся в результате группировки записей будут включены в результирующую выборку, т.е. фильтрует записи после группирования.

Пример:

SELECT Отделение, Count ([Отделение])

FROM Сотрудники

GROUP BY Отделение

HAVING Count ([Отделение]) > 50;

В выборку будут включены отделения, в которых число сотрудников больше 50.

Директива IN

Директива IN используется для запросов к другим базам данных, с которыми Access может быть связан. В следующем примере формируется запрос, который использует данные таблицы Access «Заинтересованные лица» и файл БД в формате dBASE IV CLIENTS.DBF:

SELECT CLIENTS.DBF.Firm

FROM CLIENTS.DBF, [Заинтересованные лица]

IN C:\ dBASE\DATA\ CLIENTS «dBASE;»

WHERE CLIENTS.DBF.Firm = [Заинтересованные лица].[Фирма]

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

  2. Для указания базы данных, которая имеет формат, отличный от формата Access, нужно добавить к обозначению типа базы данных точку с запятой и заключить его в кавычки, например, «dBASE;».