본문 바로가기

Database/Oracle

(24)
PL//Trigger Trigger : 촉발시키다, 스스로 발생하다. 자동 호출되는 함수. (procedual, func과 다르게 직접 호출이아닌 자동 호출이 된다) 매개변수가 없음, select, insert, update 모두사용가능 before, after 원하는 지점에 Qurey문이 추가되고 그 후에 할지 그 전에 할지 정하는것. 회원한명 추가 INSERT INTO EMPLOYYES 같은사람 있는지 확인 -> 촉발 함수 제작 후 확인(b/f 선택) * before, after OLD NEW INSERT O DELETE O UPDATE O O SET SERVEROUTPUT ON; BEFORE 예) 부서명 재설정 CREATE TRIGGER trigger_test BEFORE --아랫문장이 업되이트 되기 전에 실행 UPDA..
PL// 함수 Function 매개변수, return값 SELECT 변수 앞에 ' : ' 필수 예) func 선언 후 RETURN 값 적어줘야함 CREATE FUNCTION func(p_val IN NUMBER) RETURN NUMBER IS v_val NUMBER; BEGIN v_val := p_val; v_val := v_val * 2; RETURN v_val; END; / 값을 넣어 실행1 SELECT func(3) FROM dual; 2 VAR v NUMBER; EXEC :v := func(12); --변수 앞에 : 필수 PRINT v; 세금계산 함수 CREATE FUNCTION tax(p_value IN NUMBER) RETURN NUMBER IS BEGIN RETURN(p_value * 0.15); END;..
pl//Cursor 컴퓨터의 표시 화면에서, 데이터의 입력·수정을 할 때의 위치 지정 및 기능 선택할 때 사용하는 마크. --암시적 커서 * 암시적 커서 ( Implicit Cursor ) - 오라클 DB 에서 실행되는 모든 SQL문장은 암시적인 커서가 생성되며, 커서 속성을 사용할 수 있다. - 모든 DML과 PL/SQL select 문에 대해 선언됨 - Oracle 서버에서 SQL문을 처리하기 위해 내부적으로 생성하고 관리한다. - SQL 커서 속성을 사용하면 SQL 문의 결과를 테스트 할 수 있다. - 암시적 커서는 SQL 문이 실행되는 순간 자동으로 OPEN과 CLOSE 를 실행 한다. - 암시적 커서는 오라클이나 PL/SQL 실행 메커니즘에 의해 처리되는 SQL 문장이 처리되는 곳에 대한 익명의 주소다. --수정하..
PL// work 06 --예제 1) 사원번호 입력받고 그 사원의 급여에 세금을 출력하라( 세금은 5%로 가정한다) ACCEPT u_empno PROMPT '사원 번호를 입력하세요' DECLARE u_sal EMPLOYEES.salary%TYPE := 1000; u_salTotal NUMBER; BEGIN SELECT salary INTO u_saltotal FROM employees WHERE employee_id = &u_empno; SYS.dbms_output.put_line(&u_empno || '번 사원의 급여 : ' || u_salTotal); UPDATE employees SET salary = salary*0.05 WHERE employee_id = &u_empno; SELECT salary INTO u_salt..
PL 1 PL/SQL PL : Procedural == 처리자 Extension Process -> Procedure SQL 을 확장한 순차적 언어 -> Procedure, Function, Trigger in out in out insert select delete update 제어문 : if, while, for +script DECLARE --선언부 message VARCHAR2(10); --변수명, String message과 동일 BEGIN --실행부 message := 'hello pl'; -- message = "hello pl"과 동일 SYS.dbms_output.put_line('message = ' || message); --예외처리문 END; / Script 구조 1. 선언부 : 변수, 상수,..
work 06 (view) -- 문제1) EMPLOYEES 테이블에서 20번 부서의 세부 사항을 포함하는 EMP_20 VIEW를 생성 하라 CREATE VIEW EMP_20 AS SELECT * FROM employees WHERE department_id = 20; SELECT * FROM emp_20; -- 문제2) EMPLOYEES 테이블에서 30번 부서만 EMPLOYEE_ID 를 emp_no 로 -- LAST_NAME을 name으로 SALARY를 sal로 바꾸어 EMP_30 VIEW를 생성하라. CREATE VIEW EMP_30 AS SELECT employee_id as emp_no, last_name as name, salary as sal FROM employees; SELECT * FROM emp_30; -- 문제3..
View View : 가상 테이블 실체가 없는 테이블. 다른 테이블을 접근하기 위한 테이블 Table read only (읽기전용) --기본 View -- VIEW 생성 CREATE VIEW UB_TEST_01(JOB_ID, JOB_TITLE, MIN_SALARY) AS SELECT job_id, job_title, min_salary FROM jobs; CREATE VIEW UB_VIEW( employee_id, first_name, salary ) AS SELECT employee_id, first_name, salary FROM tb_emp; -- VIEW에 데이터삽입 INSERT INTO ub_test_01(JOB_ID, JOB_TITLE, MIN_SALARY) VALUES('DEVELOPER','개발자'..
INDEX index : 색인, 검색 원하는 정보의 위치를 빠르고 정확하게 알아낼 수 있는 방법 --자동생성 : Primary Key, Unique Key 일 경우에는 내부에서 자동으로 생성됨 --수동생성 : Query문 생성했을 때 효율적인 경우 1. where절이나 join조건 안에서 자주 사용되는 column (주로 외래키 : 외래키는 PK,UK로 자동설정되어있음) 2. null 값이 많이 포함되어있는 컬럼 (comm, maniger_id) 3. where절이나 join조건 안에 두개이상을 사용하는 컬럼 생성했을 때 비효울적인 경우 1. table의 data의 수(row)가 적을 때(3000개 이하) 2. table이 자주 갱신되는 경우 --테이블 생성(기존 EMPLOYEES 테이블 COPY) -- 카피 : ..