CREATE TABLE(SQL Server Compact)

새 Microsoft SQL Server Compact 테이블을 만듭니다.

구문

CREATE TABLE table_name 
   ( { < column_definition > | < table_constraint > } [ ,...n ] 
   ) 
< column_definition > ::= 
   { column_name data_type } 
   [ { DEFAULT constant_expression 
      | [ IDENTITY [ ( seed , increment ) ]
      ]
    } ] 
   [ ROWGUIDCOL ] 
   [ < column_constraint > [ ...n ] ]
< column_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ NULL | NOT NULL ] 
      | [ PRIMARY KEY | UNIQUE ] 
      | REFERENCES ref_table [ ( ref_column ) ] 
      [ ON DELETE { CASCADE | NO ACTION } ] 
      [ ON UPDATE { CASCADE | NO ACTION } ] 
    }
< table_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ { PRIMARY KEY | UNIQUE } 
      { ( column [ ,...n ] ) } 
      ]
   | FOREIGN KEY 
     ( column [ ,...n ] )
      REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] 
      [ ON DELETE { CASCADE | NO ACTION } ]
      [ ON UPDATE { CASCADE | NO ACTION } ] 
   }

인수

  • table_name
    새 테이블의 이름입니다. 테이블 이름은 식별자 규칙에 맞아야 합니다. table_name은 데이터베이스 내에서 고유해야 합니다. table_name은 최대 128자를 사용할 수 있습니다.

  • column_name
    테이블의 열 이름입니다. 열 이름은 식별자 규칙에 맞아야 하고 해당 테이블에서 고유해야 합니다.

    참고

    SQL Server Compact 데이터베이스의 열 이름은 "__sys"로 시작할 수 없습니다. 예를 들어 __sysobjects는 제한된 열 이름입니다.

  • data_type
    열 데이터 형식을 지정합니다. 데이터 형식에 대한 자세한 내용은 데이터 형식과 RDA을 참조하십시오.

  • DEFAULT
    삽입 동작 중에 값이 명시적으로 제공되지 않을 경우 열에 제공되는 값을 지정합니다. DEFAULT 정의는 IDENTITY 속성에서 정의한 열을 제외한 모든 열에 적용할 수 있습니다. 테이블이 삭제되면 DEFAULT 정의가 제거됩니다. 상수 값은 기본값으로 사용될 수 있습니다.

  • IDENTITY
    새 열이 ID 열임을 나타냅니다. 테이블에 새 행이 추가되면 SQL Server Compact는 열에 대해 고유한 증가값을 제공합니다. ID 열은 일반적으로 PRIMARY KEY 제약 조건과 함께 사용하여 테이블의 고유 행 식별자 역할을 합니다. IDENTITY 속성은 int 열에만 할당할 수 있습니다. 각 테이블에는 한 개의 ID 열만 만들 수 있습니다. ID 열에는 바인딩된 기본값 및 DEFAULT 제약 조건을 사용할 수 없습니다. 초기값과 증가값을 모두 지정하거나 모두 지정하지 않아야 합니다. 지정하지 않으면 기본값 (1,1)이 사용됩니다.

  • seed
    테이블에 로드되는 첫 번째 행에 사용되는 값입니다.

  • increment
    로드된 이전 행의 ID 값에 추가되는 증가값입니다.

  • ROWGUIDCOL
    새 열이 행 전역 고유 식별자 열임을 나타냅니다. 각 테이블 마다 uniqueidentifier 열만 ROWGUIDCOL 열로 지정할 수 있습니다. ROWGUIDCOL 속성은 uniqueidentifier 열에만 할당할 수 있습니다.

    ROWGUIDCOL은 테이블에 삽입된 새 행의 값을 자동으로 생성합니다.

  • CONSTRAINT
    PRIMARY KEY, UNIQUE 또는 FOREIGN KEY 제약 조건 정의의 처음을 나타내는 옵션 키워드입니다. 제약 조건은 데이터 무결성을 강화하고 테이블 및 해당 열에 대한 특정 유형의 인덱스를 만드는 특수한 속성입니다.

  • constraint_name
    제약 조건의 이름입니다. constraint_name은 선택 사항이며 데이터베이스 내에서 고유해야 합니다. constraint_name을 지정하지 않으면 SQL Server Compact에서 제약 조건 이름을 생성합니다.

  • NULL | NOT NULL
    열에서 Null 값을 허용할지 여부를 지정하는 키워드입니다. NULL은 엄격히 제약 조건은 아니지만 NOT NULL과 같은 방법으로 지정할 수 있습니다.

  • PRIMARY KEY
    고유 인덱스를 사용하여 특정 열 또는 여러 열에 엔터티 무결성을 제공하는 제약 조건입니다. 각 테이블에는 한 개의 PRIMARY KEY 제약 조건만 만들 수 있습니다.

  • UNIQUE
    고유 인덱스를 사용하여 특정 열에 대한 엔터티 무결성을 제공하는 제약 조건입니다. UNIQUE 제약 조건의 열은 NULL이 될 수 있으나, NULL 값은 열당 한 개씩만 허용됩니다. 테이블에는 여러 개의 UNIQUE 제약 조건이 있을 수 있습니다.

    참고

    SQL Server Compact에서는 인덱스를 사용하여 PRIMARY KEY 및 UNIQUE 제약 조건을 적용할 수 있습니다. 이 동작에 의존하거나 제약 조건의 일부로 생성되는 인덱스를 수정하지 않는 것이 좋습니다.

  • FOREIGN KEY...REFERENCES
    열에 있는 데이터에 대한 참조 무결성을 제공하는 제약 조건입니다. FOREIGN KEY 제약 조건의 경우 열의 각 값이 참조 테이블의 지정된 열에 있어야 합니다.

  • ref_table
    FOREIGN KEY 제약 조건이 참조하는 테이블의 이름입니다.

  • ( ref_column [ ,...n ] ) ,
    FOREIGN KEY 제약 조건이 참조하는 테이블의 열 또는 열 목록입니다.

  • ON DELETE {CASCADE | NO ACTION}
    생성된 테이블의 행에 참조 관계가 있고 참조된 행이 부모 테이블에서 삭제된 경우 해당 행에서 수행되는 동작을 지정합니다. 기본값은 NO ACTION입니다.

    CASCADE를 지정한 경우 부모 테이블에서 참조된 열을 삭제하면 참조 테이블의 해당 열이 삭제됩니다. NO ACTION으로 지정하면 SQL Server Compact는 오류를 반환하며 부모 테이블의 참조된 행에서 삭제 동작이 롤백됩니다.

  • ON UPDATE {CASCADE | NO ACTION}
    생성된 테이블의 행에 참조 관계가 있고 참조된 행이 부모 테이블에서 업데이트된 경우 해당 행에서 수행되는 동작을 지정합니다. 기본값은 NO ACTION입니다.

    CASCADE를 지정한 경우 부모 테이블에서 참조된 열을 업데이트하면 참조 테이블의 해당 열이 업데이트됩니다. NO ACTION으로 지정하면 SQL Server Compact는 오류를 반환하며 부모 테이블의 참조된 행에서 업데이트 동작이 롤백됩니다.

  • column
    테이블 제약 조건에서 괄호 속에 들어 있는 열 또는 열 목록으로, 제약 조건 정의에 사용되는 열을 나타냅니다.

