본문 바로가기

SQL

[ SQL ] 사용자정의타입 사용자정의타입 생성 CRATE TYPE 타입명 IS VARRAY(크기) OF 데이터 타입; 예제 1 (VARRAY) CREATE TYPE TEST_VARRAY IS VARRAY(3) OF NUMBER; 길이가 3이고 데이터 유형이 숫자인 배열생성 create or replace NONEDITIONABLE PROCEDURE PROC_TYPE_TEST_1 AS V_ARY TEST_VARRAY; V_NUM NUMBER; BEGIN V_ARY := TEST_VARRAY(0,0,0); V_ARY(1) := 4; V_ARY(2) := 11; V_ARY(3) := 55; V_NUM := V_ARY(1) + V_ARY(2) + V_ARY(3); DBMS_OUTPUT.PUT_LINE(V_NUM); END PROC_TYP.. 더보기
[ SQL ] SCHEDULER (스케줄러) SCHEDULER(스케줄러) : 반복된 작업을 수행할 때 사용 작업이름 : 어떤 작업을 위한 스케줄러인지 알 수 있도록 지어주는게 좋고 보통 SCH_로 시작. 사용 : 스케줄러를 사용할 것인지 하지않을 것인지 설정해 줄 수 있다. 설명 : 어떤 작업을 위한 스케줄러인지 누가봐도 알 수 있도록 적어주는 것이 좋다. 작업 유형 : 스케줄러를 생성하면서 쿼리를 바로 적어줄 수 도 있고 서버 내 프로시저를 불러올 수도 있다. 작업 실행 시간 : 작업을 언제, 몇 번, 언제부터, 언제까지 할 것인지 등을 설정해줄 수 있다. SCHEDURELER 예제 CREATE TABLE TEST ( NMB NUMBER(5) ); 1. 테스트 테이블 생성 CREATE OR REPLACE PROCEDURE PROC_SCH_TEST.. 더보기
[ SQL ] 트리거 (TRIGGER) 트리거 (TRIGGER) 특정 테이블(TABLE)에 이벤트(INSERT, UPDATE, DELETE)가 발생하면 자동으로 실행되는 PROCEDURE(업무의 최소 단위, ALL OR NOTHING) 메모리를 차지하고 관리하기 쉽지 않음 그래서 독특한, 특별한 경우에 쓰는 게 좋다. - 스키마 : 사용자(DATABASE 이름) - 이름은 보통 TRG_, TRID_ 로 시작해서 어떤 업무를 위한 트리거인지 알아볼 수 있을 정도로 작성 - 기본 객체 : 어떤 테이블에 실행할 것인가 - 타이밍(BEFORE/AFTER) - AFTER TRIGGER : INSERT 문의 데이터가 먼저 추가 되고 난 후에 트리거가 동작 - BEFORE TRIGGER : INSERT 문의 데이터가 추가되기 전에 먼저 트리거가 동작하고 .. 더보기
[ SQL ] TRUNC(TRUNCATE) VS ROUND 1. 수학적으로 쓰일 경우 SELECT ROUND(13.577, 2) FROM DUAL; 소수점 둘째자리에서 반올림 SELECT TRUNC(13.577, 2) FROM DUAL; 소수점 둘째자리에서 버림 2. 날짜 SELECT TRUNC(SYSDATE) FROM DUAL; 변화가 없는 것 처럼 보이지만 SELECT TO_CHAR(TRUNC(SYSDATE), 'YYYY-MM-DD HH24:MI:SS') FROM DUAL; SELECT TO_CHAR(TRUNC(SYSDATE, 'YEAR'), 'YYYY-MM-DD hh24:MI:SS') FROM DUAL; SELECT TO_CHAR(TRUNC(SYSDATE, 'MONTH'), 'YYYY-MM-DD hh24:MI:SS') FROM DUAL; SELECT TO_.. 더보기
[ SQL ] TO_CHAR 함수 1. 문자열 만들기 SELECT TO_CHAR(89087) FROM DUAL; 숫자를 문자로 바꾸는 함수 SELECT TO_CHAR(89087) || '원' FROM DUAL; 문자열 + 문자열 2. 날짜 표시 - TO_CHAR(데이트타입, 원하는 모양) SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') FROM DUAL; SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') FROM DUAL; SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL; SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL; 12시간 단위로 표시 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24.. 더보기
[ SQL ] PROCEDURE(프로시져), PACKAGE(패키지) PROCEDURE(프러시져)는 마치 함수와 다르지 않다. 함수와 같이 매개변수를 받는데 다른 점은 첫 번째RETURN 값이 없고, 두번째 TRANSTION이라는 개념을 가지고 있다. 마지막으로 프로시져는 업무 처리의 최소단위이다. PROCEDURE 문법 CREATE OR REPLACE PROC_PROCEDUE ( 매개변수명 IN OR OUT VARCHAR2 ) AS V_변수명VARCHAR(30); BEGIN NULL; END PROC_PROCEDURE ; 프러시져명은 보통 PROC_ 로 시작하여 누가 보더라도 PROCEDURE라는 걸 알 수 있게 하는 게 좋다. 매개변수명도 CLIENT에게 받을 값은 IN, 보내줄 값을 OUT이라고 명시해주고 IN_ 또는 O_으로 시작해 매개변수의 속성을 이름만 봐도 알.. 더보기
[ SQL ] FUNCTION(함수) 업무 수행을 위해 패키지나 프로시저를 만들 때, 많이 사용하는 쿼리를 함수로 만들어 가져다 쓸 수 있다. FUNCTION(함수) 만들기 create or replace NONEDITIONABLE FUNCTION FN_ADD ( IN_NUM1 IN NUMBER , IN_NUM2 IN NUMBER ) RETURN NUMBER AS V_RESULT NUMBER(5); BEGIN V_RESULT := IN_NUM1 + IN_NUM2; RETURN V_RESULT; END FN_ADD; 덧셈을 위한 함수를 만들었다. sqldeveloper에서 함수에 우클릭하여 새 함수를 만들 수 있고 쿼리로 만들 수도 있다. 패키지나 프로시저를 만드는 것과 같이 매개변수를 설정해주고 함수이기 때문에 RETURN + 리턴받을 데이.. 더보기
[ SQL ] WHERE EXISTS, NOT EXIST 두 테이블에서 SELECT 문을 사용하여 한 테이블에 데이터와 다른 한 테이블에 데이터를 비교하여 있거나 없는 데이터를 보고 싶을 때 두 테이블의 관계가 일대다 일경우, SELECT 문을 사용할 때 LEFT JOIN 혹은 RIGHT JOIN 으로 해결할 수 있다. 그러나 두 테이블의 관계가 다대다일 경우, JOIN 하여 SELECT 하기 쉽지 않을 것이다. WHERE EXISTS CREATE TABLE A_TABLE ( A_ID CHAR(4) PRIMARY KEY, A_NAME VARCHAR(30) NOT NULL ); INSERT INTO A_TABLE VALUES ('A001', '홍길동'); INSERT INTO A_TABLE VALUES ('A002', '전우치'); -- COMMIT; SELEC.. 더보기