Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Таблицы в реляционной базе данных

Таблицы в реляционной базе данныхТаблицы в реляционной базе данных хранят информацию об отдельных сущностях (по крайней мере, так должно быть). К примеру, каждая строка таблицы CUSTOMER содержит информацию о конкретном клиенте компании, а строка таблицы ORDER_HEADER — о некотором заказе. На практике появление нового экземпляра сущности обычно вызывает необходимость добавления в соответствующую таблицуновой строки. К примеру, если у компании ACME появится новый клиент, в таблицу CUSTOMER нужно будет добавить новую строку для хранения информации о нем, а если начнется продажа нового товара, в таблицу PRODUCT придется добавить строку для его описания и цены. Для добавления в таблицу новых строк либо непосредственно, либо через обновляемое представление используют инструкцию INSERT. Синтаксис этой инструкции несколько отличается в стандарте SQL:2003 и отдельных СУБД (в настоящей книге рассматриваются только Oracle, DB2 9.5 и Microsoft SQL Server 2008). В то же время можно привести такой вид синтаксиса, который будет работать во всех трех ведущих СУБД и не противоречить стандарту SQL:2003. В этом разделе вначале будет рассмотрена общая функциональность инструкции INSERT, а затем описаны некоторые из ее особенностей, заложенные в стандарте SQL:2003 и реализованные в СУБД тройки ведущих производителей. Вставка в таблицу новых строк требует соблюдения некоторых правил и ограничений. К примеру, все значения столбцов должны совпадать (или, по крайней мере, быть совместимыми) по типу и размерам с определениями столбцов. В этом правиле существуют некоторые характерные для конкретной СУБД вариации — к примеру, Oracle, когда это возможно, автоматически неявно выполняет необходимые преобразования (строк в числа, дат в строки и т. п.), а в DB2 всегда нужно задавать необходимые преобразования явно. Однако в общем случае не существует такой СУБД, которая позволила бы вставить имя заказчика в числовой столбец или поле даты. В этом случае будет сгенерирована ошибка, в результате чего вся инструкция INSERT останется невыполненной.