이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 스포츠 토토 사이트 작성버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

만들기 표

이름

CREATE TABLE -- 새 토토 정의

시놉시스

[ [ 글로벌 | 로컬 ]  임시 | 온도  ] 표테이블_이름 (
  { 열_이름 데이터_유형[ 기본값default_expr ] [ column_constraint [ ... ] ]
    | table_constraint| 좋아요parent_table[  포함 |  기본값 제외 ]  [, ... ]
)
[ 상속(parent_table[, ... ] ) ]
[ OIDS 사용 | OIDS 없음]
[ 커밋 중  행 보존 | 행 삭제 | 삭제  ]

어디서column_constraint다음과 같습니다:

[ 제약 조건제약_이름]
 NULL이 아님 | NULL | 독특한 | 기본 키 |
  확인(표현) |
  참조재조정 가능 [ ( refcolumn) ] [ 전체 일치 | 부분 일치 | 매치 심플 ]
    [ 삭제 중액션] [ 업데이트 중액션]table_constraint다음과 같습니다:

[ 제약 조건제약_이름]
 고유함(컬럼_이름[, ... ] ) |
  기본 키(열_이름[, ... ] ) |
  확인(표현) |
  외래 키(컬럼_이름[, ... ] ) 참조재조정 가능 [ ( refcolumn[, ... ] ) ]
    [ 전체 일치 | 부분 일치 | 단순 일치 ] [ 삭제 시액션] [ 업데이트 중액션]

설명

토토 생성새로운 것을 생성할 것입니다. 현재 데이터베이스의 처음에는 비어 있는 테이블입니다. 테이블은 명령을 실행하는 사용자가 소유합니다.

스키마 이름이 제공된 경우(예:토토 myschema.mytable 생성 ...) 그 다음 테이블 지정된 스키마에 생성됩니다. 그렇지 않으면 다음에 생성됩니다. 현재 스키마. 임시 테이블은 특수한 스키마에 존재하며, 따라서 임시 생성 시 스키마 이름이 제공되지 않을 수 있습니다. 테이블. 테이블 이름은 다른 테이블 이름과 구별되어야 합니다. 동일한 스키마의 테이블, 시퀀스, 인덱스 또는 뷰.

토토 생성또한 자동으로 복합 유형을 나타내는 데이터 유형을 생성합니다. 테이블의 한 행에 해당합니다. 따라서 테이블은 동일한 데이터 유형의 기존 데이터 유형과 동일한 이름을 가집니다. 스키마.

토토은 1600개 이상의 열을 가질 수 없습니다. (실제로는 튜플 길이로 인해 유효 제한이 더 낮습니다. 제약).

선택적 제약 조건 절은 제약 조건(또는 테스트)을 지정합니다. 새 행이나 업데이트된 행이 삽입이나 업데이트를 충족해야 함 성공하기 위한 작전. 제약 조건은 다음을 수행하는 데 도움이 되는 SQL 개체입니다. 다양한 방법으로 테이블의 유효한 값 집합을 정의합니다.

제약조건을 정의하는 방법에는 두 가지가 있습니다: 테이블 제약조건 및 열 제약 조건. 열 제약 조건은 다음의 일부로 정의됩니다. 열 정의. 테이블 제약 조건 정의는 다음에 연결되어 있지 않습니다. 특정 열이며 두 개 이상의 열을 포함할 수 있습니다. 모든 열 제약 조건은 테이블로도 작성할 수 있습니다. 제약; 열 제약 조건은 표기상의 편의일 뿐입니다. 제약 조건이 하나의 열에만 영향을 미치는 경우.

매개변수

임시또는온도

지정되면 테이블이 임시 테이블로 생성됩니다. 임시 테이블은 작업이 끝나면 자동으로 삭제됩니다. 세션 또는 선택적으로 현재 세션이 끝날 때 트랜잭션(아래 ON COMMIT 참조). 기존 영구 같은 이름의 테이블은 현재 테이블에 표시되지 않습니다. 세션이 존재하지 않는 한 임시 테이블이 존재하는 동안 세션 스키마 한정 이름으로 참조됩니다. 생성된 모든 인덱스 임시 테이블의 경우 자동으로 임시입니다. 음.

선택적으로,글로벌또는로컬이전에 쓸 수 있음임시또는온도. 이것은 아무런 차이가 없습니다PostgreSQL하지만 보세요호환성.

테이블_이름

테이블의 이름(선택적으로 스키마 한정) 생성됩니다.

컬럼_이름

새 테이블에 생성될 열의 이름입니다.

데이터_유형

열의 데이터 유형. 여기에는 배열이 포함될 수 있습니다. 지정자.

기본값default_expr

기본값절은 다음을 할당합니다. 열 정의가 있는 열의 기본 데이터 값 안에 나타납니다. 값은 변수가 없습니다. 표현식(다른 표현식에 대한 하위 쿼리 및 상호 참조 현재 테이블의 열은 허용되지 않습니다. 데이터 기본 표현식의 유형은 다음의 데이터 유형과 일치해야 합니다. 열.

기본 표현식이 모든 삽입에 사용됩니다 열의 값을 지정하지 않는 작업입니다. 만약에 열에 대한 기본값이 없으면 기본값은 다음과 같습니다. 널.

좋아요parent_table[ 포함 | 제외 기본값 ]

좋아요절은 다음을 지정합니다. 새 테이블이 자동으로 모든 항목을 상속하는 테이블 열 이름, 해당 데이터 유형 및 null이 아님 제약.

달리상속됨, 새 토토 및 상속된 토토은 생성 후 완전히 분리됩니다. 완료되었습니다. 새 토토에 삽입된 데이터는 상위 토토에 반영되지 않습니다.

상속된 열 정의에 대한 기본 표현식 다음의 경우에만 포함됩니다.포함 기본값이 지정되었습니다. 기본값은 제외입니다. 기본 표현식입니다.

상속됨(parent_table [, ... ] )

선택사항상속절 새 테이블이 생성되는 테이블 목록을 지정합니다. 모든 열을 자동으로 상속합니다. 컬럼명이 같은 경우 둘 이상의 상위 테이블에 존재하면 오류가 보고됩니다. 열의 데이터 유형이 각 항목에서 일치하지 않는 한 상위 테이블. 충돌이 없으면 중복됩니다. 열이 병합되어 새 열에서 단일 열을 형성합니다. 테이블. 새 테이블의 열 이름 목록에 마찬가지로 상속된 열의 경우 데이터 유형도 마찬가지로 상속된 열 및 열 정의와 일치합니다. 하나로 병합됩니다. 그러나 상속된 열과 새 열 동일한 이름의 선언에서는 동일함을 지정할 필요가 없습니다. 제약 조건: 모든 선언에서 제공되는 모든 제약 조건 함께 병합되어 모두 새 테이블에 적용됩니다. 새 테이블이 명시적으로 기본값을 지정하는 경우 열에서 이 기본값은 다음의 모든 기본값을 재정의합니다. 열의 상속된 선언. 그렇지 않으면 어떤 열의 기본값을 지정하는 상위 항목은 모두 동일한 기본값을 지정하지 않으면 오류가 보고됩니다.

OIDS 포함
OIDS 제외

이 선택적 절은 새 행의 행을 지정합니다. 테이블에는 OID(객체 식별자)가 할당되어 있어야 합니다. 그들. 기본값은 OID를 갖는 것입니다. (새 테이블의 경우 OID가 있는 모든 테이블에서 상속된 경우OIDS 포함명령이 다음과 같이 표시되더라도 강제됩니다.OIDS 제외.)

지정 중OIDS 제외허용합니다 사용자는 행에 대한 OID 생성을 억제합니다. 토토. 이는 큰 토토에 유용할 수 있습니다. OID 소비를 줄여 랩어라운드를 연기합니다. 32비트 OID 카운터. 카운터가 한바퀴 돌고 나면 OID의 고유성은 더 이상 가정할 수 없습니다. 그 유용성이 상당히 감소합니다. 지정OIDS 제외또한 감소합니다 토토을 디스크에 4바이트씩 저장하는 데 필요한 공간 행을 삭제하여 성능을 향상시킵니다.

제약제약_이름

열 또는 테이블 제약조건에 대한 선택적 이름입니다. 만약에 지정하지 않으면 시스템이 이름을 생성합니다.

NULL이 아님

이 열은 null 값을 포함할 수 없습니다.

NULL

열에는 null 값이 포함될 수 있습니다. 이것은 기본값입니다.

이 절은 다음과의 호환성을 위해서만 사용할 수 있습니다. 비표준 SQL 데이터베이스. 새 제품에서는 사용이 권장되지 않습니다. 응용 프로그램.

고유(열 제약)
고유(컬럼_이름 [, ... ] )(테이블 제약)

고유제약조건이 지정함 테이블의 하나 이상의 개별 열 그룹은 고유한 값만 포함합니다. 독특한 행동 테이블 제약조건은 열 제약조건과 동일합니다. 제약 조건, 확장할 수 있는 추가 기능 포함 여러 열.

고유 제약 조건의 경우 null 값은 다음과 같습니다. 동등한 것으로 간주되지 않습니다.

각 고유 테이블 제약조건은 열 집합의 이름을 지정해야 합니다. 이는 임의의 이름으로 명명된 열 집합과 다릅니다. 에 대해 정의된 다른 고유 또는 기본 키 제약 조건 테이블. (그렇지 않으면 동일한 제약 조건이 됩니다. 두 번 나열되었습니다.)

기본 키(열 제약)
기본 키(컬럼_이름 [, ... ] )(테이블 제약)

기본 키 제약 조건은 열 또는 테이블의 열에는 고유(중복되지 않음)만 포함될 수 있습니다. Null이 아닌 값. 기술적으로는,기본 키단지 다음의 조합일 뿐입니다고유그리고아님 NULL, 그러나 열 집합을 기본 키로 식별 또한 스키마 설계에 대한 메타데이터를 제공합니다. 기본 키는 다른 테이블이 이 세트에 의존할 수 있음을 의미합니다. 행의 고유 식별자로 열을 사용합니다.

테이블에는 하나의 기본 키만 지정할 수 있습니다. 열 제약이든 테이블 제약이든 상관없습니다.

기본 키 제약 조건은 열 집합의 이름을 지정해야 합니다. 이는 이름이 지정된 다른 열 집합과 다릅니다. 동일한 테이블에 대해 고유 제약 조건이 정의되었습니다.

확인(표현)

확인절은 다음을 지정합니다. 새로운 또는 업데이트된 부울 결과를 생성하는 표현식 행은 삽입 또는 업데이트 작업을 충족해야 합니다. 성공하다. 열로 지정된 검사 제약 조건 제약 조건은 해당 열의 값만 참조해야 하지만 테이블 제약 조건에 나타나는 표현식은 참조할 수 있습니다. 여러 열.

현재,확인표현 하위 쿼리를 포함하거나 다음 이외의 변수를 참조할 수 없습니다. 현재 행의 열입니다.

참조재조정 가능 [ ( refcolumn) ] [ 일치일치 유형] [ 삭제 중액션] [ 업데이트 중액션 ](열 제약)
외래 키([, ... ] ) 참조재조정 가능 [ ( refcolumn[, ... ] ) ] [ 일치일치 유형] [ 삭제 중액션] [ 업데이트 중액션 ](테이블 제약)

이 절은 외래 키 제약 조건을 지정합니다. 새 열의 하나 이상의 열 그룹을 지정합니다. 테이블에는 값과 일치하는 값만 포함되어야 합니다. 참조된 열에서refcolumn참조 테이블의재조정 가능. 만일refcolumn생략됨, 기본 키 의재조정 가능이 사용됩니다. 참조된 열은 고유한 열이거나 참조된 테이블의 기본 키 제약 조건입니다.

이 열에 삽입된 값은 다음과 일치합니다. 참조된 테이블과 참조된 열의 값 지정된 일치 유형을 사용합니다. 세 가지 일치 유형이 있습니다.전체 일치, 부분 일치일치 단순, 이는 기본값이기도 합니다.전체 일치다음 열 중 하나를 허용하지 않습니다. 여러 열 외래 키는 모든 외래 키가 아닌 한 null이 됩니다. 열이 null입니다.간단한 일치일부 외래 키 열은 null이 되고 다른 열은 null이 될 수 있습니다. 외래 키의 일부가 null이 아닙니다.부분 일치아직 구현되지 않았습니다.

또한 참조된 열의 데이터가 변경되면 이 데이터에 대해 특정 작업이 수행됩니다. 테이블의 열.삭제 중절은 참조된 경우 수행할 작업을 지정합니다. 참조된 테이블의 행을 삭제하는 중입니다. 마찬가지로,업데이트 중절은 다음을 지정합니다. 참조된 열이 있을 때 수행할 작업 참조된 테이블이 새 값으로 업데이트되고 있습니다. 만약 행이 업데이트되었지만 참조된 열은 실제로 업데이트되지 않았습니다. 변경되었으므로 아무 작업도 수행되지 않습니다. 다음과 같은 것들이 있습니다 각 조항에 대해 가능한 조치:

조치 없음

삭제 또는 업데이트하면 외래 키 제약 조건이 생성됩니다. 위반. 이것이 기본 동작입니다.

제한

다음과 동일조치 없음제외 이 조치는 다음과 같은 경우에도 연기되지 않을 것입니다. 나머지 제약조건은 연기 가능하며 연기되었습니다.

캐스케이드

삭제된 행을 참조하는 행을 삭제하거나 참조 열의 값을 새 값으로 업데이트 참조된 열의 값입니다.

NULL로 설정

참조하는 열 값을 null로 설정하십시오.

기본값으로 설정

참조하는 열 값을 기본값으로 설정 값.

기본 키 열이 자주 업데이트되는 경우, 외래 키 열에 인덱스를 추가하는 것이 현명합니다.조치 없음그리고캐스케이드외국인과 관련된 행동 키 컬럼을 보다 효율적으로 수행할 수 있습니다.

지연 가능
지연할 수 없음

이것은 제약조건을 연기할 수 있는지 여부를 제어합니다. 에이 연기할 수 없는 제약 조건을 확인합니다. 모든 명령 직후. 제약사항 확인 연기 가능한 것은 종료일까지 연기될 수 있다. 거래(제약조건 설정명령).지연할 수 없음기본값입니다. 현재는 외래 키 제약조건만 이 절을 허용합니다. 다른 모든 제약 조건 유형은 연기할 수 없습니다.

처음에는 즉시
처음에는 연기됨

제약조건이 연기 가능한 경우 이 절은 다음을 지정합니다. 제약 조건을 확인하는 기본 시간입니다. 제약 조건이 다음과 같은 경우처음에는 즉시, 확인되었습니다 각 진술 후에. 이것이 기본값입니다. 만약 제약 조건은처음에는 연기됨, 이는 거래가 끝날 때만 확인됩니다. 는 제약 조건 확인 시간은 다음을 사용하여 변경할 수 있습니다.PostgreSQL : 문서 : 7.4 : 토토 베이 세트명령.

커밋 중

종료 시 임시 테이블의 동작 트랜잭션 블록은 다음을 사용하여 제어할 수 있습니다.커밋 중. 세 가지 옵션은 다음과 같습니다.

행 보존

다음이 끝날 때 특별한 조치가 취해지지 않습니다. 거래. 이것이 기본 동작입니다.

행 삭제

임시 테이블의 모든 행은 다음 시점에 삭제됩니다. 각 거래 블록의 끝. 본질적으로, 자동윈 토토 : 문서 : 7.4 : Truncate이다 커밋할 때마다 수행됩니다.

드롭

임시 테이블은 다음 작업이 끝나면 삭제됩니다. 현재 거래 블록입니다.

참고

  • 애플리케이션이 OID를 사용하여 식별할 때마다 테이블의 특정 행을 생성하는 것이 좋습니다. 에 대한 고유 제약조건oid해당 테이블의 열을 삭제하여 테이블의 OID가 실제로 카운터 랩어라운드 후에도 행을 고유하게 식별합니다. OID가 테이블 전체에서 고유하다고 가정하지 마십시오. 만약 당신이 데이터베이스 전체의 고유 식별자가 필요하면 다음 조합을 사용하십시오. 의토토로이드및 행 OID 목적. (아마도 미래일 것이다)포스트그레SQL릴리스에서는 별도의 각 테이블의 OID 카운터는 다음과 같습니다.필요함, 선택사항 아님 포함토토로이드갖다 데이터베이스 전체의 고유 식별자입니다.)

    팁:사용없이 OIDS기본이 없는 테이블에는 권장되지 않습니다. 키, OID나 고유 데이터 키가 없기 때문에 특정 행을 식별하기가 어렵습니다.

  • PostgreSQL자동으로 각 고유 제약 조건과 기본 키에 대한 인덱스를 생성합니다. 고유성을 강제하는 제약 조건입니다. 따라서 그렇지 않습니다. 기본 키에 대한 명시적 인덱스를 만드는 데 필요함 열. (참조색인 생성더 보기 정보.)

  • 고유 제약 조건과 기본 키는 다음에서 상속되지 않습니다. 현재 구현. 이는 다음의 조합을 만듭니다. 상속 및 고유 제약 조건은 다소 역기능적입니다.

토토 생성영화및 토토배포자:

테이블 영화 만들기(
    코드 char(5) CONSTRAINT firstkey PRIMARY KEY,
    제목 varchar(40) NOT NULL,
    정수가 NULL이 아니었나요?
    date_prod 날짜,
    종류 varchar(10),
    len 간격 시간에서 분까지
);
테이블 배포자 생성(
     정수 PRIMARY KEY DEFAULT nextval('serial')을 수행했습니다.
     이름 varchar(40) NOT NULL CHECK (이름 < '')
);

2차원 배열로 토토을 생성하세요:

토토 배열 생성(
    벡터 정수[][]
);

테이블에 대한 고유 테이블 제약 조건 정의영화. 고유 테이블 제약 조건은 다음에서 정의할 수 있습니다. 테이블의 하나 이상의 열.

테이블 영화 만들기(
    코드 문자(5),
    제목 varchar(40),
    정수를 했고,
    date_prod 날짜,
    종류 varchar(10),
    len 간격 시간에서 분,
    CONSTRAINT 생산 UNIQUE(date_prod)
);

검사 열 제약 조건 정의:

테이블 배포자 생성(
    정수 CHECK를 수행했습니다(100보다 컸음).
    이름 varchar(40)
);

검사 테이블 제약조건 정의:

테이블 배포자 생성(
    정수를 했고,
    이름 varchar(40)
    CONSTRAINT con1 CHECK (did  100 AND 이름 < '')
);

테이블에 대한 기본 키 테이블 제약 조건 정의영화. 기본 키 테이블 제약 조건은 다음과 같습니다. 테이블의 하나 이상의 열에 정의됩니다.

테이블 영화 만들기(
    코드 문자(5),
    제목 varchar(40),
    정수를 했고,
    date_prod 날짜,
    종류 varchar(10),
    len 간격 시간에서 분,
    CONSTRAINT code_title PRIMARY KEY(코드,제목)
);

테이블에 대한 기본 키 제약조건 정의배포자. 다음 두 가지 예는 이에 상응하는 첫 번째는 테이블 제약 조건 구문을 사용하는 것입니다. 두 번째는 열 제약 표기법입니다.

테이블 배포자 생성(
    정수를 했고,
    이름 varchar(40),
    기본 키(했었습니다)
);
테이블 배포자 생성(
    정수 PRIMARY KEY를 수행했습니다.
    이름 varchar(40)
);

이것은 열에 리터럴 상수 기본값을 할당합니다.이름, 기본값을 정렬합니다. 열했어요선택하여 생성됨 시퀀스 객체의 다음 값을 기본값으로 만듭니다. 의모드타임행이 시작되는 시간입니다. 삽입되었습니다.

테이블 배포자 생성(
    이름 varchar(40) DEFAULT 'Luso Films',
    정수 DEFAULT nextval('distributors_serial')을 수행했습니다.
    modtime 타임스탬프 DEFAULT current_timestamp
);

2개 정의NULL이 아님열 테이블에 대한 제약 조건배포자, 그 중 하나가 명시적으로 제공됨 이름:

테이블 배포자 생성(
    정수 CONSTRAINT no_null이 NULL이 아니었습니다.
    이름 varchar(40) NOT NULL
);

에 대한 고유 제약 조건 정의이름열:

테이블 배포자 생성(
    정수를 했고,
    이름 varchar(40) 고유
);

위는 테이블로 지정된 다음과 동일합니다. 제약조건:

테이블 배포자 생성(
    정수를 했고,
    이름 varchar(40),
    고유(이름)
);

호환성

토토 생성명령은 다음을 준수합니다 아래 나열된 예외를 제외하고 SQL92 및 SQL99의 하위 집합입니다.

임시 테이블

비록 구문은임시 생성 표SQL 표준과 유사하며 그 효과는 다음과 같습니다. 동일하지 않습니다. 표준에서는 임시 테이블이 정의됩니다. 단 한 번만 실행하면 자동으로 존재합니다(비어 있는 상태로 시작). 내용)이 필요한 모든 세션에 포함됩니다.PostgreSQL대신 각 세션이 필요합니다. 자체 발행임시 생성 표37703_37981

