제약 조건 ( Constraint )이란 데이터의 무결성을 지키기 위해 제한된(한) 조건을 말한다. Show 즉, 데이터를 삽입, 수정 등을 할 때 무조건 삽입하고 수정하는 것이 아니고 제한된 조건을 만족해야지만 삽입하고 수정하여 무결성을 지키는 것이다. SQL Server에서 정의된 제약조건에는 아래와 같다.
● Primary Key Constraint"PK 조건에 만족하는가?" 라고 설명을 했지만 흔하게 PK를 지정해준다라고 생각하면 된다.! - 테이블 생성 시 제약조건 설정.
- 테이블에 제약조건 추가.
● Foreign Key Constraint"FK조건에 만족하는가?" FK 외래 키를 설정한다고 생각하면 된다. - 테이블 생성 시 제약조건 설정.
- 테이블에 제약조건 추가.
아래도 위 와 같다. 소스 코드만 명시하도록 하겠습니다. ● UNIQUE Constraint- 테이블 생성 시 제약조건 설정.
- 테이블에 제약조건 추가.
● CHECK Constraint- 테이블에 제약조건 추가.
● DEFAULT Constraint- 테이블 생성 시 제약조건 설정.
- 테이블에 제약조건 추가.
카테고리: 테이블, 뷰 및 시퀀스 DDL 이 항목에서는 CREATE TABLE 또는 ALTER
TABLE 문에
상세한 예를 포함한 자세한 내용은 제약 조건 을 참조하십시오. 이 항목의 내용: 구문¶인라인 고유/기본/외래 키¶CREATE TABLE <name> ( <col1_name> <col1_type> [ NOT NULL ] { inlineUniquePK | inlineFK } [ , <col2_name> <col2_type> [ NOT NULL ] { inlineUniquePK | inlineFK } ] [ , ... ] ) ALTER TABLE <name> ADD COLUMN <col_name> <col_type> [ NOT NULL ] { inlineUniquePK | inlineFK } 여기서: inlineUniquePK ::= [ CONSTRAINT <constraint_name> ] { UNIQUE | PRIMARY KEY } [ [ NOT ] ENFORCED ] [ [ NOT ] DEFERRABLE ] [ INITIALLY { DEFERRED | IMMEDIATE } ] [ ENABLE | DISABLE ] [ VALIDATE | NOVALIDATE ] [ RELY | NORELY ]inlineFK := [ CONSTRAINT <constraint_name> ] [ FOREIGN KEY ] REFERENCES <ref_table_name> [ ( <ref_col_name> ) ] [ MATCH { FULL | SIMPLE | PARTIAL } ] [ ON [ UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ] [ DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ] ] [ [ NOT ] ENFORCED ] [ [ NOT ] DEFERRABLE ] [ INITIALLY { DEFERRED | IMMEDIATE } ] [ ENABLE | DISABLE ] [ VALIDATE | NOVALIDATE ] [ RELY | NORELY ] 아웃오브 라인 고유/기본/외래 키¶CREATE TABLE <name> ... ( <col1_name> <col1_type> [ , <col2_name> <col2_type> , ... ] [ , { outoflineUniquePK | outoflineFK } ] [ , { outoflineUniquePK | outoflineFK } ] [ , ... ] ) ALTER TABLE <name> ... ADD { outoflineUniquePK | outoflineFK } 여기서: outoflineUniquePK ::= [ CONSTRAINT <constraint_name> ] { UNIQUE | PRIMARY KEY } ( <col_name> [ , <col_name> , ... ] ) [ [ NOT ] ENFORCED ] [ [ NOT ] DEFERRABLE ] [ INITIALLY { DEFERRED | IMMEDIATE } ] [ ENABLE | DISABLE ] [ VALIDATE | NOVALIDATE ] [ RELY | NORELY ]outoflineFK := [ CONSTRAINT <constraint_name> ] FOREIGN KEY ( <col_name> [ , <col_name> , ... ] ) REFERENCES <ref_table_name> [ ( <ref_col_name> [ , <ref_col_name> , ... ] ) ] [ MATCH { FULL | SIMPLE | PARTIAL } ] [ ON [ UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ] [ DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ] ] [ [ NOT ] ENFORCED ] [ [ NOT ] DEFERRABLE ] [ INITIALLY { DEFERRED | IMMEDIATE } ] [ ENABLE | DISABLE ] [ VALIDATE | NOVALIDATE ] [ RELY | NORELY ] 제약 조건 속성¶다른 데이터베이스와의 호환성을 위해, Snowflake는 제약 조건 속성을 제공합니다. 제약 조건에 대해 지정할 수 있는 속성은 다음과 같이 유형에 따라 다릅니다.
중요 다른 데이터베이스에서 쉽게 마이그레이션할 수 있도록 이러한 속성이 제공됩니다. Snowflake에서는 이들 속성을 적용하거나 유지 관리하지 않습니다. 이는 이러한 속성의 기본값을 변경할 수 있지만, 기본값을 변경하면 Snowflake에서 제약 조건을 만들지 않게 된다는 뜻입니다. 자세한 내용은 제약 조건 속성 섹션을 참조하십시오. (모든 키의) 속성¶다음 제약 조건 속성은 모든 키에 적용됩니다(속성의 순서는 상호 교환 가능). [ NOT ] ENFORCED [ NOT ] DEFERRABLE INITIALLY { DEFERRED | IMMEDIATE } ENABLE | DISABLE VALIDATE | NOVALIDATE RELY | NORELY
속성(외래 키만 해당)¶다음 제약 조건 속성은 외래 키에만 적용됩니다(속성의 순서는 상호 교환 가능). MATCH { FULL | SIMPLE | PARTIAL } ON [ UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ] [ DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ]
사용법 노트¶
예¶아래 예에서는 테이블을 만드는 동안 간단한 NOT NULL 제약 조건을 만들고 테이블을 변경하는 동안 또 다른 NOT NULL 제약 조건을 만드는 방법을 보여줍니다.
다음 예에서는 열의 의도가 고유한 값을 유지하는 것임을 지정하지만, 제약 조건이 실제로 적용되지 않음을 분명히 합니다. 이 예에서는 제약 조건의 이름(이 경우 《uniq_col3》)을 지정하는 방법도 설명합니다. ALTER TABLE table1 ADD COLUMN col3 VARCHAR NOT NULL CONSTRAINT uniq_col3 UNIQUE NOT ENFORCED; 다음은 기본 키 제약 조건이 있는 부모 테이블과 첫 번째 테이블의 기본 키 제약 조건과 같은 열을 가리키는 외래 키 제약 조건이 있는 다른 테이블을 만드는 예입니다. CREATE TABLE table2 ( col1 INTEGER NOT NULL, col2 INTEGER NOT NULL, CONSTRAINT pkey_1 PRIMARY KEY (col1, col2) NOT ENFORCED ); CREATE TABLE table3 ( col_a INTEGER NOT NULL, col_b INTEGER NOT NULL, CONSTRAINT fkey_1 FOREIGN KEY (col_a, col_b) REFERENCES table2 (col1, col2) NOT ENFORCED ); |