요약 |
테이블 생성 명령어&SUBQUERY create table 테이블명 as subquery문 |
테이블 구조 변경하기 alter table 테이블명 |
add column명 or rename column명 or modify column명 column의 성질 or drop column column명 |
TRUNCATE 모든 ROW를 지운다. |
|
|
|
|
|
-------------------------------------------------------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------------------------------------------------------- |
테이블생성 명령어와 subquery문 |
|
Create table문에도 subquery문이 적용이 된다. |
기존에 있는 테이블의 내용을 전부 복사해 새로운 테이블을 만들 수도 있다. |
|
create table 테이블명 |
as |
subquery문 |
|
SQL>CREATE TABLE COPY_EMP2 |
2 AS <-AS를 이용하자 |
3 SELECT*FROM EMP; <-SUBQUERY문 |
|
테이블이 생성되었습니다. <-EMP TABLE 내용에 있는 것을 그대로 가져 오는것 |
|
|
|
QL> CREATE TABLE COPY_EMP2 |
2 AS |
3 SELECT*FROM EMP; |
WHERE DEPTNO =10 <-10번번호를 가진 ROW만 그대로 가져 온다. |
|
테이블이 생성되었습니다. |
|
---------------------------------------------------------------------------------------------------------------------- |
테이블 구조 수정하기 |
alter table 테이블명 |
add column명 or rename column명 or modify column명 column의 성질 or drop column column명 |
|
add column명 |
ex) alter table emp |
add (hp varchar2(8)) <-핸드폰 번호 쓰는란을 추가해 보자 ! |
>desc emp |
|
*insert문과 add문의 차이 |
ROW를 바꿀땐 INSERT INTO이며 구조를 바꾸진 않는다 add는 테이블의 구조를 바꾸게 된다. |
|
rename column명 |
table 안에 열의 이름 변경이다. 별칭과는 다르다. 나타나는 것은 같을 수 있다. |
alter table emp |
rename column hp |
to mp; |
|
modify column명 column의 성질 |
alter table emp |
modify mp varchar2(13); <-핸드폰 번호는 13자리니까 변경. data type을 변경 하는것 |
|
drop column column명 |
drop |
alter table emp |
drop column mp; <-내용 삭제 |
|
DROP TABLE COPY_EMP; <-테이블 삭제 |
|
*주의할 점 |
하지만 이러한 DDL 명령들이 빈번하게 일어나면 안된다. 오직 프로젝트 초기에만 변경을 허용하지만 |
DB가 운영중인 과정에서 이러한 변경이 일어나면 연쇄반응이 일어나서 관련된 모든 것들이 변경된다. |
관리자가 이름 두줄 바꾸면 개발자는 2주동안 야근하면서 객체,UI등 관련된 모든것들을 바꾸어야한다. |
|
|
*DROP과 DELETE의 차이 |
둘다 테이블을 지운다는 공통점이 있지만 |
|
DELETE QUERY문 <-AUTOCOMMIT이 안일어난다. |
DROP DDL 문 <-AUTOCOMMIT이 일어난다. |
|
즉 DROPD은 ROLLBACK이 안일어난다. |
DELETE는 ROLLBACK이 일어난다. |
|
DROP은 존재를 전부 지운다 <- 회사에선 위험할 수 있다. 구조까지 지워버리기 때문. |
DELETE는 테이블의 구조는 남아있다. |
|
*휴지통 기능 |
DROP에서 발생하는 사고를 방지하기 위해서 |
최신 버전에는 휴지통이라는 기능이 남아있다. |
SHOW RECYCLEBIN을 치면 휴지통에 있는 TABLE이 있다. |
*PURGE기능 |
휴지통을 거치지 않고 지워지는 방법 |
|
DROP TABLE COPY_EMP1 PURGE; |
|
휴지통이 지워지는 방법 |
PURGE RECYCLEBIN; |
|
휴지통에 있는 테이블을 다시 꺼내려면 |
FLASHBACK TABLE COPY_EMP1 |
TO BEFORE DROP; 이다. <-제조사마다 있을 수도 없을 수도 있는 기능 |
|
------------------------------------------------------------------------------------------------------------------------ |
TRUNCATE란? |
DELETE 명령어와 유사한 기능으로 모든 ROW를 삭제하는 명령 |
|
*DELETE와 TRUNCATE의 차이 |
DELETE는 DML이다. |
TRUNCATE는 DDL이다. |
TRUNCATE가 지우는데 더 빠르게 지운다. 바로지우기 때문이다. |
TRUNCATE는 일부가 아닌 전부 지우는것 밖엔 안된다.(DELETE CEMP WHERE DEPTNO =10 ;가 가능하다.) |
|
|
DDL:CREATE,ALTER,DROP,RENAME,TRUNCATE,COMMENT <-AUTOCOMMIT이 발생한다. ROLLBACK 불가. |