일시적인 동작에 대한 표준 정의 토토은 널리 무시됩니다.포스트그레SQL38125_38207

글로벌과 로컬 사이의 표준 구별 임시 테이블이 없습니다PostgreSQL, 그 구별은 모듈의 개념에 대해,PostgreSQL없습니다. 에 대한 호환성을 위해,PostgreSQL수락하겠습니다글로벌그리고로컬임시 테이블 선언에 키워드가 있지만 키워드가 없습니다. 효과.

커밋 중임시절 테이블도 SQL 표준과 유사하지만 몇 가지 특징이 있습니다. 차이점. 만약커밋 중절 생략되면 SQL은 기본 동작을 다음과 같이 지정합니다.ON 커밋 행 삭제. 그러나 기본 동작PostgreSQLisON 커밋 보존 행.커밋 삭제 중옵션이 존재하지 않습니다 SQL에서.

열 확인 제약 조건

SQL 표준에 따르면확인열 제약조건은 적용되는 열만 참조할 수 있습니다. 만확인테이블 제약 조건은 다음을 참조할 수 있습니다. 여러 열에.PostgreSQL이를 시행하지 않습니다. 제한; 열 및 토토 검사 제약 조건을 처리합니다. 비슷해요.

NULL "제약"

NULL "제약"(실제로는 비제약)은PostgreSQL확장 다른 SQL과의 호환성을 위해 포함된 SQL 표준 데이터베이스 시스템(및 대칭을 위해)NULL이 아님제약). 기본값이므로 어떤 열이든 그 존재는 단순히 노이즈일 뿐입니다.

상속

다음을 통한 다중 상속상속절은 aPostgreSQL언어 확장. SQL99(그러나 SQL92 아님)은 다른 구문을 사용하여 단일 상속을 정의합니다. 그리고 다른 의미론. SQL99 스타일 상속은 아직 지원되지 않습니다. 지원자:포스트그레SQL.

개체 ID

PostgreSQL개념 OID는 표준이 아닙니다.

0열 토토

포스트그레SQL토토을 허용합니다 생성할 열이 없습니다(예:토토 foo() 생성;). 이것은 다음의 확장입니다. 열이 없는 테이블을 허용하지 않는 SQL 표준입니다. 0열 토토은 그 자체로는 별로 유용하지 않지만 이를 허용하지 않으면 이상한 특수 사례가 생성됩니다.테이블 드롭 열 변경따라서 더 깔끔해 보입니다. 이 사양 제한을 무시하세요.