본문 바로가기

Oracle

(16)
[211006] PROCEDURE 연습문제 PROCEDURE PL/SQL문을 저장하는 객체 필요할 때마다 복잡한 구문을 다시 입력할 필요 없이 간단하게 호출해서 실행 결과를 얻을 수 있음 /* 1. 재고관리를 위한 테이블 생성 테이블 명 : PRODUCTS 컬럼명 데이터타입 제약조건 비고 PID VARCHAR2(6) Primary Key 문자와 숫자의 조합으로 만들어진 코드를 사용한다. PNAME VARCHAR2(30) NOT NULL 제품 이름 AMOUNT NUMBER NOT NULL 제품의 단가 CNT NUMBER NOT NULL 제품의 수량 테이블 명 : PROD_INOUT 컬럼명 데이터타입 제약조건 비고 ID NUMBER Primary Key 제품 입고 출고내역을 식별하기 위한 번호, 자동증가 기능을 활용한다. IN_OUT CHAR(1) ..
[211007~8] FUNCTION, 복합 연습문제 사용자 정의 함수 -- FUNCTION : 함수, 오라클 기본 제공 함수 외의 사용자 정의 함수를 생성하여 사용하기 위한 객체 CREATE OR REPLACE FUNCTION FUNC_TEST1(val NUMBER) RETURN NUMBER --사용자정의함수 반드시 리턴타입 명시 IS BEGIN RETURN val + 1; END; / SELECT FUNC_TEST1(1) FROM DUAL; -- 1이라는 값 매개변수로 전달하면 함수식을 통해 계산 후 리턴해서 돌려준다. -- 평소 급여 + 커미션 연봉 계산하던 식 SELECT EMPLOYEE_ID , FIRST_NAME || ' ' || LAST_NAME , SALARY , COMMISSION_PCT , SALARY * (1 + DECODE(COMMIS..
[211005] 반복문(LOOP) BEGIN FOR n IN REVERSE 1..5 LOOP -- n은 지역 변수이다. DBMS_OUTPUT.PUT_LINE('반복 횟수 : ' || n); END LOOP; END; / 결과 반복 횟수 : 1 반복 횟수 : 2 반복 횟수 : 3 반복 횟수 : 4 반복 횟수 : 5 BEGIN FOR n IN REVERSE 1..5 LOOP DBMS_OUTPUT.PUT_LINE('반복 횟수 : ' || n); END LOOP; END; / 결과 반복 횟수 : 5 반복 횟수 : 4 반복 횟수 : 3 반복 횟수 : 2 반복 횟수 : 1 DECLARE /* 변수 선언부로 BEGIN 안에 사용할 변수를 미리 구성한다. 변수명 데이터타입; */ -- BASIC LOOP DECLARE n NUMBER := 1; BEG..
[211004] PL/SQL PL/SQL Procedural Language extension to SQL의 약자로 오라클 자체에 내장되어 있는 절차적 언어 SQL의 단점을 보완하여 SQL문장 내에서 변수의 정의, 조건 처리, 반복 처리 등 지원 예시 SET SERVEROUTPUT ON; * 프로시저를 사용하여 출력하는 내용을 화면에 보여주도록 설정하는 환경변수로 기본 값은 OFF여서 ON으로 변경 BEGIN DBMS_OUTPUT.PUT_LINE(‘HELLO WORLD’); END; / -- ; 찍고 / 포함해서 작성 * PUT_LINE이라는 프로시저를 이용하여 출력 (DBMS_OTUPUT 패키지에 속해있음) PL/SQL 실습 -- SET SERVEROUTPUT ON; -- SET AUTOCOMMIT OFF; BEGIN DBMS_O..
[211004] INDEX (TABLE SCAN / INDEX SCAN) INDEX SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해 생성하는 오라클 객체 내부 구조는 B*트리 형식으로 구성되어 있음 장점 검색 속도가 빨라지고 시스템에 걸리는 부하를 줄여 시스템 전체 성능 향상 단점 - 인덱스를 위한 추가 저장 공간이 필요하고 인덱스를 생성하는데 시간이 걸림 - 데이터의 변경 작업(INSERT/UPDATE/DELETE)이 자주 일어날 경우 오히려 성능 저하 주로 어떠한 검색을 많이 하는지, 거기에 맞춰 인덱스 구성을 할 수 있는지 여부 따져보고 인덱스로 속도 향상을 할 수 있는 상황이면 인덱스 설정 또는 기존 인덱스 수정하는 방법으로 검색 속도를 높임 일반적으로 프라이머리 키 설정된 ID로 기본 인덱스를 건다. 그런데 우리가 특정 검색 조건에 의해 셀렉트할 때 속도가..
[211004] SEQUENCE, 트랜젝션, SYNONYM SEQUENCE 순차적으로 정수 값을 자동으로 생성하는 객체로 자동 번호 발생기 역할을 함 (행 데이터에 대해 식별번호를 만들고 싶을 때 시퀀스가 자동으로 번호를 부여해준다.) 표현식 CREATE SEQUENCE 시퀀스명 옵션 CREATE SEQUENCE 시퀀스명 ① [START WITH 숫자] -> 처음 발생시킬 시작 값, 기본값 1 ② [INCREMENT BY 숫자] -> 다음 값에 대한 증가치, 기본값 1 ③ [MAXVALUE 숫자 | NOMAXVALUE] -> 발생시킬 최대값, 10의27승-1까지 가능 ④ [MINVALUE 숫자 | NOMINVALUE] -> 발생시킬 최소값, -10의 26승 ⑤ [CYCLE | NOCYCLE] -> 시퀀스가 최대값까지 증가 완료 시 CYCLE은 START WITH..
[091001] VIEW VIEW SELECT 쿼리의 실행 결과를 화면에 저장한 논리적 가상 테이블 실제 테이블과는 다르게 실질적 데이터를 저장하고 있진 않지만 사용자는 테이블을 사용하는 것과 동일하게 사용 가능 보안/관리의 편의성 손쉬운 사용성 사용자가 테이블을 직접 다루는게 아니라 중간의 관리자가 뷰라는 것을 만들어서 테이블의 일부분만 사용자가 다룰 수 있는 형태로 (전체 테이블이 아닌 일부의 컬럼) 제한. 사용자가 어떠한 테이블인지 알지 못하게 만든다던가 컬럼의 일부 데이터만 조회할 수 있게 만들어 주는 것. 사용자 입장에서는 그냥 뷰라는 것을 테이블처럼 쓰기 때문에 어떤 테이블인지 알 수 없다. 일반 테이블처럼 조회, 수정, 삭제, 추가가 가능하다. 뷰로 조회할 테이블 데이터도 수정, 추가, 삭제가 가능하나 많은 제약이 ..
[210930] 오라클 데이터베이스 계정 연동 연습 문제 /* Q. Develop1 계정을 하나 새로 생성한다. - 이 계정의 패스워드는 임의로 생성한다. - 이 계정은 Oracle DBMS에 접속할 수 있어야 한다. - 이 계정은 테이블 생성 및 수정, 삭제 권한과 데이터 조회, 추가, 수정, 삭제 권한이 필요하다. - 생성한 계정으로 Oracle DBMS 에 접속하여 테이블을 생성하도록 한다. */ 1. 시스템 계정으로 오라클에 접속한다. 나는 VS CODE에 접속해 미리 연동해 두었던 SYSTEM.XEPDB1 계정으로 오라클에 접속했다. 만일 초기 상태라면 cmd 창 실행 - sqlplus - 사용자명 : system 또는 sys as sysdba 비밀번호 : admin 입력 후 2번 과정을 따른다. (클라우드에 오라클을 설치하여 로컬이 아닌 클라우드에 ..