Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по серверам.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
749 Кб
Скачать
☆
    1. Создание таблицы из набора результатов

При помощи оператора SELECT INTO можно поместить набор результатов запроса в новую таблицу. Кроме того, этот оператор позволяет создавать и заполнять новые таблицы, а также создавать временные таблицы. Запросы к временной таблице иногда оказываются проще тех, которые пришлось бы выполнять, обращаясь к нескольким таблицам или базам данных. Оператор SELECT INTO позволяет создать локальную или глобальную временную таблицу. Для локальных таблиц используются имена, начинающиеся с символа #, а для глобальных – с символа ##.

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

SELECT *

INTO ##PROPERTY_POLOCK

FROM PROPERTY

WHERE City=’Полоцк’;

    1. Использование оператора union

Оператор UNION позволяет выполнить два запроса независимо друг от друга и объединить и результаты. Для того чтобы объединение прошло успешно, выходные запросы должны быть совместимы по объединению, то есть иметь одинаковое количество отбираемых столбцов, типы соответствующих столбцов должны совпадать.

В выходном запросе отсутствуют дублирующие друг друга строки. Если надо оставить все строки в запросе, то после UNION следует указать ALL.

Получить данные о двухкомнатных квартирах в Витебске и Полоцке. Исходные данные находятся в таблицах PROPERTY_POLOCK PROPERTY_VITEBSK, имеющих одинаковую структуру.

SELECT *

FROM PROPERTY_POLOCK

WHERE Rooms=2

UNION

SELECT *

FROM PROPERTY_VITEBSK

WHERE Rooms=2;

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

    1. Запросы на модификацию данных

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

Запросы на удаление

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

Синтаксис:

DELETE

FROM таблица

WHERE условие_отбора

Например, удалить из таблицы STAFF все записи, относящиеся к владельцу собственности, у которого значение поля STAFF_no=10:

DELETE

FROM STAFF

WHERE STAFF_no=10;

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

Запросы на добавление

Ввод и добавление записей в SQL осуществляется с помощью оператора INSERT. Существует несколько вариантов вставки данных.

Вставка записей из другой таблицы

Оператор INSERT добавляет записи в уже существующую таблицу, вставляя в нее набор результатов оператора SELECT

Синтаксис запроса:

INSERT [INTO] имя_таблицы

SELECT список_выборки

FROM список_таблиц

WHERE условие_поиска

Добавление данных в указанные поля

Наиболее употребительный вариант команды INSERT INTO предусматривает добавление записи в существующую таблицу с указанием списка полей:

Синтаксис запроса:

INSERT INTO имя_таблицы (поле1, поле2,…)

VALUES (значение_поля1, значение_поля2…)

При этом если перечислены не все поля, то в не перечисленные поля автоматически устанавливается значение NULL.

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

Синтаксис запроса:

INSERT INTO имя_таблицы

VALUES (список_значений)

Например, отобрать из таблицы РROРERTY объекты собственности, находящиеся в Витебске, и поместить их в таблицу РROРERTY_VITEBSK. Таблица РROРERTY_VITEBSK должна быть заранее создана командой CREATE TABLE.

INSERT INTO РROРERTY_VITEBSK

SELECT *

FROM РROРERTY

WHERE City =’Витебск’

Добавить данные в таблицу VIEWING:

INSERT INTO VIEWING (Date_View, Comments, Property_no, Buyer_no)