본문 바로가기

Oracle 기본 개념

Oracel - 테이블 생성.. 그거 어떻게 하는 건데?

728x90

 

 

 

테이블 생성

 

 [ 테이블 생성 구문 ]

 

 

 


알아둬야 할 게 있다면 테이블 이름은 대소문자를 구분하지 않는다는 것이다

예시) employees = EMPLOYEES


 

 

 

테이블을 생성하면 다음과 같다

 

 

 


 

 

테이블 구조는 어떻게 변경할까?

 

ALTER TABLE문장ADD절을 사용하여 테이블에 열을 추가할 수 있다

 

열을 추가하거나 수정은 가능하나

열의 위치는 지정할 수 없다 (새로운 열은 마지막 열)

새로운 열 추가 시 제약사항과 함께 추가할 수 없음

 

 

열 추가 (ADD)

 

 

열 변경(MODIFY)

 


 

조금 더 자세하게 알아보자

 

COLUMN 추가

 

ADD절 사용

 

 

열을 추가할 때 테이블이 이미 어떤 행을 포함하고 있다면,

새로운 열은 이미 존재하는 모든 행에 대해서 Null로 초기화

 

 

 

 

열의 이름도 변경이 가능할까?

 

물론 가능하다!

 

REMANE COLUMN절 사용

 

 

 

어떻게 사용되는지 볼까나?

 

[ 예제1 ]

 

 

[ 예제2 ]

job열의 이름을 job_id로 변경

 

테이블 구조 내부에서도 job 열의 이름이 변경된 것을 확인할 수 있다

 

 

 

 

 

COLUMN 수정

 

MODIFY절 사용

 

단, 주의해야 할 것은 기존의 데이터를 손상되게 크기를 조정할 수는 없다는 것이다

 

 

 

어떻게 사용되는지 확인해보자!

 

first_name의 열의 크기를 축소한 것을 확인할 수 있다

 

 

 

 

 

 

COLUMN 삭제

 

DROP COLUMN절 사용

 

                                    1. 삭제를 하려는 열은 데이터를 포함하거나 포함하지 않아도 무방하다

                                    2. 한 번에 하나의 열만 삭제 가능하다

                                    3. 테이블 변경 후 테이블에 열이 하나 이상 있어야 한다

                                    4. 삭제된 열은 복구할 수 없다

 

 

 

어떻게 사용될까?

 

job_id열을 삭제

 

테이블 구조 내부에서도 job 열이 삭제된 것을 확인할 수 있다

 

 

 


 

 

열이 아닌 테이블도 삭제가 가능할까?

 

                                                         1. 테이블의 모든 데이터와 구조가 삭제

                                                         2. 어떤 결정되지 않은 트랜잭션이 커밋

                                                         3. 모든 인덱스가 삭제

                                                         4. 롤백 불가능

 

 

테이블 삭제할 때 데이터베이스는 테이블에 있는 모든 데이터와 그와 연관된 모든 인덱스를 상실한다CASCADE CONSTRAINTS절은 참조 제약조건이 있는 열을 포함하더라고 테이블 삭제

 

 

테이블 삭제할 때는 반드시 주의해야 할 점이

DROP TABLE 문장은 복구할 수 없다는 것이다

 

 

 


 

이블 삭제가 아닌 테이블 속 데이터만 비우는 것도 가능할까?

 

테이블 데이터 비우기(TRUNCATE)

 

[ TURNCATE 구문 ] 

 

                                                           1. 테이블의 모든 행을 삭제한다

                                                           2. 해당 테이블에 사용된 기억공간을 해제한다

                                                           3. 롤백이 불가능하다

                                                           4. 대안으로 DELETE문장 사용

 


그렇다면 DELETE랑 TRUNCATE랑 차이가 무엇인가?

 

DELETE문장은 모든 행을 삭제할 수 있으나 저장 공간을 해제할 수는 없다

반면에 TRUNCATE문장은 테이블의 모든 행을 제거하고 저장 공간을 해제한다


 

 

테이블 전체를 삭제했지만

SELECT절로 삭제한 테이블을 부르면 출력은 안 되지만 에러가 발생하지는 않는다

(데이터를 삭제하지만 테이블 구조가 남아있기 때문!)

 

 

 

 

 

 

 

 

 

 

 

 

'Oracle 기본 개념' 카테고리의 다른 글

Oracle - 뷰(VIEW)  (0) 2022.11.27
Oracle - 테이블 제약조건(Constraint)  (0) 2022.11.22
Oracle - 트랜잭션이란 무엇인가  (0) 2022.11.21
Oracle - DML  (0) 2022.11.20
Oracle - 서브쿼리  (0) 2022.11.15