다음을 통해 공유


테이블에서 계산 열 지정

계산 열은 해당 열에 PERSISTED 표시가 없는 한 테이블에 물리적으로 저장되지 않는 가상의 열입니다. 계산 열 식에서는 이 식이 속한 열의 값을 계산하기 위해 다른 열의 데이터를 사용할 수 있습니다. SQL Server Management Studio 또는 Transact-SQL을 사용하여 2014년 SQL Server 계산 열에 대한 식을 지정할 수 있습니다.

항목 내용

시작하기 전에

제한 사항

  • 계산 열은 DEFAULT 또는 FOREIGN KEY 제약 조건 정의로 사용하거나 NOT NULL 제약 조건 정의와 함께 사용할 수 없습니다. 그러나 계산 열 값이 명확한 식에 의해 정의되고 결과의 데이터 형식이 인덱스 열에 허용되는 경우에는 계산 열을 인덱스의 키 열이나 PRIMARY KEY 또는 UNIQUE 제약 조건의 일부로 사용할 수 있습니다. 예를 들어 테이블에 a와 b라는 정수 열이 있을 때 계산 열 a + b에는 인덱스를 작성할 수 있지만 계산 열 a+DATEPART(dd, GETDATE())는 다음 호출 시 값이 바뀌므로 인덱스를 작성할 수 없습니다.

  • 계산 열은 INSERT 또는 UPDATE 문의 대상이 될 수 없습니다.

보안

사용 권한

테이블에 대한 ALTER 사용 권한이 필요합니다.

SQL Server Management Studio 사용

새 계산 열을 추가하려면

  1. 개체 탐색기에서 새 계산 열을 추가할 테이블을 확장합니다. 을 마우스 오른쪽 단추로 클릭하고 새 열을 선택합니다.

  2. 열 이름을 입력하고 기본 데이터 형식 nchar(10)을 적용합니다. 데이터베이스 엔진 에서는 수식에 지정된 식에 데이터 형식 우선 순위 규칙을 적용하여 계산 열의 데이터 형식을 결정합니다. 예를 들어 수식에서 money 형식 열과 int 형식 열을 참조하는 경우 데이터 형식의 우선 순위가 더 높으므로 계산 열은 money 형식입니다. 자세한 내용은 데이터 형식 우선 순위(Transact-SQL)를 참조하세요.

  3. 열 속성 탭에서 계산 열 사양 속성을 확장합니다.

  4. (수식) 자식 속성에서 오른쪽에 있는 표 형태 셀에 현재 열의 식을 입력합니다. 예를 들어 SalesTotal 열에 입력한 수식이 SubTotal+TaxAmt+Freight일 경우 이 수식은 테이블의 각 행에 대해 이 열에 값을 추가합니다.

    중요

    수식으로 데이터 형식이 다른 두 식을 결합할 경우 데이터 형식 우선 순위 규칙에 따라 우선 순위가 낮은 데이터 형식이 우선 순위가 높은 데이터 형식으로 변환됩니다. 이 암시적 변환이 지원되지 않으면 "Error validating the formula for column column_name." 오류가 반환됩니다. CAST 또는 CONVERT 함수를 사용하여 데이터 형식 충돌을 해결합니다. 예를 들어 nvarchar 형식 열을 int 형식 열과 결합할 경우 ('Prod'+CONVERT(nvarchar(23),ProductID)) 수식에 표시된 대로 정수 형식을 nvarchar으로 변환해야 합니다. 자세한 내용은 CAST 및 CONVERT(Transact-SQL)를 참조하세요.

  5. 지속형 자식 속성 드롭다운에서 또는 아니요 를 선택하여 데이터를 지속할지 여부를 지정합니다.

  6. 파일 메뉴에서 ‘테이블 이름’ 저장을 클릭합니다.

기존 열에 계산 열 정의를 추가하려면

  1. 개체 탐색기에서 변경할 열이 포함된 테이블을 마우스 오른쪽 단추로 클릭하고 폴더를 확장합니다.

  2. 계산 열 수식을 지정할 열을 마우스 오른쪽 단추로 클릭하고 삭제를 클릭합니다. 확인을 클릭합니다.

  3. 새 열을 추가하고 이전 절차에 따라 새 계산 열을 추가하여 계산 열 수식을 지정합니다.

Transact-SQL 사용

테이블을 만들 때 계산 열을 추가하려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣은 후 실행을 클릭합니다. 이 예에서는 QtyAvailable 열의 값을 UnitPrice 열의 값으로 곱하는 계산 열을 포함하는 테이블을 만듭니다.

    CREATE TABLE dbo.Products   
    (  
        ProductID int IDENTITY (1,1) NOT NULL  
      , QtyAvailable smallint  
      , UnitPrice money  
      , InventoryValue AS QtyAvailable * UnitPrice  
    );  
    
    -- Insert values into the table.  
    INSERT INTO dbo.Products (QtyAvailable, UnitPrice)  
    VALUES (25, 2.00), (10, 1.5);  
    
    -- Display the rows in the table.  
    SELECT ProductID, QtyAvailable, UnitPrice, InventoryValue  
    FROM dbo.Products;  
    
    

기존 테이블에 새 계산 열을 추가하려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣은 후 실행을 클릭합니다. 다음 예에서는 이전 예에서 만든 테이블에 새 열을 추가합니다.

    ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.35);  
    
    

기존 열을 계산 열로 변경하려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 기존 열을 계산 열로 변경하려면 계산 열을 삭제한 후 다시 만들어야 합니다. 다음 예를 복사하여 쿼리 창에 붙여 넣은 후 실행을 클릭합니다. 다음 예에서는 이전 예에서 추가한 열을 수정합니다.

    ALTER TABLE dbo.Products DROP COLUMN RetailValue;  
    GO  
    ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5);  
    
    

    자세한 내용은 ALTER TABLE(Transact-SQL)을 참조하세요.