DB - Oracle

    커서와 패키지

    커서(cursor) SELECT문 또는 데이터 조작어 같은 SQL문을 실행했을 때 해당 SQL문을 처리하는 정보를 저장한 메모리 공간 결과값이 여러 행으로 나왔을 때 각 행별로 특정 작업을 수행하도록 기능구현이 가능 SELECT INTO 방식 조회되는 데이터가 단 하나의 행일 때 사용 가능 SELECT절에 명시한 각 열의 결과 값을 변수에 대입해준다 -- 기본형식 SELECT 열1, 열2, ..., 열N INTO 변수1, 변수2, ..., 변수N FROM ... 명시적 커서 사용자가 직접 커서를 선언하고 사용하는 커서 DECLARE CURSOR 커서이름 IS SQL문;-- 커서 선언(Declaration) BEGIN OPEN 커서이름;-- 커서 열기 FETCH 커서이름 INTO 변수-- 커서로부터 읽어온..

    SQL - 함수

    함수생성 CREATE FUNCTION FUNC_AFTERTAX( SAL IN NUMBER ) RETURN NUMBER IS TEX NUMBER := 0.05; BEGIN RETURN (ROUND(SAL - (SAL*TEX)) ); END FUNC_AFTERTAX; / DECLARE AFTERTAX NUMBER; BEGIN AFTERTAX := FUNC_AFTERTAX(3000); DBMS_OUTPUT.PUT_LINE('세후연봉 = '|| AFTERTAX); END; /

    SQL - 예외처리

    예외 -- 예외 P. 474 CREATE OR REPLACE PROCEDURE TEST111 ( V_STU_NO IN STUDENT.STU_NO%TYPE ) IS V_STU_NAME STUDENT.STU_NAME%TYPE; BEGIN SELECT STU_NAME INTO V_STU_NAME FROM STUDENT WHERE STU_NO = V_STU_NO; DBMS_OUTPUT.PUT_LINE (V_STU_NAME); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ('해당 데이터가 존재하지 않는다'); END TEST111; / SELECT * FROM STUDENT; EXECUTE TEST111(20153075); DECLARE V_WRONG DATE..

    PL/SQL, 저장 프로시저(SP)

    PL/SQL SQL만으로 구현이 어렵거나 구현 불가능한 작업을 수행하기 위해 오라클에서 제공하는 프로그래밍 언어 일반 프로그래밍 요소 다 가지고 있고, DB 업무처리하기 위한 최적화된 언어 기본단위 : 블록(BLOCK) 기본형식 DECLARE (선언부) : 변수, 상수, 커서 선언 BEGIN (실행부) : SQL에 선택, 반복처리 등 END DECLARE [실행에 필요한 여러 요소 선언]; BEGIN [작업을 위해 실제 실행하는 명령어]; EXCEPTION [PL/SQL 수행 도중 발생하는 오류 처리]; END; 화면 출력하기 SERVEROUTPUT 환경변수 값을 ON 으로 변경해야한다 SET SERVEROUTPUT ON; BEGIN DBMS_OUTPUT.PUT_LINE('HELLO'); END; / 반..

    데이터베이스의 주요 객체 - Object

    데이터베이스의 주요 객체 (Object) Table, Index, View, Sequence Table 2차원 테이블로 데이터를 저장하는 객체 index 빠른 검색을 위해 사용하는 객체 테이블 열에 사용하는 객체 인덱스도 오라클 데이터베이스 객체이므로 소유 사용자와 사용 권한이 존재한다 VIEW 가상테이블 하나 이상의 테이블을 조회하는 select 문을 저장한 객체 수정이 필요하거나 다른 개발자가 코드를 처음부터 파악해야 하는 경우 sql문의 복잡도를 완화 전체 테이블이 아닌 일부만 접근할 수 있도록 제한을 주기 위해 사용한다 Sequence 자동 생성가능 오라클 데이터베이스에서 특정 규칙에 맞는 연속 숫자를 생성하는 객체 -- 시퀀스 SEQ1 생성 1부터 2씩 증가 CREATE SEQUENCE SEQ1..

    SQL - 집합 연산자, CRUD

    집합연산자 union : 결과 합 ( 중복 제거됨) union all : 결과 합 (중복 포함됨) intersect : 결과 값의 공통되는 값 (교집합) minus : 차집합 -- 기존의 student 테이블을 복사함 create table a_student as select * from student where stu_dept in ('기계', '전기전자'); -- create table b_student as select * from student where stu_dept in ('전기전자', '컴퓨터정보'); -- 테이블 합치기 -- 중복제거되면서 합쳐짐 (합집합) SELECT * FROM A_STUDENT UNION SELECT * FROM B_STUDENT; -- 중복 포함되어 합쳐짐 (합집합..

    SQL - 트랜잭션 (TRANSACTION)

    트랜잭션 (TRANSACTION) 데이터베이스의 상태를 변경시키기 위해 수행하는 작업단위 UPDATE, INSERT, DELETE 같은 쿼리문 무결성을 위한 작업 DDL 문을 사용하면 자동으로 COMMIT 된다 DDL Data Definition Language : 데이터 정의어. CREATE, ALTER, DROP 데이터조작어(DML)와 달리 명령어를 수행하자마자 데이터베이스에 수행한 내용이 바로 반영된다 DML SELECT, INSERT, UPDATE, DELETE DCL ROLLBACK, COMMIT, 등.

    SQL - SUBQUERY (부질의)

    SUBQUERY SELECT 문 내에 또 다른 SELECT 문을 포함할 수 있다. ORDER BY 절을 사용할 수 없다 -- '옥성우' 학생보다 키가 큰 학생들의 학번, 이름, 키 검색 SELECT STU_HEIGHT FROM STUDENT WHERE STU_NAME = '옥성우'; SELECT STU_NO, STU_NAME, STU_HEIGHT FROM STUDENT WHERE STU_HEIGHT > (SELECT STU_HEIGHT FROM STUDENT WHERE STU_NAME = '옥성우'); -- Q3 모든 부서 정보와 사원 정보를 부서번호, 사원 이름순으로 정렬하여 출력 SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.JOB, E.SAL FROM EMP E ..

    SQL - JOIN

    조인 ( join ) 상호 관련성을 갖는 두 개 이상의 테이블로부터 새로운 테이블을 생성하는데 사용된다 이퀴조인 ( EQUI ) = 등가조인 where 절에서 '=' 연산자 사용 테이블 연결 후 출력 행을 각 테이블의 특정 열에 일치한 데이터를 기준으로 선정하는 방식 내부조인 ( inner join ), 단순조인 (simple join)으로 부르기도 한다 natural join : 자연 조인 등가 조인을 대신해 사용할수 있다 열의 이름이 같을 때 사용 가능 ( 2쌍 이상이 존재한다면 쓸 수 없다) -- STUDENT, ENROL 합쳐서 다 출력 SELECT STUDENT.STU_NO, STU_NAME, STU_DEPT FROM STUDENT, ENROL WHERE STUDENT.STU_NO = ENROL..

    SQL - 문자형 함수, 변환 함수

    문자형 함수 CONCAT(char1, char2), || : 문자열 연결 INITCAP(char) : char의 첫 문자를 대문자로 변환 LOWER(char)와 UPPER(char) LPAD(expr1, n [,expr2]) : expr1을 n만큼 왼쪽으로 늘려서 반환. RPAD(expr1, n [,expr2]) : expr1을 n만큼 오른쪽으로 늘려서 반환. LTRIM(char [,set]) : char에서 set으로 지정된 문자를 왼쪽에서 제거. RTRIM(char [,set]) : char에서 set으로 지정된 문자를 오른쪽에서 제거. SUBSTR(char, pos, leng) : 문자열 일부를 반환. SUBSTRB(char, pos, leng) : 문자열 일부를 반환. REPLACE(char, s..

728x90
728x90