데이터베이스 연구실.log

테이블 정의와 변경

DDL의 종류와 CREATE TABLE, ALTER TABLE로 컬럼을 추가, 변경, 삭제, 감추기, 이름 변경하는 방법, 커밋이나 세션 종료까지만 데이터를 두는 임시 테이블

DDLCREATE TABLEALTER TABLEADDMODIFYDROP COLUMNSET UNUSEDRENAME COLUMNGLOBAL TEMPORARY TABLE

#핵심 요약

DDL(Data Definition Language)은 CREATE, ALTER, DROP, TRUNCATE, RENAME임

컬럼 관리 명령은 네 가지임
추가(ADD), 변경(MODIFY), 삭제(DROP COLUMN), 감추기(SET UNUSED)

컬럼 이름은 ALTER TABLE ... RENAME COLUMN 옛이름 TO 새이름으로 바꿈

임시 테이블(CREATE GLOBAL TEMPORARY TABLE)은 ON COMMIT DELETE ROWS면 커밋할 때까지, ON COMMIT PRESERVE ROWS면 세션을 끝낼 때까지만 데이터를 둠

#개념과 동작 원리

데이터 저장에 따른 테이블 종류:

종류 데이터
heap table 영구히 저장
temporary table 임시로 저장
ON COMMIT DELETE ROWS(커밋까지), ON COMMIT PRESERVE ROWS(세션 종료까지)

임시 테이블 사용 예:

  1. 잠깐 테스트용으로 쓰고 영구 저장이 필요 없을 때
  2. 여러 세션이 동시에 같은 작업을 해도 잠금 문제가 없어야 할 때
    실습 요약은 "남의 데이터와 섞일 걱정 없는 일회용 연습장"임

설명(컬럼 감추기): 컬럼 삭제처럼 큰 작업을 바쁜 업무 시간에 하면 DB 성능이 떨어짐
그래서 먼저 SET UNUSED로 감추고 한가할 때 DROP UNUSED COLUMNS로 지움
감춘 뒤에는 어떤 컬럼을 감췄는지 이름을 확인할 길이 없어 따로 적어 두어야 함

#필수 명령어 또는 SQL

#CREATE TABLE(CSV 적재 준비)

SQL Developer 또는 SQL*Plus객체 또는 설정을 변경함
CREATE TABLE emp900
( empno    NUMBER(10),
  ename    VARCHAR2(20),
  job      VARCHAR2(50),
  mgr      NUMBER(10),
  hiredate DATE,
  sal      NUMBER(10,2),
  comm     NUMBER(10,2),
  deptno   NUMBER(10) );

결과 해석:

실습에서는 CSV 파일(범죄 요일 통계, 지하철 승하차, 사원, 서울 범죄)에 맞춰 테이블을 만들고 SQL Developer의 가져오기 기능으로 넣었음
한글 컬럼 이름(범죄대분류, 일, 월 등)도 썼음

#컬럼 추가, 변경, 삭제

SQL Developer 또는 SQL*Plus데이터 또는 파일을 삭제함, 되돌릴 수 없음
ALTER TABLE emp ADD loc VARCHAR2(20);
ALTER TABLE emp MODIFY loc VARCHAR2(30);
ALTER TABLE emp DROP COLUMN loc;

결과 해석: 개별 실행 출력은 기재 없음

#컬럼 감추기

SQL Developer 또는 SQL*Plus객체 또는 설정을 변경함
ALTER TABLE emp SET UNUSED COLUMN sal;
SQL Developer 또는 SQL*Plus조회만 함
SELECT * FROM user_unused_col_tabs;
SQL Developer 또는 SQL*Plus데이터 또는 파일을 삭제함, 되돌릴 수 없음
ALTER TABLE emp DROP UNUSED COLUMNS;

결과 해석: USER_UNUSED_COL_TABS에는 감춘 컬럼이 있는 테이블과 개수만 나옴
마지막 문장은 감춘 컬럼을 되돌릴 수 없게 지움

#컬럼 이름 변경

SQL Developer 또는 SQL*Plus객체 또는 설정을 변경함
ALTER TABLE emp RENAME COLUMN sal TO salary;

결과 해석:

실습에서는 같은 방식으로 제약 이름도 바꿨음(RENAME CONSTRAINT)

#임시 테이블

SQL Developer 또는 SQL*Plus객체 또는 설정을 변경함
CREATE GLOBAL TEMPORARY TABLE emp_temp1
( empno NUMBER(10),
  ename VARCHAR2(20),
  sal   NUMBER(10) )
ON COMMIT DELETE ROWS;

INSERT INTO emp_temp1 (empno, ename, sal)
SELECT empno, ename, sal FROM emp;

SELECT * FROM emp_temp1;
COMMIT;
SELECT * FROM emp_temp1;

결과 해석: COMMIT 뒤 두 번째 조회에서는 행이 사라짐
ON COMMIT PRESERVE ROWS로 만든 emp_temp2는 COMMIT 뒤에도 남고 세션이 끝나면 사라짐

#공공 데이터로 테이블 채우기 (연습)

실습에서는 공공데이터포털에서 서울시 소상공인 상가 정보 CSV를 내려받아, 컬럼을 모두 VARCHAR2(200)으로 둔 seoul_2025 테이블(상가업소번호, 상호명, 업종 분류, 시군구, 도로명주소, 경도, 위도 등 39개 컬럼)을 만들고 SQL Developer의 테이블 우클릭, 데이터 임포트로 적재한 뒤 SELECT COUNT(*) FROM seoul_2025로 건수를 확인했음

연습 문제: 같은 스크립트에서 테이블 이름만 바꿔 busan_2025, daejeon_2025, gwangju_2025를 만들고 각 도시 데이터를 넣은 뒤 건수를 확인함

#사용 조건과 주의사항

계정과 권한은 권한에 있음

기본값(DEFAULT)은 INSERT와 조회 결과 입력에 있음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기