- •Глава 10. Система управления базами данных access 2007
- •10.1 Компоненты экономических информационных систем. Классификация и основные свойства единиц информации
- •10.2 Понятие предметной области
- •10.3 Понятия о базах данных и системах управления ими. Классификация баз данных
- •10.4 Модель данных. Основные виды моделей. Сравнение моделей данных
- •10.5 Функциональные зависимости и ключи.
- •10.6 Понятие нормализации отношений. Нормальные формы
- •10.7 Реляционная база данных и ее особенности. Виды связей между реляционными таблицами
- •10.8 Таблицы и их структура. Типы полей и их свойства. Контроль вводимых данных
- •10.9 Операции над таблицами. Фильтрация данных. Установление связей между таблицами. Обеспечение целостности данных
- •10.10 Запросы к базе данных и их использование. Виды запросов. Технология создания
- •10.11 Запросы к базе данных с использованием языка sql. Извлечение данных. Функции агрегирования
- •10.12 Запросы к базе данных с использованием языка sql. Извлечение данных из нескольких таблиц. Соединения таблиц
- •10.13 Запросы к базе данных с использованием языка sql. Qsl-запросы на изменение. Подчиненный запрос
- •10.14 Формы, их виды. Структура формы. Свойства формы. Технология создания форм. Элементы управления и их использование в формах
- •10.15 Отчеты, их назначение и использование. Виды отчетов. Структура отчета. Технология создания
- •10.17 Макросы и их конструирование
10.11 Запросы к базе данных с использованием языка sql. Извлечение данных. Функции агрегирования
SQL (Structure Query Language, язык структурированных запросов) - это язык программирования и запросов к базам данных, который используется для осуществления доступа к данным, для запросов к реляционным СУБД, для управления БД и их обновления.
Все запросы на получение практически любого количества данных из одной или нескольких таблиц выполняются с помощью единственного предложения SELECT. При выполнении этой операции выполняется поиск указанной таблицы или таблиц, извлекаются заданные столбцы, выделяются строки, соответствующие условию отбора, сортируются или группируются результирующие строки в указанном порядке. Команда SELECT не изменяет данные в базе данных. Синтаксически оператор SELECT состоит из нескольких предложений, большинство из которых не являются обязательными:
SELECT [предикат] список_полей
FROM имена_таблиц
[WHERE критерий_поиска]
[GROUP BY критерий_группировки ]
[HAVING групповой_критерий]
[ORDER BY критерий_столбца]
Предложение SELECT позволяет выбрать данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями и имеет следующий синтаксис:
SELECT [аргументы] список_полей
Список полей – это заданный в предложении SELECT список выражений или колонок, определяющий, какие данные должны быть извлечены. Список может быть задан одним из следующих способов:
*- это означает выбрать все колонки, указанных в запросе;
таблица.* | представление.* | псевдоним.* - это означает выбрать все колонки из указанной таблицы | представления | таблицы с указанным псевдонимом.
Аргументы:
DISTINCT - аргумент, дающий возможность исключить дублирующиеся значения из результата выполнения предложения SELECT.
TOP n [PERCENT] – аргумент, возвращающий в результате выполнения предложения SELECT только первые n строк из набора результата. Если задано ключевое слово PERCENT, то будут возвращаться первые строки, составляющие n процентов от общего количества строк.
Предложение FROM содержит имена таблиц и представлений (запросов), из которых извлекаются данные и имеет следующий синтаксис:
FROM таблица [AS псевдоним] | представление [AS псевдоним]
Псевдонимом является другое имя таблицы, которое может быть использовано в дальнейшем для ссылки на таблицу.
Предложение WHERE позволяет определить условие отбора строк из таблиц, перечисленных в предложении FROM для включения их в результат выполнения команды SELECT, и имеет следующий синтаксис:
WHERE критерий_поиска | таблица1.поле {*= | =*} таблица2.поле
Критерий поиска определяет логическое условие, при выполнении которого строка будет включена в результат.
При составлении логического условия можно использовать операторы, идентификаторы, функции, константы и подзапросы.
Операторы бывают реляционные, логические (булевы и специальные). Реляционные операторы – это математические символы (>, <, >=, <=, =, <>), которые задают определенный тип сравнения между двумя значениями. Булевы операторы (AND, OR, NOT) связывают одно или несколько выражений «истина / ложь» и в результате получают единственное значение «истина / ложь». К специальным операторам относятся операторы IN, LIKE, BETWEEN,.
Оператор LIKE применяется для поиска по соответствующему шаблону только к полям типа Char, VarChar (текстовых), и имеет следующий синтаксис:
выражение [NOT] LIKE шаблон.
Шаблоны – это специальные символы – заменители:
символ % (процент) заменяет последовательность символов произвольной длины, например:
WHERE фамилия LIKE “С%” возвращает все строки с фамилиями, первой буквой которых будет С;
_ ( подчеркивание) – заменяет один символ, например:
WHERE фамилия LIKE “С_к%” возвращает все строки с фамилиями, первой буквой которых будет С, а третья буква к;
[ ] – вместо одного символа строки будет подставлен набор возможных символов, указанных в ограничителях, например:
WHERE фамилия LIKE “[А-С]%” возвращает все строки с фамилиями, начинающихся на буквы от А до С;
[^] – вместо соответствующего символа строки будут подставлены все символы, кроме указанных в ограничителях, например:
WHERE фамилия LIKE “[^А-С]%” возвращает все строки с фамилиями, начинающихся на буквы вне диапазона от А до С.
Оператор IN используется как условие поиска, проверяющее, не соответствует ли проверяемое выражение кому –либо из значений в подзапросе или в списке значений, и имеет следующий синтаксис:
выражение [NOT] IN (значение_1, значение_2, . . .)| подзапрос
Например, WHERE фамилия IN (‘Иванов’, ‘Петров’, ‘Сидоров’).
Оператор BETWEEN используется всегда в сочетании с оператором AND и задает диапазон вхождения, применяемый как условие поиска, и имеет следующий синтаксис:
выражение [NOT] BETWEEN значение_1 AND значение_2.
Аргументы значение_1 и значение_2 определяют начало и конец диапазона значений. Они могут быть заданы числовыми, или символьными константами. Первое значение должно быть первым в соответствии с алфавитным и числовым порядком. Например, WHERE Фамилия BETWEEN ‘Орлов’ AND ‘Сидоров’.
Оператор IS NULL используется в условиях поиска, ищущих строк, содержащие NULL-значения в заданной колонке, и имеет следующий синтаксис:
выражение IS [NOT] NULL.
Предложение GROUP BY группирует по указанному перечню столбцов с тем, чтобы получить для каждой группы единственное агрегированное значение, используя в предложении SELECT агрегатные функции, и имеет следующий синтаксис:
GROUP BY [ALL] критерий_группировки [WITH {CUBE | ROLLUP}].
Аргумент критерий_группировки определяет условие группировки. Как правило, здесь указывается имя колонки таблицы, по которой будет выполнена группировка.
Аргумент ALL в разделе GROUP BY указывает серверу на необходимость выводить список всех групп, не выполняя для них функции агрегирования.
Аргумент WITH CUBE определяет необходимость суперагрегирования данных. В результате будут добавлены строки, являющиеся результатом агрегирования уже агрегированных данных (итого по группе, итого всего).
Аргумент WITH ROLLUP позволяет избежать излишнего агрегирования.
Агрегатные функции выполняют вычисления над набором значений и возвращают одно значение.
Функция AVG() – вычисляет среднее значение для набора данных, и имеет следующий синтаксис:
AVG ([ALL | DISTINCT] выражение)
ALL – агрегирование выполняется для всех строк набора данных (по умолчанию).
DISTINCT – агрегирование выполняется только для уникальных строк.
Функция Count() – подсчитывает количество строк, которое должно быть выведено при выполнении запроса, и имеет следующий синтаксис:
COUNT ({[ALL / DISTINCT] выражение / * })
«*» используется только в случае группировки данных с помощью раздела GROUP BY.
Функция Sum() – выполняет суммирование всех значений в указанной колонке, и имеет следующий синтаксис:
SUM ([ALL | DISTINCT] выражение).
Функция Max() – возвращает максимальное значение в указанной колонке, и имеет следующий синтаксис:
MAX ([ALL | DISTINCT] выражение).
Функция Min() – возвращает минимальное значение в указанной колонке, и имеет следующий синтаксис:
MIN([ALL | DISTINCT] выражение).
Предложение HAVING применяется, чтобы задать условия поиска для групп или для агрегатной функции.
Предложение ORDER BY применяется, чтобы задать порядок, в котором должны сортироваться строки набора результатов. С помощью ключевых слов ASC или DESC можно явно указать порядок сортировки:
ASC – по возрастанию значений (действует по умолчанию);
DESC – по убыванию.