본문 바로가기

자격증/SQLD 자격증

[SQLD자격증강좌] 14강 DDL - 테이블 추가 - 오쌤의 니가스터디

728x90
반응형

 

 

 

 

 

- DDL(Data Definition Language)은 관계형 데이터베이스에서 데이터베이스 구조를 정의하는 언어입니다. 

 

 

 

1. 테이블 관리 SQL문


 

## 테이블 관리 SQL문

SQL문 설명
Create Table - 새로운 테이블을 생성합니다.
- 테이블을 생성할 때 기본키, 외래키, 제약사항등을 설정할 수 있습니다.
Alter Table - 생성된 테이블을 변경합니다.
- 칼럼을 추가하거나 변경, 삭제할 수 있습니다. 
- 기본키를 설정하고나, 외래키를 설정할 수도 있습니다. 
Drop Table - 해당 테이블을 삭제합니다.
- 테이블의 데이터 구조 뿐만 아니라 저장된 데이터도 모두 삭제됩니다.

- 데이터베이스를 사용하기 위해서는 테이블을 먼저 생성해야 합니다. 

 

## 이론 문제 확인하기

다음 중 DDL문이 아닌 것은?
1. CREATE
2. RENAME
3. COMMIT
4. ALTER
더보기

정답 : 3

- DDL의 종류는 CREATE, ALTER, DROP, RENAME, TRUNCATE문이 있습니다. 

- COMMIT은 TCL구문입니다. 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

2. 테이블(Table) 생성


- 테이블을 생성하는 방법은 여러 가지가 있습니다. 

 

 

1) 기본적인 테이블 생성

- 먼저 아주 간단한 테이블을 생성하는 방법을 확인해 보겠습니다. 

 

## 테이블 생성 문법

CREATE TABLE 테이블명
(
	속성명 속성타입 기본키지정,
    	속성명 속성타입
);

 

 

## 테이블 생성 예시

CREATE TABLE EMP
(
	EMPNO INT PRIMARY KEY,
	ENAME VARCHAR(20),
	SAL INT
);

- EMP는 테이블명입니다.

- EMPNO, ENAME, SAL은 속성명입니다.

- INT는 정수를, VARCHAR는 가변길이 문자를 뜻하는 데이터타입입니다. 

- EMPNO은 숫자로 입력해야하고, ENAME은 문자로 입력해야 한다는 뜻입니다.

- PRIMARY KEY는 기본키 설정으로 EMP테이블의 EMPNO가 기본키라는 뜻입니다. 

Work Bench에서 명령을 실행한 결과

 

- Work Bench에 코드를 작성한 후 [Ctrl]+[Enter]를 누릅니다. 

- EMP테이블이 생긴 것을 확인할 수 있습니다. 

 

 

 

2) 테이블 구조 확인

## 테이블 구조 확인 문법

DESC 테이블명;

 

 

## 테이블 구조 확인 예시

DESC EMP;

 

Work Bench에서 명령을 실행한 결과

- [Ctrl]+[Enter]로 명령을 실행하면 테이블 구조가 뜨는 것을 확인할 수 있습니다. 

 

 

 

3) 제약조건 사용

- 기본키, 외래키, 기본값, not null 등은 테이블을 생성할 때 지정할 수 있습니다. 

 

## 제약조건 키워드

제약조건 키워드
기본키 PRIMARY KEY
외래키 CONSTRAINT
예시)  CONSTRAINT 속성명 FOREIGN KEY (속성명) REFERENCES 참조테이블명 (속성명);
기본값 DEFAULT
빈값 허용여부 빈 값허용O : NULL
빈 값허용X : NOT NULL

 

 

## 제약조건 예시

# 참조테이블 생성
CREATE TABLE DEPT
(
	DEPTNO VARCHAR(4) PRIMARY KEY,
    	DEPTNAME VARCHAR(20) 
);

# 테이블 생성
CREATE TABLE EMP2
(
	EMPNO INT,
	ENAME VARCHAR(20) NOT NULL,
	SAL INT DEFAULT 0,
        DEPTNO VARCHAR(4) NOT NULL,
        CONSTRAINT EMPPK PRIMARY KEY (EMPNO),
        CONSTRAINT DEPTFK FOREIGN KEY (DEPTNO)
                          REFERENCES DEPT (DEPTNO)
);

 

Work Bench에서 명령을 실행한 결과

- 명령을 실행해보면 DEPT테이블과 EMP2테이블이 생성됩니다.

- DEPT는 외래키를 참조하기 위해 생성한 테이블입니다.

- EMP2테이블에서 EMPNO은 추후에 CONSTRAINTS를 통해 기본키로 설정했습니다.

- ENAME과 DEPTNO은 NOT NULL을 통해 빈 값을 허용하지 않았습니다.

- SAL은 값을 입력하지 않아도 기본값 0이 들어가도록 설정했습니다.

- DEPTNO는 외래키로 DEPT테이블의 DEPTNO와 참조해서 설정했습니다. 

 

 

 

4) 테이블 생성 시 CASCADE 사용

- 테이블을 생성할 때 CASCADE 옵션을 사용할 수 있습니다.

- CASCADE옵션은 참조관계(기본키와 외래키 관계)가 있을 경우 참조되는 데이터를 자동으로 반영할 수 있는 것입니다. 

- 예를 들어 자신의 테이블에서 데이터를 삭제하면 참조한 다른 테이블의 데이터도 자동으로 삭제하는 것을 말합니다.

- CASECADE옵션을 사용하면 참조무결성을 준수할 수 있습니다. 

- 실습을 통해서 이해를 해보도록 하겠습니다.

 

## DEPT테이블에 2개 데이터 추가 

INSERT INTO DEPT VALUES('1001', '인사팀');
INSERT INTO DEPT VALUES('1002', '총무팀');

- 테이블 조회를 해보면 데이터가 2개가 잘 들어가 있습니다. 

 

 

## EMP3테이블 생성 시 CASCADE 설정 + 데이터 2개 추가

CREATE TABLE EMP3
(
	EMPNO INT,
	ENAME VARCHAR(20) NOT NULL,
	SAL INT DEFAULT 0,
        DEPTNO VARCHAR(4) NOT NULL,
        CONSTRAINT EMPPK PRIMARY KEY (EMPNO),
        CONSTRAINT DEPTFK2 FOREIGN KEY (DEPTNO)
                          REFERENCES DEPT (DEPTNO)
                          ON DELETE CASCADE
);
INSERT INTO EMP3 VALUES(101, '정호석',1000,'1001');
INSERT INTO EMP3 VALUES(102, '김석진',1300,'1002');

 

- 데이터가 잘 추가된 것을 확인할 수 있습니다. 

 

 

 

## DEPT테이블에서 1001번을 삭제 후 EMP3테이블 조회

DELETE FROM DEPT WHERE (DEPTNO = '1001');
SELECT * FROM EMP3;

 

- DEPT테이블에서 DEPTNO이 1001인 것을 지웠습니다.

- 그러고 EMP3테이블을 조회하면 기존 정호석 행이 삭제되어 있는 것을 확인할 수 있습니다.

- CASCADE옵션을 사용해서 참조무결성을 준수하였습니다. 

 

 

 

 

 

 

 

 

 

728x90
반응형