- •4. Реляционные языки запросов
- •Isbl -язык реляционной алгебры
- •Язык sql
- •Типы данных.
- •Создание, удаление или изменение таблиц или индексов с помощью управляющих запросов sql.
- •Инструкция create table
- •Предложение constraint (sql)
- •Инструкция alter table
- •Инструкция drop
- •Drop {table таблица | index индекс on таблица}
- •Инструкция create index
- •Запросы на выборку. Инструкция select
- •Предикаты all, distinct, distinctrow, top (sql)
- •Select [all | distinct | distinctrow | [top n [percent]]]
- •Предложение from
- •Синтаксис
- •Предложение where
- •Синтаксис
- •Предложение order by
- •Синтаксис
- •Группировка записей. Предложение group by
- •Синтаксис
- •Where условие_отбора
- •Предложение having
- •Синтаксис
- •From таблица
- •Запросы с соединением таблиц. Операция inner join
- •On таблица1.Поле2 оператор_сравнения таблица2.Поле2) or
- •Операции left join, right join
- •From таблица1 [ left | right ] join таблица2
- •Объединение результатов нескольких запросов. Операция union
- •Подчиненный запрос.
- •Запросы на изменение. Инструкция select...Into
- •From источник
- •Предложение in
- •Синтаксис
- •Инструкция insert into
- •Инструкция update
- •Инструкция delete
- •Delete [таблица.*]
- •Перекрестные запросы
- •Синтаксис
- •Запросы с параметрами Описание parameters
- •Синтаксис parameters имя тип_данных [, имя тип_данных [, ...]]
- •Статистические функции sql .
- •Функция Avg
- •Функция Count
- •Функции Min, Max
- •Функции StDev, StDevP
- •Функция Sum
- •Функции Var, VarP
- •Var(выражение)
- •VarP(выражение)
- •Quel:язык реляционного исчисления с переменными-кортежами
- •Query-by-example: язык исчисления с переменными – доменами
- •Формы запросов
- •Зарезервированные слова:
- •Конструирование операторов запроса.
- •Выбор записей
- •Запросы к нескольким таблицам
- •Вычисления
- •Операции
- •Группы записей
- •Работа с наборами записей
- •Развитые операторы запросов.
Инструкция delete
Создает запрос на удаление записей, предназначенный для удаления записей из одной или нескольких таблиц, перечисленных в предложении FROM, которые удовлетворяют предложению WHERE.
Синтаксис
Delete [таблица.*]
FROM таблица
WHERE условие_отбора
Инструкция DELETE особенно удобна для удаления большого количества записей.
Если применить инструкцию DELETE, удаляются только данные; сохраняются структура таблицы и все остальные ее свойства, такие как атрибуты полей и индексы.
Инструкцию DELETE можно использовать для удаления записей из таблиц, связанных отношением "один-ко-многим" с другими таблицами. Операции каскадного удаления приводят к удалению записей из таблиц, находящихся на стороне отношения "многие", когда в запросе удаляется соответствующая им запись на стороне "один".
Запрос на удаление удаляет записи целиком, а не только содержимое указанных полей. Чтобы удалить данные конкретного поля, можно создать запрос на обновление записей, который заменяет имеющиеся значения на значения Null.
Нельзя восстановить записи, удаленные с помощью запроса на удаление.
Примеры:
Добавить новую запись в таблицу Товары:
INSERT INTO Товары ( [Код товара], Наименование, Тип, Цена )
VALUES (377, 'Полимер', 25, 35);
Удалить сведения о поставках товаров с датой поставки меньше 1/15/99:
DELETE FROM Поставки
WHERE "Дата"<#1/15/99#;
Увеличить на 25 количество товаров, поставляемых поставщиком с кодом 125 с датой поставки меньше 10/06/99:
UPDATE Поставки
SET [Количество] = [Количество] + 25
WHERE [Код поставщика] = 125
AND Дата > #10/06/99#;
Создать таблицу Товары1, содержащую сведения о товарах, хранящихся в Калининграде:
SELECT [Код товара], Наименование, Тип, Цена
INTO Товары1
FROM Товары
WHERE [Место хранения]="Калининград";
Перекрестные запросы
В перекрестном запросе отображаются результаты статистических расчетов (такие как суммы, количество записей и средние значения), выполненных по данным из одного поля таблицы. Эти результаты группируются по двум наборам данных, один из которых расположен в левом столбце таблицы, а второй - в верхней строке.
Синтаксис
TRANSFORM статФункция
инструкция
PIVOT поле [IN (значение_1[, значение_2[, ...]])]
где:
статФункция - статистическая функция SQL, обрабатывающая указанные данные;
инструкция - инструкция SELECT;
поле - поле или выражение, которое содержит заголовки столбцов для результирующего набора;
Значение_1, значение_2 - фиксированные значения, используемые при создании заголовков столбцов.
Когда данные сгруппированы с помощью перекрестного запроса, можно выбирать значения из заданных столбцов или выражений как заголовки столбцов. Это позволяет просматривать данные в более компактной форме, чем при работе с запросом на выборку.
Инструкция TRANSFORM является необязательной, однако, если она присутствует, то должна быть первой инструкцией в строке SQL. Она должна находиться впереди инструкции SELECT, которая указывает поля, содержащие заголовки строк, и предложения GROUP BY, которое задает группировку по строкам. При желании можно включить и другие предложения, например, WHERE, для описания дополнительных условий отбора и сортировки. Кроме того, можно использовать подчиненные запросы как предикаты в перекрестном запросе, особенно в предложении WHERE.
Значения, возвращенные аргументом поле, используются в качестве заголовков столбцов в результирующем наборе запроса. Например, продажи по месяцам в перекрестном запросе образуют результирующую таблицу из 12 столбцов. Аргумент поле можно ограничить, чтобы создать заголовки из фиксированных значений (значение_1, значение_2 ), перечисленных в необязательном предложении IN. Кроме того, фиксированные заголовки, которым не соответствуют реальные данные, можно использовать для создания дополнительных столбцов.
Пример:
По каждому коду товара и дате поставки (строки таблицы) определить общее количество поставленного товара всеми поставщиками и каждым поставщиком (столбцы таблицы):
TRANSFORM Sum(Количество) AS [Значение]
SELECT [Код товара], Дата, Sum(Количество) AS [Итого]
FROM Поставки
GROUP BY [Код товара], Дата
PIVOT [Код поставщика];
Результат:
Код товара |
Дата |
Итого |
10 |
15 |
123 |
10.11.99 |
65 |
25 |
40 |
156 |
11.11.99 |
50 |
50 |
|