русс | укр

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

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

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

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


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

Оператор INSERT


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


Оператор добавляет в таблицу одну строку

INSERT INTO имя_таблицы [(имена_столбцов, ...)] VALUES[(значения, ...);

INSERT

[ TOP ( expression ) [ PERCENT ] ]

[ INTO]

{ <object> | rowset_function_limited

[ WITH ( <Table_Hint_Limited> [ ...n ] ) ]

}

{

[ ( column_list ) ]

[ <OUTPUT Clause> ]

{ VALUES ( { DEFAULT | NULL | expression } [ ,...n ] )

| derived_table

| execute_statement

}

}

| DEFAULT VALUES

[; ]

 

<object> ::=

{

[ server_name . database_name . schema_name .

| database_name .[ schema_name ] .

| schema_name .

]

table_or_view_name

}

Аргументы

WITH <common_table_expression>

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

Обобщенные табличные выражения также используются инструкциями SELECT, DELETE, UPDATE и CREATE VIEW.

TOP ( expression ) [ PERCENT ]

Задает количество или процент случайных строк для вставки. Выражение expression может быть либо количеством, либо процентом строк. Строки, на которые ссылается выражение TOP, используемое с INSERT, UPDATE и DELETE, не упорядочены.

В инструкциях INSERT, UPDATE и DELETE необходимо разделять круглыми скобками аргумент expression в выражении TOP.

INTO

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

server_name

Имя сервера (используется функцией OPENDATASOURCE как имя сервера), на котором находится таблица или представление. Если указан аргумент server_name, также необходимо указать аргументы database_name и schema_name.

database_name

Имя базы данных.

schema_name

Имя схемы, к которой принадлежит таблица или представление.



table_or view_name

Имя таблицы или представления, которые принимают данные.

Переменную table внутри своей области можно использовать как имя исходной таблицы в инструкции INSERT.

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

rowset_function_limited

Либо функция OPENQUERY либо функция OPENROWSET.

WITH ( <table_hint_limited> [... n ] )

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

( column_list )

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

Если столбец не внесен в column_list, то компонент SQL Server 2005 Database Engine должен обеспечить значение, основанное на определении столбца; в противном случае строку нельзя будет загрузить. Компонент Database Engine автоматически задает значение для столбца, если столбец имеет следующие характеристики.

· Имеется свойство IDENTITY. Используется следующее значение приращения для идентификатора.

· Имеется стандартное значение. Используется стандартное значение для столбца.

· Имеет тип данных timestamp. В этом случае используется текущее значение timestamp.

· Неопределенное значение. Используется значение Null.

· Вычисляемый столбец. Используется вычисленное значение.

Аргумент column_list и список VALUES необходимо использовать, когда в столбец идентификаторов вставляются явно заданные значения, а параметру SET IDENTITY_INSERT необходимо присвоить значение ON для таблицы.

Предложение OUTPUT возвращает вставленные строки во время операции вставки. Оно не поддерживается инструкциями DML, которые ссылаются на локальные секционированные представления, распределенные секционированные представления, расположенные удаленно таблицы или инструкции INSERT, содержащие аргумент execute_statement.

VALUES

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

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

DEFAULT

Указывает компоненту Database Engine необходимость принудительно загружать значения по умолчанию, определенные для столбца. Если для столбца не задано значение по умолчанию и он может содержать значение NULL, вставляется значение NULL. В столбцы с типом данных timestamp вставляется следующее значение временной метки. Значение DEFAULT недопустимо для столбца идентификаторов.

expression

Константа, переменная или выражение. В выражении не может содержаться инструкция SELECT или EXECUTE.

derived_table

Любая допустимая инструкция SELECT, возвращающая строки данных, которые загружаются в таблицу. Инструкция SELECT не может содержать обобщенное табличное выражение (CTE).

execute_statement

Любая допустимая инструкция EXECUTE, возвращающая данные с помощью инструкций SELECT или READTEXT. Инструкция SELECT не может содержать CTE-выражение.

Если аргумент execute_statement используется с инструкцией INSERT, каждый результирующий набор должен быть совместим со столбцами в таблице или списке column_list.

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

В SQL Server 2008 изменена семантика транзакций инструкций INSERT...EXECUTE, выполняемых на связанном сервере с замыканием на себя. В SQL Server 2005 этот сценарий не поддерживается и приводит к ошибкам. В SQL Server 2008 инструкция INSERT...EXECUTE может применяться к связанному серверу с замыканием на себя, когда для соединения не включен режим MARS. Если режим MARS не включен для соединения, то поведение такое же, как в SQL Server 2005.

Если аргумент execute_statement возвращает данные с инструкцией READTEXT, необходимо учитывать, что каждая инструкция READTEXT может возвращать не более 1 МБ (1024 КБ) данных. Аргумент execute_statement также может использоваться с расширенными процедурами. В этом случае он вставляет данные, возвращенные основным потоком расширенной процедуры, но выходные данные, возвращенные потоками, отличными от основного, не будут вставлены.

DEFAULT VALUES

Заполняет новую строку значениями по умолчанию, определенными для каждого столбца.

Замечания

Инструкция INSERT добавляет новые строки к таблице. Чтобы заменить данные в таблице, перед загрузкой новых данных с помощью инструкции INSERT необходимо применить инструкции DELETEили TRANCATE TABLE для очистки существующих данных.

Столбцы, созданные с типом данных uniqueidentifier, содержат двоичные 16-байтные величины специального формата. В отличие от столбцов идентификаторов компонента Database Engine не создает автоматически значения для столбцов с типом данных uniqueidentifier. Во время операции вставки переменные с типом данных uniqueidentifier и строковые константы вида xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 символов, включая дефисы, где x – шестнадцатеричная цифра в диапазоне от 0-9 или a-f) можно использовать для столбцов uniqueidentifier. Например, 6F9619FF-8B86-D011-B42D-00C04FC964FF является допустимым значением переменной uniqueidentifier или столбца. Используйте функцию NEWID() для получения глобального уникального идентификатора (идентификатор GUID).

