테이블 생성
[ 테이블 생성 구문 ]
알아둬야 할 게 있다면 테이블 이름은 대소문자를 구분하지 않는다는 것이다
예시) 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 |