Daily coding
Oracle day 6 - Table 테이블 & Tablespace 테이블스페이스 본문
Table 테이블
Tablespace
: 테이블과 인덱스를 저장해놓은 논리적인 공간, 실제 물리적으로 저장되는 곳은
tablespace를 생성할 때 특정 주소에 저장해둔 DBF파일이다.
1. 생성하기
-- 반드시 시스템 계정으로만 생성이 가능하다
1) 에디터로 만들기 : 시스템 계정의 DBA에서 Tablespace 우클릭 - 새로만들기
2) SQL 작성으로 만들기
CREATE TABLESPACE 테이블 이름
DATAFILE 'C:\쿼리문이들어갈폴더의주소 \ DB파일명.DBF'
SIZE 10M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED -- 추가되는 용량
LOGGING -- 로깅 : 기록여부 정함 (화면출력/ 파일저장로깅)
EXTENT MANAGEMENT LOCAL AUTOALLOCATE -- LOCAL
BLOCKSIZE 8K -- 블록의 크기, 블록 크기 크게 잡을수록 대용량 데이터 받을 수 있음
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
2. 테이블스페이스 이름 변경하기
ALTER TABLESPACE 테이블명
RENAME 바꿀이름;
3. 테이블스페이스에 들어갈 파일 용량 수정 쿼리문
ALTER DATABASE
DATAFILE 'D:\oracle\tabletest\TEST_TBS1.DBF' RESIZE 20M;
4. TABLESPACE 삭제하기
DROP TABLESPACE "삭제할 테이블명"
INCLUDING CONTENTS AND DATAFILES -- 데이터 + DB파일 삭제
CASCADE CONSTRAINTS; -- 무결성 (keys) 삭제
Table
-- 데이터에서 가장기본적인 데이터 저장 단위
-- 세로열 (column) 과 가로행(row)으로 표현
1. 생성
- Create
CREATE TABLE TB_TEST01(
COL_01 VARCHAR2(10),
COL_02 VARCHAR2(10),
COL_03 VARCHAR2(10),
COL_04 VARCHAR2(10)
);
-- TABLESPACE 를 지정하지 않으면 defalut 값은 USERS임
< 특정 테이블 스페이스에 테이블 생성해서 저장하기 >
CREATE TABLE TB_TEST02(
COL_01 VARCHAR2(10),
COL_02 VARCHAR2(10),
COL_03 VARCHAR2(10),
COL_04 VARCHAR2(10)
)
TABLESPACE TABLESPACE2 -- 현재 만드는 테이블의 공간을 TABLESPACE2 로 정함
;
2. 삭제
DROP TABLE tb_test03;
3. 테이블 복사
: 데이터 포함해서 모두 복사하기 (원본데이터에 영향없음)
다른 테이블의 데이터를 복사 + 그룹함수 적용하여 새로운 테이블을 만들 수 있음 (복제 데이터라 원본에 손상 X)
CREATE TABLE TB_TEST03
AS --> 복사한다는 의미, 아래는 새로운 테이블에 넣을 데이터를 조회하는 쿼리문
SELECT *
FROM jobs;
-- 테스트
SELECT * FROM tb_test03;
-- 특정 컬럼 및 데이터만 가져와서 복제할 수 있다
CREATE TABLE TB_TEST03
AS
SELECT JOB_ID as 업무번호, JOB_TITLE as 업무명 -- alias를 통해 컬럼명도 지정할 수 있다.
FROM jobs;
-- 그룹함수 적용한 테이블 복제하기
CREATE TABLE TB_GROUP_DEPT
AS
SELECT department_id AS "부서번호", SUM(salary) AS "합계", AVG(salary) AS "평균"
FROM employees
GROUP BY department_id;
-- TABLE COPY : 데이터가 미포함 된 테이블 형식만 복사하기
CREATE TABLE TB_TEST04
AS
SELECT
*
FROM departments
WHERE 1=2; -- WHERE 절에 성립할 수 없는 조건을 넣으면 데이터가 미포함된 틀만 복제된다
-- 위의 코드를 실행하면 테이블 형식 및 칼럼의 형식만 가져옴
**<참고> 테이블과 데이터 처리 명령어
-- TABLE : CREATE (테이블 생성), ALTER (테이블 수정/변경), DROP (테이블 삭제)
-- DATA : INSERT (데이터 삽입), UPDATE (데이터 수정), DELETE (데이터 삭제), SELECT (데이터조회)
4. TABLE 수정1
1) 테이블명 수정
-- ALTER : 테이블에 변경사항이 있을 때 사용하는 예약어
-- RENAME TO : 이름을 변경할 때 사용하는 예약어
ALTER TABLE TB_TEST04
RENAME TO TB_TEST99; -- 테이블명 수정
2) 단일 컬럼 추가하기
-- ADD
-- 데이터가 적을 때는 다시 만들면 되지만, 이미 삽입된 데이터가 너무 많으면 칼럼을 추가한다
ALTER TABLE TB_TEST99
ADD
LOCATION_NAME VARCHAR2(30); -- 추가할 컬럼명(LOCATION_NAME) 및 컬럼 데이터형(VARCHAR2(30)) 설정
3) 다중 컬럼 추가
-- ADD
-- 괄호 안에 추가할 컬럼 및 데이터형을 써준다
ALTER TABLE TB_TEST99
ADD
( COL_01 VARCHAR2(30) , COL_02 NUMBER(5,2) );
-- 괄호로 묶고 안에 추가할 컬럼명과 테이터형+크기를 작성하고 , (반점)을 통해 여러개를 추가할 수 있음)
4) 단일 컬럼 수정
-- MODIFY
ALTER TABLE TB_TEST99
MODIFY
COL_01 VARCHAR2(20); -- 용량 수정도 가능함
5) 다중 컬럼 수정
-- MODIFY
ALTER TABLE TB_TEST99
MODIFY
(COL_01 VARCHAR2(20), COL_02 NUMBER(4) );
6) 단일 컬럼 삭제
-- DROP
ALTER TABLE TB_TEST99
DROP COLUMN LOCATION_NAME; -- 삭제할 컬럼명 (LOCATION_NAME) 입력
7) 다중 컬럼 삭제
ALTER TABLE TB_TEST99
DROP
(COL_01, COL_02);
--8) 컬럼명 수정
-- RENAME
ALTER TABLE TB_TEST99
RENAME COLUMN DEPARTMENT_ID TO "부서번호";
5. TABLE 삭제 :
-- DROP
DROP TABLE TB_TEST01;
CASCADE CONSTRAINTS : 무결성 데이터 모두 다 지워짐
-- 삭제한 테이블 휴지통에서 복구하기
-- FLASHBACK
FLASHBACK TABLE TB_TEST02
TO BEFORE DROP;
-- 휴지통 비우기
-- PURGE : 테이블 복구가 안되기 때문에 신중하게 써야함
PURGE RECYCLEBIN;
'DB > Oracle' 카테고리의 다른 글
Oracle day 6 - DDL 연습문제 (hr) (0) | 2019.12.18 |
---|---|
Oracle day 6 - 무결성과 무결성 제약조건 ( Key ) (0) | 2019.12.18 |
Oracle day 5 - 특수 쿼리 ( Query ) 및 서브쿼리 연습문제 (hr) (0) | 2019.12.17 |
Oracle day 5 - 특수 쿼리 ( Query ) 및 서브쿼리 연습문제 (scott) (0) | 2019.12.17 |
Oracle day 5 - 특수 쿼리 ( Query ) (0) | 2019.12.17 |