SQL - DDL의 제약조건과 DROP

songmin jeon·2023년 11월 21일
0

1. 제약조건

테이블 입력 가능한 데이터를 조건으로 제약하는 것

NOT NULL
UNIQUE KEY (UK)
CHECK

★ PRIMARY KEY (PK) ★
★ FOREIGN KEY (FK) ★

그외. 슈퍼키, 대체키

1.1.1. NOT NULL

  • 컬럼이 비어 있거나 NULL 값이 들어오지 않도록 하는 조건

1.1.2. UNIQUE KEY (UK)

  • 하나의 컬럼에 중복되는 튜플이 존재할 수 없도록 하는 조건

1.1.3. CHECK

특정 컬럼에 데이터를 입력할 때 조건에 해당하는 데이터만 입력할 수 있도록 제약

1.1.4. ★ PRIMARY KEY (PK) ★ : NOT NULL + UNIQUE

  • 식별자 규칙을 물리적 모델링 한 것. 기본 키, 주 키, 프라이머리 키라고도 부름. (시험예상)
  • 보통 튜플(행)이 지닌 유일하고 고유한 특징인 컬럼을 PK로 지정 NULL값 입력 불가, 중복 불가의 특징.

1.1.5. ★ FOREIGN KEY (FK) ★

  • 다른 테이블에 있는 기본 키(PRIMARY KEY)를 참조하는 컬럼을 FK로 지정.
  • FOREIGN KEY는 외래 키라고 부르고 데이터 무결성을 지원
    참조하는 테이블의 기본 키 값과 반드시 동일한 값으로 구성되어야 함


1.1. 실습문제 (CREATE, ALTER)

이전 수업내용 참조하기! (아래 링크 클릭)
SQL - DDL의 테이블의 자료형과 CREATE, ALTER

/*
1. 다음조건에 맞춰 3개의 테이블을 생성(CREATE) 하세요.
DEFAULT 나 NOT NULL 이 따로 없는 경우는 별도로 설정하지 않음을 의미합니다.

1.1 테이블명 : 회원정보
컬럼/자료형 : 회원ID   - 가변형문자형 10BYTE ,   NOT NULL
            이름      - 가변형문자형 20BYTE ,   NOT NULL
            가입일자   - 날짜형
            나이      - 숫자형 DEFAULT 0

1.2 테이블명 : 회원연락처
컬럼/자료형 : 회원ID   - 가변형문자형 10BYTE ,   NOT NULL
            구분코드  - 가변형문자형 20BYTE ,   NOT NULL
            연락처   - 가변형문자형 15BYTE ,   NOT NULL

1.3 테이블명 : 회원주소
컬럼/자료형 : 회원ID    - 가변형문자형 10BYTE ,  NOT NULL
          도로명주소   - 가변형문자형 20BYTE ,   NOT NULL
*/

--1.1
CREATE TABLE 회원정보(
회원ID        VARCHAR2(10)    NOT NULL ,
이름          VARCHAR2(20)    NOT NULL ,
가입일자    	 DATE ,
나이          NUMBER DEFAULT 0 
);

--1.2
CREATE TABLE 회원연락처(
회원ID       VARCHAR2(10)    NOT NULL ,
구분코드    	VARCHAR2(10)    NOT NULL ,
연락처       VARCHAR2(15)     NOT NULL 
);

--1.3
CREATE TABLE 회원주소(
회원ID        VARCHAR2(10)    NOT NULL ,
도로명주소   	 VARCHAR2(20)    NOT NULL 
);



/*
2. 1번에서 만든 3개의 테이블에 각각 주어진 조건에 맞춰 PK 제약조건을 추가해주세요.
힌트 : 두 개 이상의 컬럼을 PK로 설정하려면 다음과 같은 형식으로 작성해주세요
=> PRIMARY KEY(컬럼1, 컬럼2)

각 테이블 별로 사용할 PK 컬럼과 제약조건 이름은 같습니다.

2.1 회원정보 테이블의 PK : 회원ID              --제약조건명 : PK_회원정보
2.2 회원연락처 테이블의 PK : 회원ID + 구분코드   --제약조건--명 : PK_회원연락처
2.3 회원주소 테이블의 PK : 회원ID              --제약조건명 : PK_회원주소
*/
--2.1
ALTER TABLE 회원정보 ADD CONSTRAINT PK_회원정보 PRIMARY KEY(회원ID);
--2.2
ALTER TABLE 회원연락처 ADD CONSTRAINT PK_회원연락처 PRIMARY KEY(회원ID, 구분코드);
--2.2는 (회원ID 와 구분코드)를 한 세트로 PRIMARY KEY키를 줌. 이를 슈퍼키라고 함!

--2.3
ALTER TABLE 회원주소 ADD CONSTRAINT PK_회원주소 PRIMARY KEY(회원ID);



/*
3. 1번에서 만든 3개의 테이블에 대해 테이블 간의 관계 연결을 위해 FK 제약조건을 설정하세요.

3.1
회원연락처 테이블의[회원ID] 컬럼은 회원정보 테이블의 [회원ID]를 참조하고자 합니다.
제약조건명 : FK_회원연락처
힌트 : ALTER TABLE 회원연락처...

3.2
회원주소 테이블의[회원ID] 컬럼은 회원정보 테이블의 [회원ID]를 참조하고자 합니다.
제약조건명 : FK_회원주소
힌트 : ALTER TABLE 회원주소...
*/
--3.1
ALTER TABLE 회원연락처 ADD CONSTRAINT FK_회원연락처 
FOREIGN KEY  (회원ID) REFERENCES 회원정보(회원ID);

--3.2
ALTER TABLE 회원주소 ADD CONSTRAINT FK_회원주소
FOREIGN KEY (회원ID) REFERENCES 회원정보(회원ID);

2. (DROP) 테이블 삭제하기

테이블 및 제약조건을 삭제할 때 사용하는 명령어


profile
제가 한 번 해보겠습니다.

0개의 댓글