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

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

Новые строки в реляционную базу данных добавляются тогда, когда во "внешнем мире" появляется новый объект, представляемый этой строкой. На примере учебной базы данных это выглядит следующим образом:

  • если Вы принимаете на работу нового служащего, в таблицу salesreps необходимо добавить новую строку с данными о нем;

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

  • если клиент делает заказ, в таблицу orders требуется добавить новую строку, содержащую информацию об этом заказе.

Во всех приведенных примерах новая строка добавляется для того, чтобы база данных оставалась точной моделью реального мира. Наименьшей единицей информации, которую можно добавить в реляционную базу данных, является одна строка. В реляционной СУБД существует три способа добавления новых строк в базу данных:

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

  • Многострочный оператор insert, обеспечивающий извлечение строк из одной части базы данных и добавление их в другую таблицу. Он обычно используется в конце месяца или года, когда "старые" строки таблицы пересылаются в неиспользуемую таблицу для сохранения.

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

Однострочный оператор insert

Однострочный оператор insert, синтаксическая диаграмма которого представлена ниже, добавляет в таблицу новую строку. В предложении into указывается таблица, в которую добавляется новая строка (целевая таблица), а в предложении values содержатся значения данных для новой строки. Список столбцов определяет, какие значения в какой столбец заносятся.

INSERT INTO <имя таблицы> [<перечень столбцов>] VALUES (<перечень значений>).

Добавить информацию о новом служащем Генри Якобсоне.

INSERT INTO SALESREPS (NAME, AGE, EMPL_NUM, SALES, TITLE, ,HIRE_DATE, REP_OFFICE) VALUES ('Henry Jacobsen', 3.6, 111, 0.00, 'Sales Mgr', '25-JUL-90',13)

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

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

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

Для удобства в SQL разрешается не включать список столбцов в оператор insert. Если список столбцов опущен, он генерируется автоматически и в нем слева направо перечисляются все столбцы таблицы. Если список столбцов опущен, то в списке значений необходимо явно указывать значение null. Кроме того, последовательность значений данных должна в точности соответствовать порядку столбцов в таблице.