[SQL/Oracle] 테이블 생성, 수정, 삭제

2022. 5. 18. 11:51DB/Oracle

반응형

Oracle에서 테이블을 관리하는 명령어를 살펴보자.

 

테이블 생성, 복제

 

테이블을 생성하는 방식은 다음과 같다.

create table 테이블명 (
컬럼명, 타입
);

 

account 테이블을 만든다고 가정할 때, 아래와 같이 만들 수 있다.

create table account (
id varchar2(20),
name varchar2(30),
balance number
);

실행 결과

 

 

 

 

기존에 만들어진 테이블을 복제하거나, 테이블의 일부를 가져와 생성할 수도 있다.

이럴 땐 기존 select-from-where절을 통해 원하는 기준을 설정해 가져오면 된다.

 

예제를 보며 정리해보자.

-- 테이블 복제
create table dept3
as select * from dept2;
-- 테이블 일부 복제
create table dept5
as select * from dept2
where area='서울지사';
-- 데이터 없이 테이블 구조만 복제하고 싶을 때
create table dept6
as select * from dept2
where 1=2; -- 항상 조건절을 false로 만들어주면 된다.

 

테이블 수정 - 테이블명 변경, 컬럼 수정

 

이때, 테이블의 컬럼을 수정하는 것과 데이터 값을 변경&추가 하는 것과 헷갈리면 안된다!

이름, 나이, 몸무게의 컬럼을 가진 테이블이 있을 때,
몸무게 -> 키 로 바꾸는것이 컬럼 수정
["홍길동", 22, 68] 의 데이터를 ["김길동", 24, 75]로 바꾸는 것은 데이터 수정

 

테이블에 컬럼 추가 (default는 생략가능, 데이터 삽입 시 기본값을 자동으로 넣어준다)

alter table 테이블명 add (컬럼이름 타입 [default]);

테이블 컬럼명 변경

alter table 테이블명 rename column 컬럼 to 바꿀컬럼의이름;

테이블명 변경

rename 테이블 to 바꿀이름;

컬럼 데이터 크기 조정

alter table 테이블명 modify(컬럼 타입);

 

아래 예제를 참조해서 마무리해보자

-- 컬럼 추가
alter table dept6
add (location varchar2(20));
-- 컬럼명 변경
alter table dept5
rename column location to loc;
-- 테이블명 변경
rename dept6 to dept7;
-- 컬럼 데이터 크기 조정
alter table dept5 modify(loc varchar2(30));

 

 

 테이블 삭제 및 컬럼 삭제

 

 

테이블 삭제

drop table 테이블명;

컬럼 삭제

alter table 테이블명 drop column 컬럼명;

전체 데이터 삭제

truncate table 테이블명; -- 데이터가 있던 공간까지 전부 삭제
delete from 테이블명 where 지울조건; -- 데이터값만 삭제,

 

drop vs truncate vs delete?
delete는 데이터만 삭제하여 데이터를 할당한 공간은 남아있다.
truncate는 이러한 공간까지 전부 삭제한다
drop은 테이블 자체를 삭제

 

 

 

예제와 함께 마무리해보자

 

-- 컬럼 삭제
alter table dept7 drop column location2;
-- 전체 데이터 삭제
truncate table dept5;
-- 테이블 삭제
drop table dept5;