CREATE SCHEMA

CREATE SCHEMA 명령문은 현재 서버의 스키마를 정의하고 선택적으로 테이블, 보기, 별명, 색인, 순서 및 고유한 유형을 작성합니다. 이러한 오브젝트의 카탈로그 설명에 주석 및 레이블을 추가할 수 있으며 권한을 사용자에게 부여할 수 있습니다.

호출

이 명령문은 애플리케이션 프로그램에 삽입하거나 대화식으로 발행할 수 있습니다. 이 명령문은 동적으로 준비될 수 있는 실행문입니다.

권한부여

명령문의 권한부여 ID는 다음 권한 중 적어도 하나 이상을 보유해야 합니다.

  • 다음 CL 명령에 대한 *USE 시스템 권한:
    • 라이브러리 작성(CRTLIB)
    • WITH DATA DICTIONARY가 지정되는 경우 데이터 사전 작성(CRTDTADCT)
  • 데이터베이스 관리자 권한

명령문의 권한부여 ID는 다음 권한 중 적어도 하나 이상을 보유해야 합니다.

  • CREATE SCHEMA 명령문에 포함된 각 SQL 명령문에 대해 정의된 권한
  • 데이터베이스 관리자 권한

AUTHORIZATION절이 지정되는 경우 명령문의 권한부여 ID는 다음 중 하나 이상의 권한을 보유해야 합니다.

  • authorization-name에 의해 식별되는 사용자 프로파일에 대한 시스템 권한 *ADD
  • 데이터베이스 관리자 권한

구문

구문 도표 읽기시각적 구문 도표 생략
>>-CREATE SCHEMA------------------------------------------------>

>--+-schema-name--+-------------------------------------+-+----->
   |              |      .-SCHEMA-.                     | |   
   |              '-FOR -+--------+--system-schema-name-' |   
   '-AUTHORIZATION--authorization-name--------------------'   

>--+----------------------+------------------------------------->
   '-IN ASP--+-integer--+-'   
             '-ASP-name-'     

>--+----------------------------------------------------+------><
   | .------------------------------------------------. |   
   | V                                                | |   
   '---+-COMMENT statement--------------------------+-+-'   
       +-CREATE ALIAS statement---------------------+       
       +-CREATE INDEX statement---------------------+       
       +-CREATE SEQUENCE statement------------------+       
       +-CREATE TABLE statement---------------------+       
       +-CREATE TYPE (Array) statement--------------+       
       +-CREATE TYPE (Distinct) statement-----------+       
       +-CREATE VIEW statement----------------------+       
       +-GRANT (Sequence Privileges) statement------+       
       +-GRANT (Table or View Privileges) statement-+       
       +-GRANT (Type Privileges) statement----------+       
       |                 (1)                        |       
       '-LABEL statement----------------------------'       

참고:
  1. 스키마에서 작성된 오브젝트 유형에 대한 레이블 및 주석만 CREATE SCHEMA 명령문에서 지원됩니다.

설명

schema-name
스키마의 이름을 지정합니다. 스키마는 이 이름을 사용하여 작성됩니다. schema-name이 지정되는 경우 명령문의 권한부여 ID는 런타임 권한부여 ID입니다. 이 이름은 현재 서버의 기존 스키마의 이름과 달라야 합니다. 이 이름은 'SYS' 또는 'Q'로 시작해서는 안됩니다. 그러한 스키마명은 스키마가 시스템 스키마임을 표시합니다.

schema-name이 유효한 시스템명이 아니고 system-schema-name이 지정되지 않는 경우 SQL이 시스템명을 생성합니다. 이름을 생성하기 위한 규칙에 대한 정보는 스키마명 생성 규칙의 내용을 참조하십시오.

SCHEMA system-schema-name의 경우
스키마의 시스템명을 식별합니다. system-schema-name은 현재 서버에 이미 존재하는 스키마와 달라야 합니다. system-schema-name은 유효한 시스템명인 규정되지 않은 시스템 ID여야 합니다.

schema-namesystem-schema-name 둘 다 지정되는 경우 둘 다 유효한 시스템일 수는 없습니다.

