반응형
/********************************************************************************************
-- Title : [10g] 테이블 관리 - ver.dbrang
-- Reference : dbrang.tistory.com
-- Key word : table 테이블관리 TS이동 alter table move tablespace
********************************************************************************************/

/*
-- 테이블 관련 뷰
*/
-- 테이블 기술
SELECT *
FROM DBA_TABLES WHERE owner IN ('SCOTT');

-- 객체 유형 기술
SELECT *
FROM DBA_OBJECTS WHERE owner IN ('SCOTT');

-- 테이블, 뷰, 동의어 그리고 시퀀스 기술
SELECT *
FROM DBA_CATALOG WHERE owner IN ('SCOTT');

-- 컬럼 기술
SELECT * FROM dba_tab_columns
WHERE owner = 'SCOTT';

-- 테이블 주석 보기
SELECT *
FROM DBA_TAB_COMMENTS WHERE owner IN ('SCOTT');

-- 컬럼 주석 보기
SELECT *
FROM DBA_COL_COMMENTS WHERE owner IN ('SCOTT');


/*
-- 테이블 생성
*/
-- 테이블 생성
CREATE TABLE scott.dept_1
( deptno NUMBER(2)
, dname  VARCHAR2(14)
, loc    VARCHAR2(13)
);

-- 테이블 생성 확인
DESC scott.dept_1;
 
 
/*
-- 서브쿼리를 사용한 테이블 생성
*/
-- 테이블 생성
CREATE TABLE scott.dept30
AS
SELECT empno, ename, sal*12 ANNSAL, hiredate
FROM scott.emp
WHERE deptno = 30;

-- 테이블 껍질 생성
CREATE TABLE scott.dept31
AS
SELECT empno, ename, sal*12 ANNSAL, hiredate
FROM scott.emp
WHERE 1 = 2;

SELECT * FROM scott.dept31;


/*
-- 기존 테이블에 열 수정
*/
-- 컬럼 추가
ALTER TABLE scott.dept30
ADD ( job VARCHAR2(9));

-- 컬럼 수정
ALTER TABLE scott.dept30
MODIFY (ename VARCHAR2(15));

-- 확인
SELECT * FROM dba_tables
WHERE owner = 'SCOTT' AND table_name = 'DEPT30';

SELECT * FROM dba_tab_columns
WHERE owner = 'SCOTT' AND table_name = 'DEPT30';

DESC scott.dept30;

-- 기존 테이블의 열 삭제
ALTER TABLE dept30
DROP COLUMN job;


/*
-- ROWID, ROWNUM 사용
*/
-- ROWID, ROWNUM 쿼리
SELECT rowid, rownum, deptno, dname, loc
FROM scott.dept;

-- TOP(N) 처리
SELECT *
FROM scott.dept
WHERE rownum < 3;


/*
-- SET UNUSED 옵션을 사용한 삭제
*/
-- unused 설정
ALTER TABLE scott.dept30
SET UNUSED COLUMN ename;

DESC scott.dept30;

-- unused 컬럼 삭제
ALTER TABLE scott.dept30
DROP UNUSED COLUMNS;


/*
-- 테이블 삭제
*/
DROP TABLE scott.dept30;


/*
-- 객체 이름 변경
*/
-- 테이블 생성
CREATE TABLE scott.dept30
AS
SELECT empno, ename, sal*12 ANNSAL, hiredate
FROM scott.emp
WHERE deptno = 30;

-- 테이블명 변경
ALTER TABLE scott.dept30
RENAME  TO dept34;

-- 테이블명 변경(소유자로 로긴해서 테이블만 기입)
SQL_scott> RENAME dept30 TO dept34;


/*
-- 테이블 모든 행 삭제
*/
TRUNCATE TABLE scott.dept34;


/*
-- 테이블에 주석문 관리
*/
-- 테이블 생성
CREATE TABLE scott.tbl1
(a NUMBER, b NUMBER, c NUMBER);

-- 테이블 주석 추가
comment ON TABLE scott.tbl1
IS '테이블 주석 추가';

-- 테이블 주석 확인
SELECT * FROM all_tab_comments
WHERE owner = 'SCOTT';

-- 컬럼 주석 추가
comment ON COLUMN scott.tbl1.a
IS '컬럼 주석 추가';

-- 컬럼 주석 확인
SELECT * FROM all_col_comments
WHERE owner = 'SCOTT';

-- 주석 지우기
COMMENT ON TABLE scott.tbl1
IS '';

-- 테이블 주석 확인
SELECT * FROM all_tab_comments
WHERE owner = 'SCOTT';


/*
-- 사용자 테이블스페이스 관리
*/
-- 테이블스페이스 확인
SELECT a.tablespace_name, a.status, a.contents, b.default_ts "DEFAULT"
     , a.logging, a.allocation_type, a.plugged_in
     , a.extent_management -- 9i 이상부터 사용
     , a.segment_space_management -- 9i 이상부터 사용
     , a.bigfile -- 10g 이상부터 사용
     , to_char(a.initial_extent/1024, '999,999.00') "initial_extent(KB)"
     , to_char(a.next_extent/1024, '999,999.00') "next_extent(KB)"
     , to_char(a.min_extents/1024, '999,999.00') "min_extents(KB)"
     , to_char(a.max_extents/1024/1024, '999,999.00') "max_extents(MB)"
FROM dba_tablespaces a
LEFT OUTER JOIN (SELECT property_value AS ts_nm
                      , 'DEFAULT' AS default_ts
                 FROM database_properties
                 WHERE property_name
                 IN ('DEFAULT_TEMP_TABLESPACE','DEFAULT_PERMANENT_TABLESPACE')
                ) b
ON a.tablespace_name = b.ts_nm;

-- 사용자 테이블스페이스 관리
SELECT * FROM dba_ts_quotas;

SELECT u.username, u.default_tablespace, q.max_bytes, q.max_blocks
FROM dba_users u, dba_ts_quotas q
WHERE u.username = q.username
AND u.default_tablespace = q.tablespace_name;

SELECT *
FROM dba_sys_privs
WHERE grantee = 'SCOTT'

SELECT username, account_status, default_tablespace, temporary_tablespace, PROFILE
FROM dba_users WHERE username IN ('SCOTT');

-- 다른 테이블스페이스에 테이블 생성
CREATE TABLE scott.tbl2
(a NUMBER, b NUMBER)
TABLESPACE TS_DATA1;

-- 테이블스페이스 확인
SELECT *
FROM DBA_TABLES
WHERE owner = 'SCOTT';


/*
-- 해당 테이블의 테이블스페이스 이동
*/
-- TS 이동
ALTER TABLE scott.emp_tmp
MOVE TABLESPACE ts_new0;
 
-- TS 이동 확인
select * from dba_tables
where owner = 'SCOTT' and table_name = 'EMP_TMP';

반응형

+ Recent posts