주의

열 정의

테이블을 작성하는 경우 최소한 하나 이상의 열을 정의해야 합니다.

제약 조건

  • PRIMARY KEY 제약 조건

    • 테이블은 한 개의 PRIMARY KEY 제약 조건만 포함할 수 있습니다.

    • 각 PRIMARY KEY는 인덱스를 생성합니다.

    • PRIMARY KEY 제약 조건에 정의한 열은 모두 NOT NULL로 정의해야 합니다. Null 허용 여부가 지정되지 않은 경우 PRIMARY KEY 제약 조건에 참여하는 모든 열은 Null 허용 여부가 NOT NULL로 설정됩니다.

  • UNIQUE 제약 조건

    • 각 UNIQUE 제약 조건은 인덱스를 생성합니다.
  • FOREIGN KEY 제약 조건

    • NULL 이외의 값이 FOREIGN KEY 제약 조건의 열에 입력된 경우 이 값은 참조된 열에 있어야 합니다. 그렇지 않으면 외래 키 위반 오류 메시지가 반환됩니다.

    • FOREIGN KEY 제약 조건은 같은 테이블의 다른 열을 참조할 수 있으며, 이것을 자체 참조라고 합니다. 그러나 FOREIGN KEY 제약 조건은 자체 참조 또는 순환 FOREIGN KEY 제약 조건을 만드는 데 사용할 수 없습니다.

    • 열 수준 FOREIGN KEY 제약 조건의 REFERENCES 절은 한 개의 참조 열만 나열할 수 있습니다. 이 데이터 형식은 제약 조건이 정의된 열과 같아야 합니다.

    • 테이블 수준 FOREIGN KEY 제약 조건의 REFERENCES 절에 있는 참조 열의 수는 제약 조건 열 목록에 있는 열의 수와 같아야 합니다. 각 참조 열의 데이터 형식도 열 목록에 있는 해당 열과 같아야 합니다.

    • FOREIGN KEY 제약 조건은 참조된 테이블에서 PRIMARY KEY 또는 UNIQUE 제약 조건의 열만 참조할 수 있습니다. FOREIGN KEY 제약 조건은 고유 인덱스를 참조할 수 없습니다.

  • 추가 제약 조건 정보

    • 제약 조건용으로 만든 인덱스는 DROP INDEX 문으로 삭제할 수 없습니다. 제약 조건은 반드시 ALTER TABLE DROP CONSTRAINT 문으로 삭제해야 합니다.

    • 제약 조건 이름은 숫자 기호(#)로 시작할 수 없다는 규칙을 제외하고 식별자에 대한 규칙을 따라야 합니다. CONSTRAINT 키워드와 constraint_name을 입력하지 않은 경우 시스템이 제약 조건 이름을 생성 및 할당합니다.

    • 제약 조건이 INSERT, UPDATE 또는 DELETE 문에 위반된 경우 해당 문이 중지됩니다.

DEFAULT 정의

열에는 한 개의 DEFAULT 정의만 허용됩니다. 이 정의는 상수 값 또는 상수 함수를 포함할 수 있습니다.

테이블 정의 내의 Null 허용 여부 규칙

열의 Null 허용 여부는 열이 Null 값(NULL)을 해당 열에서 데이터로 허용할지 여부를 지정합니다. NULL은 0 또는 공백이 아닙니다. NULL은 입력 내용이 없거나 명시적 NULL이 입력되었음을 의미하며 일반적으로 값을 알 수 없거나 적용할 수 없음을 나타냅니다.

다음 예는 실행 방법을 보여 줍니다.

  1. ID 열이 PRIMARY KEY이고 열이 두 개인 테이블을 작성합니다.

  2. PRIMARY KEY 제약 조건이 있고 열이 한 개인 테이블을 작성합니다.

  3. 열 중 하나가 다른 테이블의 열을 참조하는 테이블을 작성합니다.

CREATE TABLE MyCustomers (CustID int IDENTITY (100,1) PRIMARY KEY, CompanyName nvarchar (50))

CREATE TABLE MyCustomers2 (CustID int CONSTRAINT pkCustId PRIMARY KEY)

CREATE TABLE MyOrders (OrderID int, CustID int REFERENCES MyCustomers(CustID))