authorization-name
명령문의 권한부여 ID를 식별합니다. 이 권한부여 이름도 schema-name입니다. 이 이름은 현재 서버의 기존 스키마의 이름과 달라야 합니다.
IN ASP integer
스키마를 작성할 보조 기억장치 풀(ASP)을 지정합니다. 1 - 32 사이의 정수여야 합니다. 1을 지정하는 경우 스키마는 시스템 ASP에서 작성됩니다. 이 절이 생략되는 경우 ASP 1로 가정합니다.
IN ASP ASP-name
스키마를 작성할 보조 기억장치 풀(ASP)을 지정합니다. 이 이름은 현재 서버에 있는 보조 기억장치 풀을 식별해야 합니다.
COMMENT 명령문
스키마에서 작성된 오브젝트에 대한 카탈로그 설명에서 주석을 추가하거나 대체합니다. 스키마에서 작성된 오브젝트에 대한 주석만 허용됩니다. COMMENT 명령문 COMMENT의 내용을 참조하십시오.
CREATE ALIAS 명령문
별명을 스키마로 작성합니다. CREATE ALIAS 명령문 CREATE ALIAS의 내용을 참조하십시오.
CREATE INDEX 명령문
색인을 스키마로 작성합니다. CREATE INDEX 명령문 CREATE INDEX의 내용을 참조하십시오.
CREATE SEQUENCE 명령문
순서를 스키마로 작성합니다. CREATE SEQUENCE 명령문 CREATE SEQUENCE의 내용을 참조하십시오.
CREATE TABLE문
테이블을 스키마로 작성합니다. CREATE TABLE문 CREATE TABLE의 내용을 참조하십시오.
CREATE TYPE (Array) 명령문
배열 유형을 스키마로 작성합니다. CREATE TYPE (Array) 명령문 CREATE TYPE(배열)의 내용을 참조하십시오.
CREATE TYPE (Distinct) 명령문
사용자 정의 고유 유형을 스키마로 작성합니다. CREATE TYPE (Distinct) 명령문 CREATE TYPE(고유한)의 내용을 참조하십시오.
CREATE VIEW 명령문
보기를 스키마로 작성합니다. CREATE VIEW 명령문 CREATE VIEW의 내용을 참조하십시오.
GRANT (Sequence Privileges) 명령문
스키마에서 순서에 대한 권한을 부여합니다. GRANT 명령문 GRANT(시퀀스 특권)의 내용을 참조하십시오.
GRANT (Table or View Privileges) 명령문
스키마에서 테이블 및 보기에 대한 권한을 부여합니다. GRANT 명령문 GRANT(테이블 또는 보기 권한)의 내용을 참조하십시오.
GRANT (Type Privileges) 명령문
스키마에서 유형에 대한 권한을 부여합니다. GRANT 명령문 GRANT(유형 권한)의 내용을 참조하십시오.
LABEL 명령문
스키마에서 작성된 오브젝트에 대한 카탈로그 설명에서 레이블을 추가하거나 대체합니다. 스키마에서 작성된 오브젝트에 대한 레이블만 허용됩니다. LABEL 명령문 LABEL의 내용을 참조하십시오.

스키마 속성: 스키마가 다음 항목으로 작성됩니다.

  • 라이브러리: 라이브러리는 관련된 오브젝트를 그룹화하고 라이브러리를 사용하면 이름으로 오브젝트를 찾을 수 있습니다.
  • 카탈로그: 카탈로그는 스키마 내 테이블, 보기, 색인 및 기타 오브젝트에 대한 설명을 포함합니다. 카탈로그는 일련의 보기로 구성됩니다. 자세한 정보는 SQL 프로그래밍의 내용을 참조하십시오.
  • 저널 및 저널 리시버: 저널 QSQJRN 및 저널 리시버 QSQJRN0001은 스키마에서 작성되고 스키마에서 나중에 작성된 모든 테이블에 대한 변경사항을 기록하는 데 사용됩니다. 자세한 정보는 저널 관리의 내용을 참조하십시오.

분배된 테이블에 대해 작성된 색인은 테이블이 분배되는 모든 서버에 대해 작성됩니다. 분배 테이블에 대한 자세한 정보는 DB2® Multisystem의 내용을 참조하십시오.

오브젝트 소유권: 스키마 및 작성된 오브젝트의 소유권은 다음과 같이 판별됩니다.

  • AUTHORIZATION절을 지정하는 경우 지정된 권한부여 ID는 스키마 및 명령문에 의해 작성된 모든 오브젝트를 소유합니다.
  • 그렇지 않은 경우 스키마 및 명령문에 의해 작성된 모든 오브젝트의 소유자는 명령문을 실행하는 스레드의 그룹 사용자 프로파일 또는 사용자 프로파일입니다.

오브젝트 권한: SQL명이 사용되는 경우 스키마 및 다른 오브젝트는 *PUBLIC 에 대한 시스템 권한 *EXCLUDE를 사용하여 작성되고 라이브러리는 권한 작성 매개변수 CRTAUT(*EXCLUDE)로 작성됩니다. 소유자는 스키마에 대한 권한을 가지는 사용자만 해당됩니다. 다른 사용자가 스키마에 대한 권한을 요구하는 경우 소유자는 CL 명령 오브젝트 권한부여(GRTOBJAUT)를 사용하여 작성된 오브젝트에 권한을 부여할 수 있습니다.

시스템명이 사용되는 경우 스키마 및 다른 오브젝트는 시스템 값 QCRTAUT에 의해 판별되는 *PUBLIC에 지정된 시스템 권한을 사용하여 작성되고 라이브러리는 CRTAUT(*SYSVAL)로 작성됩니다. 시스템 보안에 대한 자세한 정보는 보안 참조SQL 프로그래밍의 내용을 참조하십시오.

스키마의 소유자가 그룹 프로파일(GRPPRF 키워드)의 멤버이고 그룹 권한이 지정되는 경우(GRPAUT 키워드) 해당 그룹 프로파일도 스키마에 대한 권한을 가지게 됩니다.

