Добавление строк с помощью инструкций INSERT и SELECT

Добавлять строки в таблицу с помощью инструкций INSERT и SELECT можно следующими способами:

  • При помощи инструкции INSERT, задав значения непосредственно или из вложенного запроса

  • При помощи инструкции SELECT с предложением INTO.

При помощи инструкции INSERT.

Инструкция INSERT добавляет в таблицу одну или несколько новых строк. В простейшем виде инструкция INSERT имеет следующий вид:

INSERT [INTO] table_or_view [(column_list)] data_values

Инструкция INSERT выполняет вставку в указанную таблицу или представление значений data_values в виде одной или нескольких строк. Параметр column_list представляет собой разделяемый запятыми список имен столбцов, для которых представляются данные. Если аргумент column_list не задается, данные получают все столбцы таблицы или представления.

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

Значения для следующих типов столбцов формирует компонент SQL Server Database Engine, поэтому они в инструкции INSERT не указываются:

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

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

  • Вычисляемые столбцы.

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

    CREATE TABLE TestTable
      (ColA INT PRIMARY KEY,
       ColB INT NOT NULL,
       ColC AS (ColA + ColB) * 2);
    

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


    USE AdventureWorks2008R2;
    GO
    IF OBJECT_ID ('dbo.T1', 'U') IS NOT NULL
        DROP TABLE dbo.T1;
    GO
    CREATE TABLE dbo.T1 
    (
        column_1 AS 'Computed column ' + column_2, 
        column_2 varchar(30) 
            CONSTRAINT default_name DEFAULT ('my column default'),
        column_3 rowversion,
        column_4 varchar(40) NULL
    );
    GO
    INSERT INTO dbo.T1 (column_4) 
        VALUES ('Explicit value');
    INSERT INTO dbo.T1 (column_2, column_4) 
        VALUES ('Explicit value', 'Explicit value');
    INSERT INTO dbo.T1 (column_2) 
        VALUES ('Explicit value');
    INSERT INTO T1 DEFAULT VALUES; 
    GO
    SELECT column_1, column_2, column_3, column_4
    FROM dbo.T1;
    GO

Использование инструкции INSERT с предложением VALUE и вложенным запросом SELECT

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

Использование инструкции SELECT с выражением INTO

Для создания новой таблицы с использованием значений из другой таблицы можно воспользоваться инструкцией SELECT INTO. Например:

SELECT LastName, FirstName, Phone
INTO dbo.PhoneList492
FROM dbo.Customers
WHERE Phone LIKE '492%'

Дополнительные сведения см. в разделе Добавление строк с использованием SELECT INTO.