데이터베이스

DATABASE STEP 24 - ALTER

2023. 3. 22. 17:37
728x90

★ DDL > Object

  • 객체 생성 : create
  • 객체 삭제 : drop
  • 객체 수정 : alter

★ 테이블 수정하기

  • 테이블 정의 수정 > 컬럼 수정 > 컬럼명 or 자료형(길이) or 제약사항
  • 테이블 수정해야 하는 상황 발생!!
    • 1. 테이블 삭제(drop) > 테이블 DDL(Create) 수정 > 수정된 DDL로 새롭게 테이블 생성
              a. 기존 테이블 데이터가 없었을 경우 > 아무 문제 없음
              b. 기존 테이블 데이터가 있었을 경우 > 미리 데이터 백업 > 테이블 삭제 > 수정 후 생성 > 데이터 복구 
                  - 공부할 때 자주 사용
                  - 개발 중에 사용 
                  - 서비스 운영 중 > 불가능 !!
    • 2. alter 명령어 사용 > 기존 테이블 구조(컬럼 정의) 변경
              a. 기존 테이블 데이터가 없었을 경우 > 아무 문제 없음
              b. 기존 테이블 데이터가 있었을 경우 > 경우에 따라 다름
                  - 공부할 때 사용
                  - 개발 중에 사용
                  - 서비스 운영 중 > 이 방식을 사용 > 운영 중에도 이 방식을 사용 금지
    • 사용 양식
alter table [테이블명] [선택기능] [선택컬럼]

 

■ 사용 ex)

  • ex1) 삭제 후, 다시 생성
drop table tblEdit;

create table tblEdit (
    seq number primary key,
    data varchar2(20) not null
);

insert into tblEdit values (1, '마우스');
insert into tblEdit values (2, '키보드');
insert into tblEdit values (3, '모니터');
  • ex2) 새로운 컬럼을 추가
  • 테이블에 데이터가 삽입되어 있는 상태라면 > not null로 제약사항을 설정하면 에러발생!!
-- ORA-01758: table must be empty to add mandatory (NOT NULL) column
-- 테이블이 비어있는 상태가 아니라서 not null 에러 발생
alter table tblEdit 
    add (price number not null);

-- 해결 방법 1 : null로 추가한다.
alter table tblEdit 
    add (price number null);

-- 해결 방법 2 : default 값을 추가한다.
alter table tblEdit
	add (price number default 0 not null);

-- 해결 방법 3 : 데이터를 모두 제거 후, 삽입 
delete from tblEdit;

alter table tblEdit
    add (memo varchar2(100) not null);
    
insert into tblEdit values (1, '마우스', 10000, '로지텍');
insert into tblEdit values (2, '키보드', 20000, 'MS');
insert into tblEdit values (3, '모니터', 30000, 'Dell');
  • ex3) 컬럼 삭제하기
alter table tblEdit
    drop column memo;

alter table tblEdit
    drop column seq;  -- PK 컬럼 삭제 > 절대 금지!!!
  • ex4) 컬럼 수정하기
-- 3.1 컬럼의 길이 수정하기(확장/축소)
alter table tblEdit
    modify (data varchar2(100)); -- not null 은 그대로 유지

desc tblEdit;

-- 3.2 컬럼의 제약 사항 수정하기
alter table tblEdit
    modify (data varchar2(100) null);
    
-- 3.3 컬럼의 자료형 바꾸기
-- 마찬가지로, 안에 데이터들이 비어있는 상태여야 가능하다.
alter table tblEdit
    modify (data number);

alter table tblEdit
    modify (seq varchar2(30));
728x90
저작자표시 비영리 변경금지 (새창열림)

'데이터베이스' 카테고리의 다른 글

DATABASE STEP 26 - Rank  (0) 2023.03.23
DATABASE STEP 25 - PSEUDO  (0) 2023.03.22
DATABASE STEP 23 - UNION  (0) 2023.03.22
DATABASE STEP 22 - VIEW  (0) 2023.03.22
DATABASE STEP 21 - JOIN  (2) 2023.03.21
'데이터베이스' 카테고리의 다른 글
  • DATABASE STEP 26 - Rank
  • DATABASE STEP 25 - PSEUDO
  • DATABASE STEP 23 - UNION
  • DATABASE STEP 22 - VIEW
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • java
  • 웹개발
  • JavaScript
  • 정보처리기사필기
  • 정보처리기사
  • 개발블로그
  • IT자격증공부
  • IT개발자
  • 프론트엔드
  • IT자격증
  • 개발자
  • 백엔드
  • jquery
  • css
  • it
  • DB
  • jsp
  • React
  • ajax
  • 백준
  • 자바
  • 정보보안전문가
  • 알고리즘
  • 앱개발자
  • 웹개발자
  • 데이터베이스
  • 코딩테스트
  • 웹페이지
  • DBA
  • html

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
DATABASE STEP 24 - ALTER
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.