23/01/18 [Database]

웰치스·2023년 1월 18일
0

<SQL 활용>

📗 데이터정의어(DDL) : Object(객체) 종류

Table
view
Sequence
Index
Synonym


📌 1. 데이터정의어(DDL) - Table

  • DDL(데이터정의어) : create table, alter table, drop table, truncate table
                           => 작업단위 : object(객체) = table
                           => autocommit 내포 함. (자동저장됨)

📁 서브쿼리 구문을 사용한 테이블 생성

[ 백업 또는 테스트용 테이블 생성 작업!! ]

create table copy_dept
as select*
   from departments;

📁 테이블 수정(Alter table)

  • Alter table 테이블명 ADD ---;     : 컬럼추가, 제약조건추가
  • Alter table 테이블명 MODIFY ---; : 컬럼수정, 제약조건추가
  • Alter table 테이블명 DROP ---;    : 컬럼삭제, 제약조건 삭제
  • Alter table 테이블명 RENAME ---; : 컬럼명수정, 제약조건명 수정
  • 제약조건 추가
    [문법1] Table level 문법 => pk, fk, uk, ck
    alter table 테이블명
    add constraint 제약조건명 제약조건유형(컬럼명);
    [문법2] Column level 문법 => pk, fk, uk, ck, nn
    alter table 테이블명
    modify 컬럼명 constraint 제약조건명 제약조건유형;

➀ Alter table 테이블명 ADD ---; : 컬럼추가

alter table dept80
add (job_id varchar2(10));
  • 새롭게 추가된 컬럼은 마지막순서로 추가된다.

➁ Alter table 테이블명 MODIFY ---; : 컬럼수정 - 데이터타입, 컬럼 사이즈, Default값 등...

  • 컬럼사이즈 늘리기 : 10 -> 20
alter table dept80
modify (job_id varchar2(20));
  • 컬럼사이즈 줄이기 : 25 -> 20
alter table dept80
modify (last_name varchar2(20));

➂ Alter table 테이블명 Drop ---; : 컬럼삭제

alter table dept80
drop column job_id;

(=)

alter table dep80
drop (job_id);

➃ 테이블의 기존 컬럼에 제약조건 추가

[문법1] Table level 문법
alter table 테이블명
add constraint 제약조건명 제약조건유형(컬럼명);

[문법2] Column level 문법
alter table 테이블명
modify 컬럼명 constraint 제약조건명 제약조건유형;


  • 제약조건 조회하기

단 테이블 복사시, NOTNULL제약조건만 복사됨!!


  • Table level 문법으로 Primary key 제약조건 추가
alter table emp2
add CONSTRAINT e2_eid_pk primary key(employee_id);

  • Check 제약조건 추가
alter table emp2
modify salary CONSTRAINT e2_sal_ck check (salary > 0);

(=)

alter table emp2
add constraint e_sal_ck check (salary > 0);

  • Foreign key 제약조건 추가
alter table emp2
modify department_id CONSTRAINT e2_did_fk  
					 REFERENCES departments(department_id);

(=)

alter table emp2
add CONSTRAINT e2_did_fk FOREIGN key(department_id) 
						REFERENCES departments(department_id);

  • Foreign key 제약조건 추가2
alter table emp2
add CONSTRAINT e2_mid_fk FOREIGN key(manager_id) 
						REFERENCES emp2(employee_id);

➄ 테이블의 제약조건 삭제

alter table emp2
drop CONSTRAINT e2_sal_ck;

  • Cascade : primary key 제약조건 삭제시, 걸림돌이 되는것도 함께 삭제!!
alter table emp2
drop primary key cascade;

⑥ Alter table 테이블명 RENAME ---; : 컬럼명수정,제약조건명 수정

alter table emp2
rename column hire_date to start_date;

alter table emp2
rename CONSTRAINT sys_c007445 to e2_jid_nn;

[참고] 테이블명 수정

rename 기존테이블명 to 새테이블명
ex) rename emp2 to emp5


📁 테이블 삭제(Drop table)

  • 테이블삭제 : SQL> Drop table 테이블명 [purge];
    ( purge => 휴지통에 들어가지 않고 바로 삭제 )
  • DDL구문이므로 rollback 안됨
  • 휴지통조회 : SQL> SELECT original_name, operation, droptime
                             FROM recyclebin;
                     SQL> show recyclebin;
  • 휴지통으로부터 테이블 되돌리기
    : SQL > flashback table 테이블명 to before drop;

📁 테이블 절단(Truncate table)

  • 테이블 구조는 남겨두고, 테이블의 모든 데이터 삭제하는 명령어
  • DDL구문이므로 rollback 안됨 / 휴지통도 사용 불가!!

[ TRUNCATE와 DELETE 비교]

SQL> Truncate table 테이블명; => rollback X
SQL> Delete from 테이블명; => rollback O

0개의 댓글