본문 바로가기

공부 정리/DB

오라클 조작 명령어 모음(테이블/코멘트/시퀀스/배치)

728x90
반응형

* 테이블

--오라클 테이블 생성
CREATE TABLE emp 
( 
    empno       NUMBER(4)	NOT NULL,
    ename       VARCHAR2(10),
    job         VARCHAR2(9),
    mgr         NUMBER(4),
    hiredate    DATE,
    sal         NUMBER(7,2),
    comm        NUMBER(7,2),
    deptno      NUMBER(2)
);

--PK 생성
ALTER TABLE emp ADD CONSTRAINT emp_pk PRIMARY KEY (empno);

--인덱스 생성
CREATE INDEX emp_idx01 ON emp(job, deptno);

--칼럼 추가
ALTER TABLE TB_INVENTORY_HIS_D ADD email VARCHAR(25) DEFAULT 'test@test.com' NOT NULL;

--칼럼 변경
--데이터 타입 변경 : NUMBER(4) -> VARCHAR2(4)
ALTER TABLE emp MODIFY editid VARCHAR2(4);

--데이터 길이(크기) 변경 : VARCHAR2(4) -> VARCHAR2(5)
ALTER TABLE emp MODIFY editid VARCHAR2(5);

--기본 값 지정
ALTER TABLE emp MODIFY editid VARCHAR2(5) DEFAULT '1000';

--컬럼 삭제
ALTER TABLE emp DROP COLUMN email;

 

 

* 코멘트

--테이블 설명 (COMMENT)
COMMENT ON TABLE emp IS '사원정보';

--컬럼 설명 (COMMENT)
COMMENT ON COLUMN emp.empno IS '사원번호';

 

* 테이블 복사

--테이블 구조 및 데이터 복사하기
CREATE TABLE emp AS SELECT * FROM dept

--테이블 구조만 복사하기
CREATE TABLE emp AS SELECT * FROM dept WHERE 1=2

--테이블이 존재할경우, 데이터만 복사하기(구조가 같은경우)
INSERT INTO emp SELECT * FROM dept

--테이블이 존재할경우, 데이터만 복사하기(구조가 다를경우)
INSERT INTO emp(COL1, COL2) SELECT COL1, COL2 FROM dept

 

*시퀀스

--시퀀스 조회
SELECT *
  FROM ALL_SEQENCES
 WHERE SEQUENCE_NAME = 'SEQ_NO';
 
 
 --시퀀스 생성
 CREATE SEQUENCE SEQ_NO
       INCREMENT BY 1
       START WITH 1
       MINVALUE 1
       MAXVALUE 9999
       NOCYCLE
       NOCACHE
       NOORDER;
       
       
--감소 시퀀스 생성
CREATE SEQUENCE SEQ_NO
       INCREMENT BY -1
       START WITH 1000
       MINVALUE 1
       MAXVALUE 1000
       NOCYCLE
       NOCACHE
       NOORDER;

--시퀀스 증가
SELECT SEQ_NO.NEXTVAL
  FROM DUAL

 

 

*오라클 배치

--전체 조회
SELECT * FROM USER_JOBS;


--배치 생성
DECLARE
    JOBNO NUMBER;
BEGIN
DBMS_JOB.SUBMIT(JOBNO,
	what => 'HRCS.ORDER;',
	next_date => TO_DATE('2023/10/14 08:00:00','YYYY/MM/DD HH24:MI:SS'),
	interval => 'TRUNC(SYSDATE+1)+8/24');
END;
COMMIT;


--배치 수정
DECLARE
BEGIN
DBMS_JOB.CHANGE(201,
	what => 'HRCS.ORDER;',
	next_date => TO_DATE('2023/10/13 14:12','YYYY/MM/DD HH24:MI:SS'),
	interval => 'TRUNC(SYSDATE+1)+8/24');
END;
COMMIT;


--배치 삭제
EXECUTE DBMS_JOB.REMOVE(201);


--JOB 실행
EXECUTE DBMS_JOB.RUN(201);

 

 

* 프로시저, 함수 내용 검색

SELECT
	T1.OBJECT_ID
	, T1.OBJECT_NAME
	, T1.OBJECT_TYPE
	, T2.TEXT
FROM
	USER_OBJECTS T1
	INNER JOIN USER_SOURCE T2 ON T1.OBJECT_NAME = T2.NAME
WHERE
	T1.OBJECT_TYPE IN ('PROCEDURE', 'FUNCTION')
	AND T2.TEXT LIKE '%XX1%'  /* 찾으려는 프로시저 또는 함수 내 문구 입력 */;

 

* DATE 만들기

SELECT TO_DATE('2021-12-12', 'YYYY-MM-DD')
     , TO_DATE('2021-12-12 17:10:00', 'YYYY-MM-DD HH24:MI:SS')
  FROM dual
728x90
반응형

'공부 정리 > DB' 카테고리의 다른 글

Oracle에서 NULL처리  (1) 2023.10.11
제 1,2,3 정규화  (0) 2023.09.01
서브쿼리 의존증  (0) 2023.04.02
UNION을 사용한 쓸데없이 긴 표현  (0) 2023.04.01
sort merge join  (0) 2022.10.10