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 2005 데이터베이스 엔진에서 값을 생성하므로 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 AdventureWorks;
GO
IF OBJECT_ID ('dbo.T1', 'U') IS NOT NULL
    DROP TABLE dbo.T1;
GO
CREATE TABLE dbo.T1 
(
    column_1 int IDENTITY, 
    column_2 varchar(30) 
        CONSTRAINT default_name DEFAULT ('my column default'),
    column_3 timestamp,
    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 하위 쿼리 사용

제공된 데이터 값은 열 목록과 일치해야 합니다. 데이터 값의 개수는 열 개수와 동일해야 하며 각 데이터 값의 데이터 형식, 전체 자릿수, 소수 자릿수는 해당 열의 데이터 형식, 전체 자릿수, 소수 자릿수와 일치해야 합니다. 다음과 같은 방법으로 데이터 값을 지정할 수 있습니다.

  • VALUES 절을 사용하여 한 행에 데이터 값을 지정합니다. 예를 들면 다음과 같습니다.

    INSERT INTO MyTable (PriKey, Description)
           VALUES (123, 'A description of part 123.')
    

    자세한 내용은 INSERT 및 값을 사용하여 행 삽입을 참조하십시오.

  • 다음과 같이 SELECT 하위 쿼리를 사용하여 하나 이상의 행에 데이터 값을 지정합니다.

    INSERT INTO MyTable  (PriKey, Description)
           SELECT ForeignKey, Description
           FROM SomeView
    

    자세한 내용은 INSERT 및 SELECT 하위 쿼리를 사용하여 행 삽입을 참조하십시오.

SELECT에 INTO 사용

다른 테이블의 값에서 새 테이블을 만들려면 SELECT INTO를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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

자세한 내용은 SELECT INTO를 사용하여 행 삽입을 참조하십시오.

참고 항목

관련 자료

SELECT(Transact-SQL)
INSERT(Transact-SQL)
테이블에 데이터 삽입

도움말 및 정보

SQL Server 2005 지원 받기