오브젝트명: CREATE TABLE, CREATE INDEX, CREATE ALIAS, CREATE TYPE, CREATE SEQUENCE 또는 CREATE VIEW 명령문에 작성 중인 테이블, 색인, 별명, 고유한 유형, 순서 또는 보기에 대한 규정된 이름이 포함된 경우 해당 규정된 이름에서 지정되는 스키마명은 작성 중인 스키마의 이름과 같아야 합니다. 스키마 정의 내에서 참조되는 다른 오브젝트명은 스키마명으로 규정될 수 있습니다. SQL문에 있는 규정되지 않은 테이블, 색인, 별명, 고유한 유형, 순서 또는 보기명은 작성된 스키마의 이름으로 내재적으로 규정됩니다.

분리문자는 SQL문 사이에 사용되지 않습니다.

SQL문 길이: CREATE SCHEMA 명령문이 RUNSQLSTM 명령을 통해 실행되는 경우 CREATE SCHEMA 명령문 내에 있는 개별 CREATE TABLE, CREATE INDEX, CREATE TYPE, CREATE ALIAS, CREATE SEQUENCE, CREATE VIEW, COMMENT, LABEL 또는 GRANT 명령문의 최대 길이는 2 097 152입니다. 그렇지 않은 경우 전체 CREATE SCHEMA 명령문은 2 097 152로 제한됩니다.

이름 분석 성능: 스키마의 이름은 스키마의 오브젝트를 참조하는 명령문의 성능에 영향을 미칠 수 있습니다. 스키마명의 길이가 30보다 큰 경우 스키마에서 찾기 오브젝트의 성능은 이름 길이가 30이하인 스키마에 비해 좋지 않습니다. 성능 영향을 최소화하려면 시스템명과 스키마명의 처음 5개 문자가 같아야 합니다.

구문 대안: 이전 릴리스에 대한 호환성을 위해 SCHEMA의 동의어로 COLLECTION 키워드를 사용할 수 있습니다. 이 키워드는 비표준이고 사용해서는 안됩니다.

폐기 피처: WITH DATA DICTIONARY 절은 IDDU 데이터 사전이 스키마에서 작성되도록 합니다. 이 절은 CREATE SCHEMA 명령문의 끝에 지정할 수 있고 여전히 지원되지만 권장되지 않습니다.

데이터 사전을 사용하여 작성된 스키마는 LOB, XML 또는 DATALINK 열이 있는 테이블을 포함할 수 없습니다. 이 절에는 카탈로그 보기의 작성에 영향을 미치지 않습니다.

스키마명 생성 규칙

스키마가 10자 이하 길이 이름으로 작성되면 시스템명이 생성됩니다.

스키마가 작성되면 스키마에 액세스하기 위해 SQL문에서 SQL명 또는 해당 시스템명을 둘 다 사용할 수 있습니다. 그러나 SQL명은 i용 DB2에 의해서만 인식되므로 다른 환경에서는 시스템명을 사용해야 합니다.

schema-name이 일반 ID이고 10자보다 길면 다음과 같이 10자 system-schema-name이 생성됩니다.

  • 이름의 처음 5개 문자
  • 5자리 고유 숫자

예를 들면, 다음과 같습니다.

The system-schema-name for LONGSCHEMANAME would be LONGS00001
schema-name이 분리 ID이고 10자보다 길면 다음과 같이 10자 system-schema-name이 생성됩니다.
  • 분리문자 내 처음 4자가 system-schema-name의 처음 문자로 사용됩니다.
  • 처음 4자가 모두 대문자, 숫자 또는 밑줄인 경우 밑줄 및 5자리 고유 수가 추가됩니다.
  • 그렇지 않은 경우 4자리 고유 수가 추가됩니다.

예를 들면, 다음과 같습니다.

   The system name for "longschemaname" would be "long0001"
   The system name for "LONGSchemaName" would be LONG_00001   

예 1: 명세 파트 테이블 및 파트 번호에 대한 색인이 있는 스키마를 작성합니다. 사용자 프로파일 JONES에 스키마에 대한 권한을 제공합니다.

   CREATE SCHEMA INVENTORY

   CREATE TABLE PART (PARTNO SMALLINT NOT NULL,
                      DESCR  VARCHAR(24),
                      QUANTITY INT)

   CREATE INDEX PARTIND ON PART (PARTNO)

   GRANT ALL ON PART TO JONES

예 2: SMITH의 권한부여 ID를 사용하여 스키마를 작성합니다. 학생 번호 열에 대한 주석이 있는 학생 테이블을 작성합니다.

   CREATE SCHEMA AUTHORIZATION SMITH

   CREATE TABLE SMITH.STUDENT (STUDNBR SMALLINT NOT NULL UNIQUE,
                               LASTNAME CHAR(20),
                               FIRSTNAME CHAR(20),
                               ADDRESS CHAR(50))

   COMMENT ON STUDENT (STUDNBR IS 'THIS IS A UNIQUE ID#')