Or09DDL

# 파일명 : Or09DDL.sql

# DDL : Data Definition Language

# 설명 : 테이블이나 뷰를 생성, 변경, 삭제하는 등의 쿼리문

********/


/*

[테이블 생성]

1. 생성방법

    create table 테이블명 (

        컬럼명1 자료형 [not null],

        칼럼명2 자료형 [not null],

        ....

        primary key (필드명) 등 제약조건

    );


2. 테이블명 칼럼 Naming 규칙

- 문자로 시작해야 한다. 숫자로 시작할 수 없다.

- 30자 이내로 지정해야 한다.

- 동일한 이름을 사용할 수 없다. 또한 예약어도 사용할 수 없다.

- 대소문자를 구분하지 않는다.

*/


--테이블 생성하기

create table tb_member (

    member_idx number(10), --회원 일련번호(employee_id와 동일한 기능)

    userid varchar2(30), --회원 아이디

    passward varchar2(50), -- 회원 패스워드

    username varchar2(50), -- 회원 이름

    mileage number(7,2)   -- 마일리지 (전체자리수7, 소수점이하2 : 12345.67)

);


--테이블의 속성(레이아웃) 확인하는 명령

desc tb_member;


--테이블의 레코드 확인

select * from tb_member;


/*

[테이블 변경하기]

1. 기존의 테이블의 구조와 데이터를 그대로 복사하기

    사용법 :

    Create table 새로만들 테이블명

    as

    select * from 기존테이블명;

    

    참조]이 경우 테이블의 구조와 데이터는 그대로 복사되지만,

    제약조건(PK, FK, Unique등)은 복사되지 않는다. 제약조건은 뒤에서 설명함.

2. 새로운 칼럼 및 제약조건 추가

    컬럼추가 사용법 :

    alter table 테이블명 add 컬럼명 자료형 not null;

    

    참조[not null]

    제약조건이 있는 컬럼을 추가하려면 테이블에 레코드가 없는 상태여야 한다.

    즉, 빈 테이블에만 not null인 컬럼을 추가할 수 있다.

    

    제약조건 추가 사용법:

    alter table 테이블명 add constraints 제약조건명 제약조건; (뒤에서 설명)


3. 기존컬럼 및 제약조건 삭제

    컬럼삭제 사용법 :

    alter table 테이블명 drop column 삭제할컬럼명;

    

    제약조건삭제 사용법 :

        alter table 테이블명 drop constraints 제약조건명; (뒤에서 설명)


4. 컬럼 속성 변경

    자료형 변경 사용법 :

    alter table 테이블명 modify 기존필드명 새로운 자료형;

    

    참조1] 기존칼럼을 새로운 자료형으로 변경하려면 테이블에 레코드가

    빈 상태여야 한다.

    참조2] 기존 자료형보다 큰 자료형으로 수정하는 것은 상관없으나

    기존보다 작은 자료형으로 수정할 경우 기존에 저장된 데이터가

    수정할 자료형의 크기보다 크다면 에러가 발생된다.

    

    컬럼명 변경 사용법 :

    alter table 테이블명 rename column 기존컬럼명 to 새로운컬럼명;

    

5. 테이블 이름 변경

    사용법 :

        rename 기존테이블명 to 새로운테이블명

*/


/*

    테이블복사하기 : 테이블의 레이아웃과 레코드까지 모두 복사

*/


create table tb_emp_copy

as

select * from employees

;


desc tb_emp_copy; --복사된 테이블 스키마 확인

select * from tb_emp_copy; --복사된 테이블 레코드 확인


/* 테이블복사하기2 : 테이블이 스키마(레이아웃)만 복사하기. 레코드는 복사되지 않음 */

create table tb_emp_null

as

select * from employees where 1=0;


desc tb_emp_null;

select * from tb_emp_null;


/* 테이블에 새로운 칼럼 추가하기 : tb_member테이블에 email컬럼 추가 */

alter table tb_member add email varchar2(40) ;

desc tb_member;


/* 테이블에 생성된 컬럼 수정하기 : email컬럼이 작아서 크기를 60으로 변경 */

alter table tb_member modify email varchar2(60);

desc tb_member;



/* 테이블에 생성된 컬럼 삭제하기 : 정책변경으로 mileage 컬럼 삭제 */

alter table tb_member drop column mileage;

desc tb_member;


/* 테이블 삭제하기(휴지통에 넣기) */

drop table tb_emp_null;

select * from tab; -- 현재 접속한 DB에 생성된 전체 테이블목록 보기


/* 휴지통 내용보기 */

show recyclebin;


/* 휴지통 비우기*/

purge recyclebin;

show recyclebin; /* 휴지통에 아무 내용이 없는 경우에는 에러메시지가 출력된다.*/


/*

실습]

1. 기존테이블(tb_emp_copy)을 데이터까지 모두 복사한다.

2. 복사한 테이블(tb_emp_clone)과 기존테이블을 삭제한다.

3. 휴지통 확인

4. 휴지통에서 기존 테이블만 완전삭제

5. 휴지통에서 복사한 테이블만 복원

*/


--1 테이블복사

create table tb_emp_clone

as

select * from tb_emp_copy

;


desc tb_emp_clone;

select * from tab;


--2 : 테이블 2개 모두 삭제

drop table tb_emp_copy;

drop table tb_emp_clone;


select * from tab;


--3 : 휴지통확인

show recyclebin;


--4 : 휴지통에서 기존 테이블만 완전삭제

purge table tb_emp_copy;


show recyclebin;


--5 : 복사한테이블(_clone)을 복원하기

flashback table tb_emp_clone to before drop;


show recyclebin;


select * from tab;

desc tb_emp_clone;


/*

 테이블명 변경하기

*/

rename tb_emp_clone to tb_emp_cp;


/*

테이블의 전체 레코드삭제하기

truncate 명령은 테이블을 삭제후 다시 레이아웃만 복원시키는 형태로 동작

그러므로 데이터의 복구가 불가능하다.

*/


truncate table tb_emp_cp;

select * from tb_emp_cp;






































'프로그래밍 > Oracle' 카테고리의 다른 글

Or11ConStraintRule  (0) 2017.11.15
Or10DML  (0) 2017.11.15
Or07Join  (0) 2017.11.15
Or06GroupBy  (0) 2017.11.15
Or05Date  (0) 2017.11.15
TAGS.

Comments