- 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구문입니다.
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에 코드를 작성한 후 [Ctrl]+[Enter]를 누릅니다.
- EMP테이블이 생긴 것을 확인할 수 있습니다.
2) 테이블 구조 확인
## 테이블 구조 확인 문법
DESC 테이블명;
## 테이블 구조 확인 예시
DESC EMP;
- [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)
);
- 명령을 실행해보면 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옵션을 사용해서 참조무결성을 준수하였습니다.
'자격증 > SQLD 자격증' 카테고리의 다른 글
[SQLD자격증강좌] 16강 DDL - 테이블 삭제와 뷰생성과 삭제 - 오쌤의 니가스터디 (0) | 2024.03.09 |
---|---|
[SQLD자격증강좌] 15강 DDL - 테이블 변경 - 오쌤의 니가스터디 (0) | 2024.03.09 |
[SQLD자격증강좌] 13강 SQL의 종류 - 오쌤의 니가스터디 (0) | 2024.03.08 |
[SQLD자격증강좌] 12강 관계형 데이터베이스 - 오쌤의 니가스터디 (0) | 2024.03.08 |
[SQLD자격증강좌] 11강 분산데이터베이스 - 오쌤의 니가스터디 (0) | 2024.03.08 |