Инструкции INSERT не учитывает настройки параметра SET ROWCOUNT в местных и расположенных удаленно секционированных представлениях. Также этот параметр не поддерживается инструкциями INSERT для удаленных таблиц в компоненте Database Engine в случае, если уровень совместимости 80 или выше.

Если при выполнении инструкции INSERT возникает арифметическая ошибка (переполнение, деление на ноль или ошибка домена), компонент Database Engine обрабатывает эти ошибки так же, как если бы параметру SET ARITHABORT было присвоено значение ON. Выполнение пакета прекращается и выводится сообщение об ошибке.

При вставке строк применяются следующие правила.

· Если значение загружается в столбцы с типом данных char, varchar или varbinary, то дополнение или усечение конечных пробелов (пробелы для char и varchar, нули для varbinary) определяет параметр SET ANSI_PADDING, определенный для столбца при создании таблицы. В таблице 6.1. показаны операции по умолчанию для параметра SET ANSI_PADDING, установленного в значение OFF.

Таблица 6.1.

Тип данных Стандартная операция
char Заполнение значения пробелами до заданной ширины столбца.
varchar Удаление конечных пробелов до последнего ненулевого символа или до одного пробела, если строка состоит только из пробелов.
varbinary Удаление конечных нулей.

· Если пустая строка ('') загружена в столбец с типом данных varchar или text, то операцией по умолчанию будет загрузка строки нулевой длины.

· Если инструкция INSERT нарушает ограничение или правило или если в ней содержится значение, несовместимое с типом данных столбца, то инструкция не выполняется и компонент Database Engine выдает сообщение об ошибке.

· Вставка значения NULL в столбец text или image не приводит ни к созданию допустимого текстового указателя, ни к предварительному распределению 8-килобайтной текстовой страницы.

· Если инструкция INSERT загружает несколько строк с помощью инструкций SELECT или EXECUTE, то любые нарушения правил или ограничений, возникающие из-за загружаемых значений, приводят к остановке выполнения всей инструкции, и ни одна из строк не будет загружена.

· Если во время вставки значений в таблицы удаленного экземпляра компонента Database Engine указаны не все значения для всех столбцов, необходимо указать столбцы, в которые вставляются определенные значения.

 



<== предыдущая лекция | следующая лекция ==>
Оператор CREATE TABLE | Оператор DELETE


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


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

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

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


 


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

 
 

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

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