Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Моделирование баз данных.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1.82 Mб
Скачать
      1. Создание таблицы на основе выборки

Команда SELECT с оператором INTO позволяет определить таблицу и добавить в нее данные. Если таблица с такими именем уже существует, команда заканчивается неудачно и генерируется сообщение об ошибке. Новая таблица создается со столбцами, которые указываются в списке выборки. Синтаксис запроса для создания таблиц следующий:

SELECT <Список столбцов>

INTO <Имя новой таблицы>

FROM <Список таблиц>

WHERE <Условие поиска>

При использовании данной команды необходимо учесть следующие факторы:

  • новая таблица создается только в том случае, если включена опция базы данных select into/bulkcopy;

  • если эта опция не установлена, то можно копировать данные во временную таблицу, имя которой начинается со знака # для локальной временной таблицы или начинается знаками ## для глобальной временной таблицы;

  • нельзя использовать при написании имени таблицы кириллицу;

  • названия столбцов не должны содержать пробелов;

  • нельзя создать таблицу на основе запроса, использующего COMPUTE, или внутри пользовательской транзакции.

В следующем примере создается временная таблица #Table1, в которую записываются фамилии клиентов, проживающих в настоящее время в двухместных номерах:

SELECT Н.Номер, К.Фамилия

INTO #Table1

FROM Клиент К, Проживает П, Номер Н

WHERE К.Код_клиента = П.Код_клиента

AND П.Номер = Н.Номер

AND Н.Число_мест = 2

AND П.Дата_убытия < GETDATE()

      1. Предложение for browse

Предложение FOR BROWSE инструкции SELECT используется для чтения таблицы, внутри которой пользователь добавляет, удаляет или обновляет строки. Обычно SQL Server запрещает чтение таблицы, если выполняется модификация данных этой таблицы. Существуют ограничения на содержание других предложений в команде SELECT при использовании предложение FOR BROWSE:

  • в таблице, из которой делается выборка данных, должен быть столбец типа Timestamp и уникальный индекс;

  • инструкция SELECT не должна содержать оператора UNION;

  • предложение FOR BROWSE должно быть последним предложением.

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

4.3 Модификация данных

В SQL Server для изменения данных используются три основные команды или инструкции, которые часто также завывают операторами модификации данных:

  • INSERT – добавляет новые строки в таблицу;

  • UPDATE – изменяет существующие данные;

  • DELETE – удаляет строки из таблицы.

      1. Добавление данных

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

INSERT [INTO]

{<Имя таблицы>|<Имя представления>}

[(<Список столбцов>)]

{DEFAULT VALUES |

VALUES (<Список значений> | <Выражение выборки>)}

В следующем примере в таблицу КЛИЕНТ вводятся данные о новом клиенте:

INSERT INTO Клиент (Фамилия, имя, Отчество, Город)

VALUES ('Соколов', 'Кузьма', 'Петрович', 'Курск')

Предложение DEFAULT VALUES добавляет запись, которая будет содержать значения по умолчанию для каждого столбца. При этом полю в столбце со свойством IDENTITY будет присвоено следующее значение. Если значения по умолчанию столбцам не присвоены, но атрибуты могут принимать значение NULL, то это значение и будет занесено в столбец. Если в таблице существует хотя бы один столбец, для которого не определено значение по умолчанию и не разрешено значение NULL, то будет возвращена ошибка и команда INSERT не выполнится.

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

INSERT <Имя таблицы> [(<Список столбцов>)]

SELECT <Список столбцов>

FROM <Список таблиц>

WHERE <Условие поиска>

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