DDL(Data Definition Language)
테이블 생성
create table 테이블명( 컬럼명 자료형(표현할 범위) );
의 구조를 따른다.
1 2 3 4 5 6 | create table test( name varchar2(10), age number(3), tel varchar2(20), address varchar2(50) ); | cs |
테이블 복사
create table test2 as select * from test1;
의 구조를 따른다.
1 2 3 4 | create table emp as select last_name, salary, department_id from employees; | cs |
이경우, 테이블의 구조 뿐만 아니라 데이터까지 전부 복사된다.
테이블 구조 복사
1 2 3 4 | create table emp as select last_name, salary from employees where 1 = 0; | cs |
테이블의 구조만 복사할경우 위와 비슷한데, where에 무조건 거짓인 조건을 넣어주어서 데이터가 복사되지 않게 한다.
주로 1=0이라는 거짓 조건을 사용한다.
컬럼 추가
alter table (테이블명)
add ( 컬럼명 자료형(표현할범위) );
1 | alter table emp add( department_id varchar2 (20)); | cs |
이 경우 emp 테이블에 department_id라는 컴럼이 추가 되지만, 그 안에는 데이터가 없다.
컬럼 변경
alter table (테이블명)
modify ( 컬럼명 바꿀자료형(표현할범위) );
1 | alter table emp modify( phone number(30) ); | cs |
이 경우 phone에는 데이터가 없는 상황이므로 데이터 타입이 변경 된다.
컬럼을 변결할때는 데이터가 존재할 경우 데이터 타입을 변경할 수 없다.
단 char와 varchar2 는 가능하다.
또한 컬럼명은 변경할 수 없다.
크기는 기존 데이터보다 같거나 크게 변경만 가능하다.
컬럼을 변경하는 것은 별로 추천하지 않는 것이다.
컬럼 삭제
alter table 테이블명 drop column 컬럼명;
1 | alter table emp drop column adress; | cs |
다음과 같이 컬럼을 삭제할 수 있다.
컬럼 비활성화
컬럼을 삭제할때 다른 쪽에서 컬럼을 이용하고 있을 수 있다. 그렇기 때문에 실제로는 컬럼을 논리적으로 비활성화 시킨 후에 사용시간이 적은 시간에 삭제하는 작업을 진행한다.
한번 비활성화 한 컬럼은 다시 활성화 시킬 수 없다. 메모리만 차지하고 삭제와 같다고 생각하면 된다.
alter table 테이블명 set unused( 컬럼명);
1 | alter table emp set unused(phone); | cs |
select * from user_unused_col_tabs;
1 | select * from user_unused_col_tabs; | cs |
을 사용할 경우 비활성화 한 컬럼의 갯수를 테이블별로 확인할수 있다.
이후 비활성화된 컬럼을 삭제하면 된다. 그래야 저장공간을 확보할 수 있다.
이때 비활성화 한 컬럼을 제거하는 방법은
alter table 테이블명 drop unused column;
1 | alter table emp drop unused column; | cs |
을 이용하면 된다.
테이블의 모든 데이터 삭제
truncate table 테이블명;
의 형식으로 이용한다.
*AUTO COMMIT이 실행 된다.
그러므로 DELETE보다 빠르게 데이터 삭제가 가능하나, AUTO COMMIT이 진행되기 때문에 ROLLBACK이 불가능하다.(사용에 주의가 요함)
테이블 삭제
drop table 테이블명;
의 형식이다.
1 | drop table emp; | cs |
<추가정보: sequence 생성>
1 2 3 4 5 | create sequence testseq start with 1 maxvalue 999999 nocache nocycle; | cs |
autoincrement 대신
1 | select seq.NEXTVAL from dual; | cs |
를 사용한다.
sequence를 확인할때
1 | select * from user_sequences; | cs |
를 사용한다.
이 seqeunce는 지금 잘 이해가 안가므로 다음에 다시 정리하겠다.
SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.
'DATABASE(oracleDB 11g) > SQL' 카테고리의 다른 글
[SQL]TCL(트랜잭션 관리) 기초 (0) | 2019.02.01 |
---|---|
[SQL]DML(Data Manupulation Language)의 기초 (0) | 2019.01.31 |
[SQL]서브쿼리(SUBQUERY)의 기초 (0) | 2019.01.30 |
[SQL]계층적 질의 (0) | 2019.01.30 |
[SQL]GROUP BY의 확장 (0) | 2019.01.30 |