본문 바로가기
DB/DBMS

DDL과 제약조건1

by 코딩하는 랄로 2023. 8. 12.
728x90

제약조건

DDL에서 테이블을 생성할 때 CONSTRAIN(제약조건)올 통해 테이블의 칼럼에 대해서 조건을 부여할 수 있다. 이전 글에서 배운 PK와 FK 또한 이러한 제약조건에 해당한다.

 

TABLE생성 시 제약조건

DDL을 통해 테이블 생성시에 제약조건을 할당하는 방법에는 2가지가 있다.

CREATE TABLE USER (
	ID NUMBER PRIMARY KEY,
    	NAME VARCHAR2(100),
)

제약 조건은 칼럼을 생성할 때, 위의 코드 처럼 칼럼 타입 옆에 제약조건을 바로 붙임으로 할당할 수 있다. 제약조건을 할당할 경우에 제약 조건의 이름을 명시하지 않으면 시스템에서 임의로 지정하기 때문에 이와 같은 방법 또한 임의로 지정된 제약조건 이름이 할당된다.

 

CREATE TABLE USER (
	ID NUMBER(100),
	NAME BARCHAR(200),
	CONSTRAINT [CONSTRAIN_NAME] PRIMARY KEY(COLUMN_NAME)
)

CONSTRAINT라는 DDL 문법을 이용하여 제약조건을 할당하여 주는 방식이다. 할당하는 제약조건에 대한 이름을 선언(생략 가능)하고 어떠한 제약조건을 선언할지에 대해 명시하여 주면된다.

 

위 예시에서는 PRIMARY KEY를 선언하여 주었고 소괄호안에 PRIMARY KEY로 지정하고 싶은 칼럼들을 나열하여 주면 된다.

 

TABLE생성 후 제약조건

테이블 생성 후에도, DDL 문법인 ATLER을 이용해 제약 조건을 추가, 수정, 삭제를 할 수 있다.

  • 추가 : ALTER TABLE 테이블이름 ADD CONSTRAINT 제약이름 제약조건;
  • 수정 : ALTER TABLE 테이블이름 MODIFY 컬럼명 컬럼조건;
  • 삭제 : ALTER TABLE 테이블이름 DROP CONSTAINT 제약이름;
  • 이름변경 : ALTER TABLE 테이블이름 RENAME CONSTRAINT 기존제약이름 TO 변경할 제약이름;

하지만 이와 같은 작업을 하기 위해서는 제약 조건의 이름에 대해서 알아야 한다. CONSTRAINT를 통해 사용자가 제약 조건을 명시한 경우에는 제약 조건 이름에 대해서 알고 있지만 SYSTEM에서 임의로 지정하여 준 경우에는 다음의 명령어를 통해 제약 조건 이름을 직접 알아내어야 한다.

SELECT * 
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 테이블이름;

 

이 외에도 제약 조건을 활성화, 비활성화도 가능하다.

  • 제약 활성화 : ALTER TABLE 테이블이름 ENABLE 제약이름;
  • 제약 비활성화 : ALTER TABLE 테이블이름 DISABLE 제약이름;

 

주석

주석이란, 해석하지 못하게 하는 문법이다. 즉, DBMS에서 Interpreter를 통해 sql문을 해석하려고 할 때 주석처리 된 부분은 해석하지 않고 넘어가게 되는 것이다.

 

그렇기 때문에 주석은 특정 코드를 설명을 할 때 많이 사용된다. 또한 특정 코드에 대해서 지금 당장은 사용하지 않지만 나중에 사용하는 경우에도 주석처리를 통해 코드를 지우지 않고도 사용하지 못하게 하는 것이다.

 

Oracle DBMS 에서 주석처리는 한줄 주석처리와 여러줄 주석처리 방식이 있다. 한줄 주석 처러 방법은 다음과 같다.

-- USER 테이블 생성하는 query문
CREATE TABLE USER (
ID NUMBER(100),
NAME VARCHAR2(200)
)

 

두 줄의 경우에는 다음과 같이 /**/를 이용하여 묶어주면 된다.

/*
--이벤트 전용 테이블
CREATE TABLE EVENT(
ID NUMER(20).
EVENT_NAME VARCHAR2(200)
)
*/

 

728x90

'DB > DBMS' 카테고리의 다른 글

제약조건과 무결성  (0) 2023.08.12
DDL과 제약조건2  (0) 2023.08.12
DDL과 자료형  (0) 2023.08.12
TABLE과 기본 개념  (0) 2023.08.10
DBMS란  (0) 2023.08.10