반응형

-- 테이블 명 변경
ALTER TABLE schema.table_name RENAME TO new_table_name;

-- 테이블 로그 관련
ALTER TABLE schema.table_name LOGGING;
ALTER TABLE schema.table_name NOLOGGING;

-- 컬럼 추가
ALTER TABLE schema.table_name ADD (column_properties);

-- 컬럼 속성 변경
ALTER TABLE schema.table_name MODIFY (column_properties);

-- 컬럼 삭제
ALTER TABLE schema.table_name DROP COLUMN column_name;

-- 컬럼명 변경
ALTER TABLE schema.table_name RENAME COLUMN old_name TO new_name;

-- 제약 조건명 변경
ALTER TABLE schema.table_name RENAME CONSTRAINT old_name TO new_name;

-- 제약 조건 삭제
ALTER TABLE schema.table_name DROP CONSTRAINT constraint_name;

-- 테이블의 테이블스페이스 변경
ALTER TABLE schema.table_name MOVE TABLESPACE tablespace_name;

-- 테이블의 통계정보 업데이트
ANALYZE TABLE table_name COMPUTE STATISTICS;
ANALYZE TABLE table_name ESTIMATE STATISTICS SAMPLE 30 PERCENT;
ANALYZE TABLE table_name ESTIMATE STATISTICS SAMPLE 1000 ROWS;

-- 테이블의 통계 락 해제
EXECUTE DBMS_STATS.UNLOCK_SCHEMA_STATS('schema_name');

-- 스키마 소유의 오브젝트에 대한 통계 생성
EXECUTE DBMS_UTILITY.ANALYZE_SCHEMA('schema_name', 'COMPUTE');

-- PK 추가
CREATE UNIQUE INDEX schema.index_name ON schema.table_name (columns);
ALTER TABLE schema.table_name ADD CONSTRAINT constraint_name PRIMARY KEY (columns);

-- 인덱스명 변경
ALTER INDEX schema.old_index_name RENAME TO new_index_name;

-- 인덱스의 테이블스페이스 변경
ALTER INDEX schema.index_name REBUILD TABLESPACE tablespace_name;

-- 테이블스페이스의 데이터 파일 이동 및 이름변경
ALTER TABLESPACE tablespace_name OFFLINE NORMAL;
OS COPY: data file
ALTER TABLESPACE tablepsace_name RENAME DATAFILE 'diskb:data_file.dat' TO 'diska:data_file.dat';
ALTER TABLESPACE tablespace_name ONLINE;

-- SYNONYM 생성
CREATE SYNONYM schema.synonym_name FOR schema.object_name;
CREATE SYNONYM schema.synonym_name FOR schema.object_name@db_link_name;

-- COMMENT 생성
COMMENT ON TABLE schema.table_name IS 'comment_text';
COMMENT ON COLUMN schema.table_name.column_name IS 'comment_text';

-- DB LINK 생성
CREATE /* PUBLIC */ DATABASE LINK db_link_name
CONNECT TO user_id IDENTIFIED BY password USING 'tns_name';

-- SUBQUERY FACTORING

WITH
dept_costs

AS (
SELECT department_name, SUM(salary) dept_total
  FROM employees e, departments d
 WHERE e.department_id = d.department_id
 GROUP BY department_name

),
avg_cost

AS (
SELECT SUM(dept_total)/COUNT(*) avg
  FROM dept_costs

)
SELECT *

  FROM dept_costs
 WHERE dept_total > (SELECT avg FROM avg_cost)
 ORDER BY department_name;

반응형

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

[ORACLE] decode  (0) 2011.07.22
[ORACLE] sign  (0) 2011.07.22
[ORACLE] translate(특정문자 제거)  (0) 2011.07.22
[Oracle] commit 후 데이터 복구  (2) 2011.03.29
ORACLE 소수점이하 삭제.  (0) 2010.07.07

+ Recent posts