Study📚/Oracle 13

Oracle - 커서(Cursor), 트리거(Trigger), 패키지(Package)

- 커서(Cursor)란? 하나의 레코드가 아닌 다중의 레코드로 구성된 작업 영역에서 SQL 문을 실행하고 그 과정에서 발생한 정보를 저장하기 위해 커서를 사용한다. 커서는 암시적 커서와 명시적 커서로 구분되는데 암시적 커서는 모든 SQL 문에서 존재한다. 하지만 암시적 커서는 오직 하나의 행만 출력하게 되므로 다중 행에 대한 처리가 필요한 경우엔 명시적으로 커서를 정의(=선언)해 주어야 한다. ▶ 형식 및 구조 CREATE [OR REPLACE] (TRIGGER or PROCEDURE or ...) DECLARE CURSOR 커서명 IS SELECT 컬럼명 FROM 테이블명; BEGIN OPEN 커서명; /* 수헹해야 힐 기능 구현 */ CLOSE 커서명; END; -- 커서는 꼭 OPEN 후에 CLO..

Study📚/Oracle 2023.11.19

Oracle - 프로시저(Procedure), 함수(Function)

- 프로시저란? PL/SQL에서 가장 대표적인 구조인 스토어드 프로시저는 개발자가 자주 작성해야 하는 업무의 흐름을 미리 작성하여 데이터베이스 내에 저장해 두었다가 필요할 때 마다 호출하여 실행할 수 있도록 처리해주는 구문이다. FUNCTION 과 비교했을 때 RETURN 반환자료형 부분이 존재하지 않으며, 『RETURN』문 자체도 존재하지 않고, 프로시저 실행 시 넘겨주게 되는 매개변수의 종류는 IN(입력), OUT(출력), INOUT(입출력) 으로 구분된다. ▶ 형식 및 구조 CREATE [OR REPLACE] PROCEDURE 프로시저명 [(매개변수 IN 데이터타입 , 매개변수 OUT 데이터타입 , 매개변수 INOUT 데이터타입 )] IS [-- 주요 변수 선언] BEGIN -- 실행 구문; .....

Study📚/Oracle 2023.11.19

Oracle - PL/SQL, IF문, CASE문, 반복문

- PL/SQL 이란 PL/SQL(Procedural Language extention to SQL) 은 프로그래밍 언어의 특성을 가지는 SQL의 확장이며 데이터 조작과 질의 문장은 PL/SQL의 절차적 코드 안에 포함된다. 또한, PL/SQL 을 사용하면 SQL 로 할 수 없는 절차적 작업이 가능하다. 여기에서 절차적 이라는 단어가 가지는 의미는 어떤 것이 어떤 과정을 거쳐 어떻게 완료되는지 그 방법을 정확하게 코드에 기술한다는 것을 의미한다. PL/SQL 은 절차적으로 표혀하기 위해 변수를 선언할 수 있는 기능, 참과 거짓을 구별할 수 있는 기능, 실행 흐름을 컨트롤할 수 있는 기능 등을 제공한다. PL/SQL 은 블럭 구조로 되어 있으며, 블럭은 선언 부분, 실행 부분, 예외 처리 부분의 세 부분으..

Study📚/Oracle 2023.11.19

Oracle - 문자열 함수

