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 |