* 테이블
--오라클 테이블 생성
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
반응형
'학습 > DB' 카테고리의 다른 글
Oracle에서 NULL처리 (1) | 2023.10.11 |
---|---|
제 1,2,3 정규화 (0) | 2023.09.01 |
서브쿼리 의존증 (2) | 2023.04.02 |
UNION을 사용한 쓸데없이 긴 표현 (0) | 2023.04.01 |
sort merge join (0) | 2022.10.10 |