Программирование >>  Преобразование значений null 

1 ... 27 28 29 [ 30 ] 31 32 33 ... 219


Вставка, обновление, удаление

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

Вставка новых записей в базу данных.

Обновление существующих записей.

Удаление ненужных записей.

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

Вставка записей обычно не представляет никакой сложности. Все начинается с простой задачи по вставке одной строки. Однако часто для создания новых строк эффективнее использовать подход, основанный на множествах. Здесь также представлены методики одновременной вставки нескольких строк.

Аналогично рецепты по обновлению и удалению начинаются с простых задач. Можно обновить одну запись и удалить одну запись. Но существуют также очень эффективные техники, позволяющие обновить несколько записей одновременно. Кроме того, есть много удобных методов удаления записей. Например, можно удалять записи одной таблицы в зависимости от того, присутствуют ли они в другой таблице.

В SQL даже есть возможность одновременной вставки, обновления и удаления данных. Правда, это довольно свежее нововведение в стандарт, и пока что, возможно, вы не видите в нем пользы. Однако новое выражение MERGE представляет очень мощное средство синхронизации таблицы базы данных с внешним источником данных (как, например, в случае ввода плоских файлов с удаленной системы). Подробнее смотрите в разделе данной главы, посвященном этому вопросу.



Вставка новой записи Задача

Требуется вставить новую запись в таблицу. Например, стоит задача вставить новую запись в таблицу DEPT. В столбце DEPTNO должно быть сохранено значение 50, в столбце DNAME - PROGRAMMING , и в столбце LOC - BALTIMORE .

Решение

Чтобы вставить одну строку, используйте выражение INSERT (вставить) с блоком VALUES (значения):

insert into dept (deptno,dname,loc) values (50,PROGRAMMING,BALTIMORE)

В DB2 и MySQL можно вставлять как одну, так и несколько строк одновременно, включив в выражение несколько списков VALUES:

/* вставляем несколько строк */ insert into dept (deptno,dname,loc) values (1,A,B), (2,B,C)

Обсуждение

Выражение INSERT позволяет создавать новые строки в таблицах баз данных. Синтаксис вставки одной строки одинаков для баз данных всех производителей.

Запись выражения INSERT можно сократить, опустив список столбцов:

insert into dept

values (50,PROGRAMMING,BALTIMORE)

Однако если имена столбцов не перечислены, вставка будет осуществляться во все столбцы таблицы, и порядок значений в списке VALUES должен соответствовать порядку отображения столбцов в ответе на запрос SELECT *.

Вставка значений по умолчанию

Задача

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

create table D (id integer default 0)

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



Решение

Все СУБД поддерживают ключевое слово DEFAULT (по умолчанию) как средство явного задания значения по умолчанию для столбца. Некоторые производители предоставляют дополнительные способы решения этой задачи.

Следующий пример иллюстрирует применение ключевого слова DEFAULT:

insert into D values (default)

Можно также явно задавать имя столбца. Если вставка осуществляется не во все столбцы таблицы, явное определение имени столбца обязательно:

insert into D (id) values (default)

Oracle 8i Database и более ранние версии не поддерживают ключевое слово DEFAULT. До Oracle 9i невозможно было явно вставить в столбец значение по умолчанию.

MySQL позволяет задавать пустой список значений, если для всех столбцов определены значения по умолчанию:

insert into D values ()

В этом случае во все столбцы будут вставлены их значения по умолчанию.

PostgreSQL и SQL Server поддерживают оператор DEFAULT VALUES (значения по умолчанию):

insert into D default values

Блок DEFAULT VALUES обусловливает сохранение во всех столбцах их значений по умолчанию.

Обсуждение

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

всех СУБД.

Пользователям MySQL, PostgreSQL и SQL Server доступен другой вариант заполнения всех столбцов таблицы значениями по умолчанию, если таковые определены (как для таблицы D в данном случае). Создание пустой строки со значениями по умолчанию во всех столбцах обеспечит использование пустого списка VALUES (MySQL) или блока DEFAULT VALUES (PostgreSQL и SQL Server). В противном случае необходимо задавать DEFAULT для каждого столбца таблицы.

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



1 ... 27 28 29 [ 30 ] 31 32 33 ... 219

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика