русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Добавление новых записей


Дата добавления: 2013-12-23; просмотров: 927; Нарушение авторских прав


. . .

WHEN значениеN IS NOT NULL THEN значениеN

ELSE NULL

END

 

Предположим, что в таблице Книги (Название, Цена) столбец Цена имеет значение NULL, если соответствующей книги нет в наличии. Следующий запрос возвращает таблицу, в которой вместо NULL отображается текст "Нет в наличии":

SELECT Название, COALESCE (CAST(Цена AS CHAR(8)),

'Нет в наличии') AS Цена

FROM Книги;

Добавление, удаление и изменение данных в таблицах

 

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

При создании и дальнейшем сопровождении БД обычно возникает задача добавления новых и удаления ненужных записей, а также изменения содержимого ячеек таблицы. В SQL для этого предусмотрены операторы insert (вставить), delete (удалить) и update (изменить). Запросы, начинающиеся с этих ключевых слов, не возвращают данные в виде виртуальной таблицы, а изменяют содержимое уже существующих таблиц БД. Запросы на модификацию (добавление, удаление и изменение) данных могут содержать вложенные запросы на выборку данных из той же самой таблицы или из других таблиц, однако сами не могут быть вложены в другие запросы. Таким образом, операторы insert, delete и update в SQL-выражении могут находиться только в самом начале.

 

Когда создается таблица базы данных, она не содержит никаких записей, т. е. является пустой. Чтобы наполнить таблицу данными, необходимо добавить (вставить) в нее хотя бы одну запись. Дня этого служит оператор insert(вставить), который имеет несколько форм:



 

insert into имяТаблицы values (списокЗначений)

 

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

Более надежной и гибкой является следующая форма:

 

insert into имяТаблицы (списокСтолбцов) values (списокЗначений)

 

вставляет пустую запись в указанную таблицу и вводит в заданные столбцы значения из указанного списка. При этом в первый столбец из списокСтолбцов вводится первое значение из списокЗначений, во второй столбец – второе значение и т. д. Порядок имен столбцов в списке может отличаться от их порядка, заданного при создании таблицы. Столбцы, которые не указаны в списке, заполняются значением null. Иногда требуется просто добавить пустую запись. В этом случае первая форма оператора insertтребует после ключевого слова valuesуказать список значений null, длина которого равна количеству столбцов. В данном случае рекомендуется использовать данную форму оператора insert:

 

insert into имяТаблицы (имяЛюбогоСтолбца) values (null)

Следующий запрос добавляет новую запись в таблицу Клиенты,при этомвстолбцы Имя, Телефон и Сумма_заказа вводятся значения соответственно 'Петров', '444-4444' и 25300.

 

insert into Клиенты (Имя, Телефон, Сумма_заказа) values ('Петров', '444-4444', 25300);

Начиная с SQL-92 появилась возможность работать со значениями типа запись. Это позволяет за ключевым словом values указать несколько наборов значений в круглых скобках (записей), которые необходимо вставить в таблицу. Например:

insert into Клиенты (Имя, Телефон, Сумма_заказа)

values

('Петров', '444-4444', 25300),

('Иванов', '555-5555', 45100),

('Сидоров', '777-7777', 1200),

('Захаров', '423-9870', 7800);

 

Следующий формат вставляет в указанную таблицу записи, возвращаемые запросом на выборку.

 

insert into имяТаблицы (списокСтолбцов) select …

 

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

Допустим, таблицы Клиенты и Контакты имеют одноименные и однотипные столбцы Имя, Адрес и Телефон. Требуется добавить все записи из таблицы Контакты в таблицу Клиенты. Это можно сделать с помощью следующего запроса:

 

insert into Клиенты (Имя, Адрес, Телефон)

select Имя, Адрес, Телефон from Контакты;

 

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

 

insert into Клиенты (Имя, Адрес, Телефон)

select Имя, Адрес, Телефон from Контакты

where Клиенты.Имя < > Контакты.Имя and

Клиенты.Адрес < > Контакты.Адрес and

Контакты.Имя is not null;

 

Здесь в операторе where применено сложное условие на случай, если в таблицах окажутся однофамильцы или в таблице Контактыокажутся неопределенные имена. С помощью оператора insertможно добавить одну или несколько записей только в одну таблицу. Кроме того, необходимо учитывать следующие обстоятельства:

ü таблица может иметь столбец типа serial (счетчик), имеющий уникальные значения, которые СУБД назначает автоматически. Это обеспечивает уникальность всех записей таблицы и, следовательно, ее соответствие 1-ой нормальной форме. Поэтому в списке столбцов в операторе insert не следует указывать столбцы типа serial;

ü если список столбцов, указанный в операторе insert, содержит не все столбцы таблицы, то в оставшиеся столбцы (за исключением столбца типа serial) будут введены значения null(неопределенное значение), а в столбец типа serialправильное числовое значение введет СУБД;

ü при введении значений в столбцы новой записи необходимо следить, чтобы типы значений соответствовали типам столбцов таблицы. При необходимости можно воспользоваться функцией преобразования типов cast ();

ü таблица может иметь ограничения и если вводимые данные не удовлетворяют условиям этих ограничений, то запрос на добавление данных не будет выполнен. Так, например, если в ограничении на какой-либо столбец указано, что он не может иметь значения null,топопытка добавить пустую запись приведет к ошибке. В этом случае необходимо использовать оператор insert intoсключевым словом values,чтобы сразу ввести значение, удовлетворяющее ограничениям.

 

 



<== предыдущая лекция | следующая лекция ==>
Функции NULLIF и COALESCE | Удаление записей


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.