|
Программирование >> Sql: полное руководство
выборку таблицы salesreps, но В таблице результатов запроса она может находиться в любом месте Инструкция SQL INSERT INTO SALESREPS (NAME, AGE EMPL NUH, ) VALUES (Henry Jacobsen,36,111,0 00, Sales Kgr .25-July-90, 13) Новая строка
Таблица SALESREPS
Рис. 102 Добавление в таблицу одной строки Предположим, что служащий Якобсен получает свой первый заказ от компании 1п1егСоф, нового клиента, которому присвоен идентификатор 2126 Это заказ на 20 изделий ACI-41004 общей стоимостью $2340, и ему присваивается номер 113069 Ниже приведены инструкции insert, добавляющие в базу данных информацию о новом клиенте и заказе Добавить для служащего Якобсена информацию о новом клиенте и заказе INSERT INTO CUSTOMERS (COMPANY, CUST NUM, CREDIT LIMIT, CUST REP) VALUES ClnterCorp, 2126, 15000.00, 111) 1 row inserted. INSERT INTO ORDERS (AMOUNT, MFR, PRODUCT, QTY, ORDER DATE, ORDER NUM, CUST, REP) VALUES (2340.00, ACI, 41004, 20, CURRENT DATE, 113069, 2126, 111) 1 row inserted. Как показывает приведенный пример, если в таблице много столбцов, то инструкция insert может оказаться довольно длинной, однако ее структура по-прежнему останется очень простой. Во второй инструкции insert в предложении values используется системная константа current date, что обеспечивает ввод текущей даты в качестве даты получения заказа. Эта системная константа определена в стандарте SQL2 и поддерживается многими ведущими СУБД В остальных СУБД для получения текущих даты и времени используются другие системные константы или встроенные функции Инструкцию insert можно использовать в интерактивном режиме для добавления строк в таблицы, которые изменяются очень редко, например в таблицу offices Однако на практике данные о новом клиенте, заказе или служащем почти всегда добавляются в базу данных с помощью программ ввода данных, использующих специальные формы После окончания ввода данных в форму приложение добавляет новую строку данных с помощью программного SQL Независимо от того, какой SQL используется, интерактивный или программный, инструкция insert имеет один и хот же вид Как правило, в инструкции insert указывается простое имя таблицы, определяющее вапу собственную таблицу Чтобы вставить данные в таблицу, созданную другим пользователем, необходимо указать ее полное имя И конечно же, необходимо иметь разрещение на ввод данных в эту таблицу, иначе вьшолнение инструкции insert закончиггся неудачей Список столбцов в инструкции insert служит для того, чтобы установить соответствие между значениями данных, содержащимися в предложении values, и столбцами, для которых эти данные предназначены Списки значений и столбцов должны содержать одинаковое число элементов, а тип данных каждого значения должен быть совместимым с типом соответствующего столбца, иначе произойдет ошибка Стандарт ANSI/ISO требует, чтобы в списке столбцов использовались простые имена, но во многих СУБД допускаются и полные Ясно, что в именах столбцов в любом случае не может быть неоднозначности, потому что все они являются ссылками на столбцы целевой таблицы. Добавление значений NULL При добавлении в таблицу новой строки всем столбцам, имена которых отсутствуют в списке столбцов инструкции insert, автоматически присваивается значение null в инструкции insert, с помощью которой в таблицу salesreps была добавлена информация о служащем Якобсене, бьши опущены столбцы quota и manager-insert INTO SALESREPS (NAME, AGE, EMPL NUM, SALES, TITLE, HIRE DATE, REP office) VALUES (Henry Jacobsen, 36, 111, 0.00, Sales Mgr, 25-JUL-90, 13) Из-за этого новая строка в столбцах quota и manager содержит значение null, как показано на рис 10 2 Значение null можно присвоить и явным образом, включив эти столбцы в список столбцов, а в списке значений задав для них ключевое слово null Применение следующей инструкции insert приведет к тому же результату, что и в предыдущем случае- INSERT INTO SALESREPS (NAME, AGE, EMPL NUM, SALES, QUOTA, TITLE, MANAGER, HIRE date, REP OFFICE) VALUES (Henry Jacobsen, 36, 111, 0.00, NULL, Sales Mgr , NULL, 25-JUL-90, 13) Добавление всех столбцов Для удобства в SQL разрешается не включать список столбцов в инструкцию Insert Если список столбцов опущен, он генерируется автоматически и в нем слева Направо перечисляются все столбцы таблицы При выполнении инструкции select * генерируется такой же список столбцов. Пользуясь этой сокращенной формой записи, предыдущую инструкцию insert можно переписать таким образом: INSERT INTO SALESREPS VALUES (111, Henry Jacobsen, 36, 13, Sales Mgr, 25-JUL-90, NULL, NULL, 0.00) Как видно из данного гфимера, если список столбцов опущен, то в списке значений необходимо явно указывать значения null. Кроме того, последовательность значений данных должна в точности соответствовать порядку столбцов в таблице. В интерактивном режиме удобно не включать в инструкцию insert список столбцов, так как это уменьшает длину инструкции. В случае программного SQL список столбцов должен быть задан всегда, поскольку такую программу легче читать и понимать. Многосгрочная инструкция INSERT Многострочная инструкция insert, синтаксическая диаграмма которой изображена на рис. 10.3, добавляет в целевую таблицу несколько строк (более одной). В этой разновидности инструкции insert значения для новых строк явно не задаются. Источником новых строк служит запрос на выборку, содержащийся внутри инструкции insert. I-INSERT INTO имя таблицы запрос иш столбца - - Риг 103 йнхок-ичоскаи лтгрсмшю&рочйойфо-рут Процедура добавления строк со значениями, взятыми из той же базы данных, может сперва показаться странной, но иногда оказывается необходимой. Предположим, что нам требуется скопировать номера, даты и стоимости всех заказов, сделанных до 1 января 1990 года, из таблицы orders в другую таблицу с именем oldorders. Многострочная инструкция insert позволяет скопировать данные компактно и быстро: Скопировать старые заказы в таблицу oldorders INSERT INTO OLDORDERS (ORDER NUM, ORDER DATE, AMOUNT) SELECT ORDER NUM, ORDER DATE, AMOUNT FROM ORDERS WHERE ORDER DATE < Ol-JAN-90 9 rows inserted. Хотя многострочная инструкция insert выглядит сложнее однострочной, в действительности она является очень простой. В ней, как и в однострочной инструкции insert, задаются таблица и столбцы, в которые заносятся новые элементы данных. Оставшаяся часть инструкции представляет собой запрос, извлекающий данные из таблицы orders. На рис. 10.4 изображена графическая схема выполнения инструкции insert, гфиведенной выше. Вначале выполняется запрос к таблице
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |