- •Язык запросов sql
- •Общие сведения
- •Insert - запрос на добавление;
- •Инструкция select
- •Синтаксис select
- •Расширения инструкции select в access
- •Порядок выполнения выборки
- •Управление списком выбора
- •Указание источника данных
- •Применение реляционных операторов
- •Применение булевых операторов
- •Обработка неопределенных значений
- •Сортировка данных
- •Вычисление агрегатных функций
- •Группировка данных
- •Ограничение для групп данных
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Операции с таблицами
- •Изменение структуры таблицы
- •Удаление таблицы
- •Действия со строками
- •Вставка строк в таблицу
- •Изменение данных в таблице
- •Удаление данных из таблицы
- •Инструкция transform
- •In ("Физика", "Математика");
- •Глава 5 Работа с формами
Удаление данных из таблицы
Помимо добавления данных в таблицу SQL предоставляет возможность удаления данных при помощи оператора DELETE, который имеет следующий синтаксис:
DELETE FROM table_name [WHERE condition 1 [,...n]];
где используемые параметры аналогичны тем, которые применялись для оператора UPDATE.
Оператор DELETE можно использовать без предложения WHERE. В этом случае будет удалена вся информация, находящаяся в указанной таблице.
Например, если выполнить следующую команду:
DELETE FROM tbIStudents;
СУБД выполнит удаление всей информации о студентах из таблицы tbIStudents.
Если необходимо удалить только записи студентов с определенным признаком (например, всех отчисленных студентов, для которых поле fState имеет значение "о"), то следует использовать удаление данных по указанному условию:
DELETE FROM tbIStudents WHERE fState = 'o';
Инструкция transform
Для создания перекрестного запроса в диалекте SQL для Access предусмотрена специальная инструкция TRANSFORM, имеющая такой синтаксис:
TRANSFORM expression_total selection PIVOT column_name [IN columnjist]
где: expression_total - это выражение, в котором используется одна из итоговых функций (SUM, AVG, COUNT, МАХ или MIN). Значения этого выражения будут выведены в ячейках полученной перекрестной таблицы;
selection - инструкция SELECT, в которой выполняется группировка данных (GROUP BY);
column_name - имя столбца (или выражение), значения которого будут использоваться в качестве заголовков столбцов перекрестной таблицы;
columnjist (необязательный параметр) - список заголовков столбцов (в кавычках, через запятую), которые должны быть выведены в перекрестном запросе. С помощью этого параметра можно не только задать последовательность отображения столбцов, но и указать, какие именно столбцы должны выводиться (подробно об этом рассказано ниже).
Например, представим рассмотренный в предыдущей главе перекрестный запрос qryGroupsMarksCross, отображающий оценки по всем предметам в среднем по каждой группе в виде SQL- инструкции TRANSFORM (источником данных является запрос qryGroupsMarks):
TRANSFORM Avg(fMark)
SELECT fGroup AS [Группа], Avg(fMark) AS [Средняя оценка]
FROM qryGroupsMarks
GROUP BY fGroup
ORDER BY fGroup
PIVOT fSubject;
В ячейках йерекрестного запроса (TRANSFORM) выводятся средние оценки по группам. В качестве заголовков строк (SELECT) используются список групп и средние оценки для каждой из них. Наконец, заголовками столбцов (PIVOT) являются названия предметов.
Теперь немного преобразуем этот запрос. Предположим, что нужно отображать (и учитывать при подсчете средних оценок) только оценки по физике и математике (именно в этом порядке). Для этого в предыдущий запрос нужно добавить предложение IN, указав в качестве параметров отбора названия предметов «Физика» и «Математика»:
qry6foi»j>sMarfcsCross
.
а ' зс
Групг
-
Средняя
оцен -
Математик.
*
Физика
ж
Ш
4,08
4,09
4'071з
М12
4,22
4,24
4,24
М13
4,17
4,17
4,17
М14
4,21
4,21
4,21
М15
4,19
4,19
4,19
М17
4,21
4,21
4,21
М18
4,24
4,24
4,24
М21
4,17
4,17
4,17
М22
4,19
4,18
4,18
М23
4,27
4,27
4,27
М24
4,19
4,16
4,16
М25
4,22
4,24
4,24
^
;
Запись: i<
i
hj
97
>
►1
ГК'!
Поиск
Рис.
4.1.
Результат выполнения перекрестного
запроса с отбором столбцов
TRANSFORM Avg(fMark)
SELECT fGroup AS [Группа],
Avg(fMark) AS [Средняя оценка] FROM qryGroupsMarks GROUP BY fGroup ORDER BY fGroup PIVOT fSubject