- CONCAT() 마치... || 문자열과 문자열을 결합시켜주는 함수이지만, 내부적으로 숫자나 날짜를 문자로 변환해주는 과정이 포함되어 있다 SELECT CONCAT(SYSDATE,'이동욱보고싶다') FROM DUAL; --==>> 20231105이동욱보고싶다 - SUBSTR(), SUBSTRB() 문자열을 추출하는 기능을 가진 함수이다. 마치 자바의 SUBSTR() 은 갯수 기반, SUBSTR() 바이트 기반으로 연산되기 때문에 후자를 이용하는 상황에는 신중하게 사용해야 한다. 참고로 저는 바이트 기반으로 해낼 자신이 없어요 SELECT SUBSTR(NAME,1,3) FROM MY_MAN; --==>> /* 이동욱 남궁민 : : */ -- SUBSTR(추출의 대상, 추출을 시작하는 인덱스, 추출할 문..

Study📚/Oracle 2023.11.05

Oracle - INSERT, UPDATE, DELETE, ORDER BY 절

- INSERT 테이블에 레코드(데이터)를 삽입하는 명령어 INSERT INTO 테이블명(컬럼명1, 컬럼명2, 컬럼명3) VALUES(데이터1, 데이터2, 데이터3); -- 컬럼명은 생략해도 되지만 데이터를 삽입하는 과정에서 실수할 수 있으니 컬럼을 한 번 더 확인하자는 의도로 생략하지 않는 것을 권장 - UPDATE 테이블에 (WHERE 조건절이 있다면) 해당하는 레코드들의 값을 변경하는 명령어 UPDATE 테이블명 SET 컬럼명 = 변경할 데이터 WHERE 조건절 - DELETE 테이블에 (WHERE 조건절이 있다면) 해당하는 레코드를 삭제하는 명령어 DELETE FROM 테이블명 WHERE 조건절 INSERT, UPDATE, DELETE 문은 자동 COMMIT 이 되지 않기 때문에 삽입, 수정, 삭..

Study📚/Oracle 2023.11.05

Oracle - 허얼마나 남았나...

현재 날짜 및 시간으로부터 특정일(2024-03-19 18:00:00) 까지 남은 기간과 시간을 조회할 수 있도록 쿼리문을 구성한다. --방법1 SELECT SYSDATE "현재 날짜" , TO_DATE('2024-03-19 18:00:00', 'YYYY-MM-DD HH24:MI:SS') "특정 날짜" , TRUNC(TO_DATE('2024-03-19 18:00:00', 'YYYY-MM-DD HH24:MI:SS')-SYSDATE) "일" , TRUNC(MOD((TO_DATE('2024-03-19 18:00:00', 'YYYY-MM-DD HH24:MI:SS')-SYSDATE),1)*24) "시간" , TRUNC(MOD((TO_DATE('2024-03-19 18:00:00', 'YYYY-MM-DD HH24:..

Study📚/Oracle 2023.10.29

Oracle - 날짜 다루기

- 현재 날짜 및 시간 현재(시스템) 날짜. 데이터 형식은 날짜(DATE)형 SYSDATE, CURRENT_DATE, LOCALTIMESTAMP SELECT SYSDATE, CURRENT_DATE, LOCALTIMESTAMP FROM DUAL; --==>> 2023-10-19 10:43:02 / 2023-10-19 10:43:02 / 23/10/19 10:43:02.000000000 - 날짜 크기비교 오라클에서는 날짜 데이터의 크기 비교가 가능하다. 날짜 데이터에 대한 크기 비교 시 과거보다 미래를 더 큰 값으로 간주한다. ex) 오늘 true 오늘>내일 -> false - BETWEEN ⓐ AND ⓑ ⓐ 이상 ⓑ 이하, 숫자 뿐만 아니라 날짜도 적용 가능 SELECT NAME"사원명", JOB"직종",..

Study📚/Oracle 2023.10.29

Oracle - NVL(), NVL2(), COALESCE(), 문자열 다루기

- NVL(a, b) 첫 번째 파라미터 값(a)이 NULL 이면, 두 번째 파라미터 값(b)을 반환한다. 첫 번째 파라미터 값(a)이 NULL 이 아니면, 그 값을 그대로(a) 반환한다. SELECT NULL "COL1", NVL(NULL, 10) "COL2", NVL(5, 10) "COL3" FROM DUAL; --==>> (null) 10 5 SELECT NVL(출력값, null 일때 출력값) FROM DUAL; - NVL2(a, b, c) 첫 번째 파라미터 값(a)이 NULL 이 아닌 경우, 두 번째 파라미터 값(b)을 반환하고 첫 번째 파라미터 값(a)이 NULL 인 경우, 세 번째 파라미터 값(c)을 반환한다. SELECT NVL2(NULL, 'NOT NULL', 'IS NULL') FROM D..

Study📚/Oracle 2023.10.24

Oracle - SELECT 문 관찰

- SELECT 문의 처리(PARSING 순서) SELECT 컬럼명 -- ⑤ ┐ FROM 테이블명 -- ① ┘ WHERE 조건절 -- ② + GROUP BY 절 -- ③ + HAVING 조건절 -- ④ + ORDER BY 절 -- ⑥ + SELCT 컬럼명 FROM 테이블명 -> 필수 그 외 -> 옵션(있어도 그만 없어도 그만) BUT 저들의 순서가 바뀌면 안 됨 - WHERE 조건절에 해당하는 데이터만 조회 -- EMP 테이블에서 부서번호가 20번인 직원들의 데이터들 중 -- 사원번호, 사원명, 직종, 급여, 부서번호 조회 SELECT NO, NAME, POSITION, SAL, DEPTNO FROM EMP WHERE DEPTNO = 20; -- EMP 테이블에서 부서번호가 20번과 30번 직원들의 데이..

Study📚/Oracle 2023.10.22

Oracle - 테이블 생성하고 데이터 삽입하기

- 테이블 생성하기 : CREATE CREATE TABLE TBL_TEST ( NONUMBER(3) , NAMEVATCHER2(10) ); -- CREATE 테이블 테이블명 -- ( 컬럼명데이터요소(크기) -- , 컬럼명데이터요소(크기) -- : -- ); -- 현재 접속한 사용자 계정이 갖고있는(소유하고 있는) 테이블 조회 SELECT * FROM TAB; --==>> TBL_TEST TABLE SELECT * FROM USER_TABLES; --==>> TBL_TEST USERS VALID10 125565536104857612147483645 -- 각각의 테이블들이 어떤 테이블 스페이스에 저장되어 있는지 조회 SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TABLES..

Study📚/Oracle 2023.10.22