+ Hello +

0515 DB create table, alter table 본문

+ 스마트인재개발원 +

0515 DB create table, alter table

journeyee 2021. 5. 30. 22:29

 

1. Create table 테이블 생성 (369p)



- DDL : 객체 생성, 수정, 삭제할 때 사용하는 언어
- 테이블 이름 및 열 이름
- 문자로 시작
- 최대 30자까지 가능
- 알파벳 대문자, 소문자, (한글 가능하긴 함 가독성 떨어짐), 숫자, _&#(특수기호 3개 가능, 단 문자로 시작)
- 테이블 이름이 다르면 같은 col이름 가능
- 동일한 소유자가 소유한 다른 객체의 이름은 중복 x

* 테이블 생성할 때 반드시 지정해야 할 것
- 테이블이름
- 열의 이름, 데이터 유형 및 크기



<DB구축>
1) create table > 생성
create table 테이블이름
(col 이름 number(2) ... ,
col이름 타입/길이 );
desc 테이블이름 으로 확인가능 (describe)


2) insert > data삽입


3) commit > data저장



* 데이터 유형
!!!!!!! (저장공간) 결정 신중하게!!!!!!

- char(5) : 고정 길이 문자 데이터
미리 공간 할당
성능을 중요시(공간 낭비일어날 수 있음)
- varchar2(5) : 가변 길이 문자 데이터
들어오는 data size에 맞게끔 할당
공간의 활용도를 중요시

- Number : +-0 최대 256자까지 가능 but 성능떨어짐
- number(p) : 정수만 사용
- number(p,s) : 소수점 표현 가능, 가장 많이 사용

- date : 날짜와 시간 값 (시차 계산을 못함)
- datetime
- timestamp : 시간, 분, 초까지 표기
ex) hire_date timnestamp


2. Alter table문 390p


: 열 추가, 수정, 새 열의 기본값 정의, 삭제

* alter table 구문
1) col 추가
alter table 테이블 이름
add
-추가된 column은 null 값 이므로 값 추가할 때 insert(X) update 사용!

 


2) col의 데이터 타입, 길이 변경
alter table 테이블 이름
modify (column datatype..


- (1) data type 변경
이미 문자 데이터로 입력되어 있을 땐, 문자로 데이터 타입을 바꿀 수 없음
- (2) 길이 증가
이미 데이터가 5 넘을 땐, 5이하로 데이터 크기를 줄일 수 없음
- (3) 길이 감소
>> 데이터가 없을 땐 변경, 증가, 감소 모두 가능
but 데이터가 있으면 타입 변경불가, 증/감소는 데이터 크기에 따라 정해짐


3-1) col 삭제
alter table 테이블 이름
drop column 지울column이름;

- DDL은 실행과 동시에 commit 저장되기 때문에 복구할 수 없음 !! > 데이터를 삭제할 때 주의하기
- data 뿐만 아니라 data 저장공간, data dictionary에 있는 모든 정보를 삭제해버림
- 백업파일이 있지 않는 한 복구 불가능
- 동시성이 떨어져서 사용 잘 안함 >> set unused 사용


* DML : 실행하는 동안 행에 Lock을 실시
* DDL : table 전체에 Lock

3-2) set unused
alter table 테이블 이름
set unused (컬러이름);

- unused된 컬럼은 변경할 수 없도록 만듦
- data 저장공간은 남아있음 > drop unused columns를 통해 저장 공간 없앰

*alter table 테이블이름
drop unused columns;
- unused 상태의 저장공간을 회수, 싹 날려버림



------------------
Q) DML 트랜잭션을 하는 도중에 commit을 안하고 DDL을 하면 어떻게 되나요?
insert (DML)
insert
insert
~~ing
create(DDL) > 새로운 트랜젝션이 되면서 그 전의 insert들은 auto commit 됨
-----------------------------------

** 삭제 3가지 방법

1) delete
- DML명령어
- 범위 : data 삭제
- 저장공간 : data 저장공간 남아있음
- 복구 : rollback
- where 절 있음(행 단위 삭제할 때 사용)

2) truncate
- DDL 명령어
- 범위 : data 삭제(모든 행 제거)
- 저장공간 : data 저장공간 삭제 but table의 구조는 남아있음
- 복구 : 복구 불가, 단 백업본 있을 시 가능
- where 절 없음(전체 table data 삭제할 때 사용)

3) drop
- DDL 명령어
- 범위 : data, data dictionary 삭제
- 저장공간 : 저장공간 모두 날림
- 복구 : 복구 불가, 단 백업본 있을 시 가능


------------------------------------
테이블에 주석 추가 400p

401p 테이블 생성 요약


Comments