Programming/SQL

[SQL] DDL (테이블 생성, 변경, 삭제)

앵도라지 2023. 2. 4. 20:23

 

 


데이터베이스의 데이터를 조회하고, 수정하거나 삭제하려면, 그 이전에 테이블이 존재해야 한다.

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

 

(DDL, DML, DCL, TCL에 대한 설명은 앞 게시물을 확인하면 된다)

https://cherish22.tistory.com/47

 

테이블의 생성, 변경, 삭제 과정에 대해 알아보자.

한 장 요약은 아래와 같다.

 

 

1. 테이블 생성 (CREATE)

1) 기본적인 테이블 생성

  • 테이블을 생성하는 방법에는 여러가지가 있는데, 아주 간단하게 테이블을 생성하는 방법은 아래와 같다.
  1. 생성되는 테이블 명을 입력한다. (영문자로 시작)
  2. 생성될 테이블의 칼럼 명과 데이터 타입을 지정한다.
    1. 이 중 하나의 칼럼을 기본키로 지정할 수 있다.
Create Table Test
( #소괄호로 시작한다.
	name varchar2(20) primary key,
	age number(10),
	발매일 date 
); #세미콜론으로 끝난다.

이 때, 데이터 타입은 number, varchar2, char, date 등이 있다.

varchar2는 가변길이 문자열로 지정할 때, char는 고정된 크기의 문자로 지정할 때, date는 날짜형으로 지정할 때 사용한다.

 

 

2) 제약조건을 사용한 테이블 생성 (constraint)

  • 기본키, 외래키, 기본값, not null 등은 테이블을 생성할 때 지정할 수 있다.
  • constraint : 외래키, 기본키와 기본키의 이름을 지정할 수 있다.
    • 기본키는 1개 이상 지정 가능하다.
    • 외래키를 지정하기 위해서는 마스터 테이블이 생성되어 있어야 한다.
  • number(10, 2) : 소수점 둘째자리 까지 저장된다는 의미다.
  • sysdate : 오늘 날짜를 조회할 수 있다.

 

3) CASCADE를 사용한 테이블 생성

  • CASCADE 옵션은 참조 관계 (기본키와 외래키 관계)가 있을 경우 참조되는 데이터를 자동으로 반영할 수 있다.
  • ON DELETE CASCADE 옵션은 자신이 참조하고 있는 테이블 (DEPT)의 데이터가 삭제되면 자동으로 자신도 삭제된다.
  • CASCADE 사용시 참조 무결성을 준수할 수 있다.
Create Table EMP (
	empno number(10),
	ename varchar2(20),
	sal number(10, 2) default 0,
	deptno varchar2(4) not null,
	createdate date default sysdate,
	constraint e_pk primary key(empno),
	constraint d_fk foreign key(deptno)
				references dept(deptno)
				ON DELETE CASCADE
);

INSERT INTO EMP VALUES(100, '가나다라', 1000, '1000', sysdate);

 

 

2. 테이블 변경

  • ALTER TABLE문을 통해 테이블 변경을 할 수 있으며, 테이블명 변경, 칼럼 추가, 변경, 삭제 등을 할 수 있다.

1) 테이블명 변경

  • ALTER TABLE ~ RENAME TO문을 사용하면 된다.
ALTER TABLE TEST
	RENAME TO NEW_TEST;

2) 칼럼 추가

  • ALTER TABLE ~ ADD 문을 통해 칼럼을 추가한다.
ALTER TABLE TEST
	ADD (age number(2) default 1);

3) 칼럼 변경

  • ALTER TABLE ~ MODIFY문을 사용하면 칼럼을 변경할 수 있다.
    • 데이터 타입이나 데이터 길이를 변경할 수 있다.
  • 칼럼 변경 시 제약 조건 설정도 가능하다.
  • 칼럼의 데이터 타입을 변경하 ㄹ때 기존 데이터가 있는 경우 에러가 발생한다.
ALTER TABLE TEST
	MODIFY (ename varchar2(20) not null);

4) 칼럼 삭제

  • ALTER TABLE ~ DROP COLUMN문으로 삭제한다.
ALTER TABLE NEW
	DROP COLUMN age;

5) 칼럼명 변경

  • ALTER TABLE ~ RENAME COLUMN ~ TO 문으로 변경할 수 있다.
ALTER TABLE TEST
	RENAME COLUMN ename to new_name;

3. 테이블 삭제

  • DROP TABLE 문을 사용해서 삭제할 수 있다.
  • DROP TABLE은 테이블의 구조와 데이터를 모두 삭제한다.
DROP TABLE TEST;
  • DROP TABLE 에서 “CASCADE CONSTRAINT” 옵션을 사용할 수 있다.
  • “CASCADE CONSTRAINT” 옵션은 해당 테이블의 데이터를 외래키로 참조한 슬레이브 테이블과 관련된 제약사항도 삭제할 때 사용된다.

 

다음은 DML에 대해 알아보자

2023.02.05 - [Programming/SQL] - [SQL] DML (데이터 삽입, 삭제, 수정, 선택)

 

[SQL] DML (데이터 삽입, 삭제, 수정, 선택)

이제, 본격적으로 데이터를 삽입하고 삭제, 수정, 선택하는 방법에 대해서 알아보자. 앞서 정리한 내용을 참고하면 이해가 쉽다. [Programming/SQL] - [SQL] SQL의 종류와 정의 [SQL] SQL의 종류와 정의 일

cherish22.tistory.com