Удаление записи

Для удаления записи (или записей) из таблицы предусмотрен запрос DELETE, который выполняется соответствующим SQL-оператором. Формат запроса:

DELETE FROM <имя_таблицы> f WHERE <логическое_условие> ]

Назначение опций:

<имя_таблицы> — указывается имя таблицы, из которой надо удалить записи;

<логическое_условие> — записи, которые удовлетворяют логическому условию, будут удалены из указанной таблицы.

Если условие WHERE опущено, то удаляются все записи из таблицы. Механизма восстановления удаленных записей нет.

Пример 9.5. Из таблицы удалить сведения о книге «Малахитовая шкатулка».

DELETE FROM Book WHERE Key_book - 14

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

Если в запросе DELETE будет опущена опция WHERE, то таблица Book будет очищена (все записи будут удалены). Отменить выполненную операцию нельзя.

Извлечение записей

В удаленных базах данных для хранения набора данных чаще всего используют два компонента — TIBQuery и TIBDataSet. Набор данных может быть создан по данным одной таблицы или нескольких связанных таблиц. В том и другом случае используется запрос на выборку SELECT, который выполняется соответствующим ^/.-оператором.

Формат запроса:

SELECT [ DISTINCT ALL ) *

<имя_поля_1> [, <имя_поля_2>, ...

<ИМЯ_ПОЛЯ_тУ> ]

FROM <имя_таблицы_1> [ , <имя_таблицы_2>, ..., <имя_таблицы_тУ> ]

I WHERE <условие_отбора_записей> ]

[ ORDER /?К<условие_сорт._1> [ <условие_сорт._2>, ..., <условие_сорт._А^> ] ]

[ GROUP BY< условие_групп._1> [ , < условие_групп._2> ...] ] [ НА VING <логическое_условие> ]

[ UNION ]

Назначение опций:

DISTINCT — исключает из выборки повторяющиеся записи. Повторяющимися считаются записи, у которых значения всех полей совпадают;

ALL — включает в выборку все записи. В InterBase нет необходимости указывать эту опцию, так как она используется по умолчанию;

* — помещает в выборку значения всех полей таблицы (или таблиц);

<имя_поля_1>, <имя_поля_2>, ..., <имя_поля_А6> — помещает в выборку значения полей, имена которых перечислены в списке;

FROM — указываются имена таблиц, из которых выбираются значения полей;

WHERE <условие_отбора_записей> — в выборку помещаются те записи из таблицы (или таблиц), которые удовлетворяют <условие_отбора_записей>. В <условие_отбо-ра_записей> запрещено использовать агрегатные функции (функции итоговых значений);

ORDER BY — указываются имена полей, по значениям которых надо отсортировать выборку. Имена полей в списке отделяются друг от друга символом «,» (запятая). Порядок указания имен полей имеет принципиальное значение. Сначала записи выборки сортируются по значению первого поля, а при одинаковых значениях первого поля — по значениям второго поля и т. д.;

GROUP BY — указываются имена полей, по значениям которых надо сгруппировать записи выборки. Имена полей в списке отделяются друг от друга символом «,» (запятая). Порядок указания имен полей имеет такое же значение, как и в опции ORDER BY,

HAVING <логическое_условие> — накладывает ограничивающие условия на группы записей, которые сформированы по результатам опции GROUP BY. Эта опция указывается сразу после опции ORDER BY. Для групп записей, которые удовлетворяют <логическое_условие>, выполняется вычисление агрегатных функций. Сами агрегатные функции указываются в <логическое_условие>;

UNION <оператор_5,?’1?’С7> — разрешает объединять выборки, сделанные несколькими запросами SELECT. В качестве аргумента опции UNION указывается оператор SELECT.

Структура запроса SELECT представляет собой сложную конструкцию. Гибкое использование конструкции оператора приводит к получению разнообразных выборок самой неожиданной конфигурации. Рассмотрим лишь некоторые из возможных конструкций.

 
< Пред   СОДЕРЖАНИЕ     След >