본문 바로가기

데이터베이스

[데이터베이스] 10. SQL - 데이터 검색어 SELECT, PL/SQL

반응형

데이터 검색어(SELECT)

  • 문법
    SELECT [DISTINCT] {*, column [alias], ...}
    FROM table_name
    [ WHERE condition ]
    [ GROUP BY column ]
    [ HAVING condition ]
    [ ORDER BY {column, expression} [ ASC | DESC ]];
  • 항목 설명
    1. DISTINCT: 중복되는 행을 제거하는 옵션
    2. *: 테이블의 모든 column을 출력
    3. alias: 해당 column에 대해서 다른 이름을 부여할 때 사용
      • alias 지정은 space 다음에 alias명 또는 AS alias로 지정 가능
    4. table_name: 질의 대상 테이블 명
    5. WHERE: 조건을 만족하는 행들만 검색
      • condition은, column, 표현식, 상수 및 비교 연산자
    6. GROUP BY: 그룹핑하고자 하는 단위 지정
    7. HAVING: 그룹핑한 결과값에 대한 조건 검색
    8. ORDER BY: 질의 결과 정렬을 위한 옵션 (ASC: 오름차순(Default), DESC: 내림차순)

절차형 데이터 조작 프로시저

  • PL/SQL 개요
    • 최근의 프로그래밍 언어의 특성을 수용한, SQL의 확장 기능이라 할 수 있다.  
    • 사용시 장점
      1. Compile 필요 없어 script 생성 및 변경 후 바로 실행이 가능하다.
      2. 프로그램 개발의 모듈화가 가능하다. 
        • 블록 내에서 논리적으로 관련된 문장들을 그룹화할 수 있다. 
        • 강력한 프로그램을 작성하기 위해 서브 블록들을 큰 블록에 포함할 수 있다. 
        • 복잡한 문제에 대한 프로그래밍이 적절히 나뉘어진 모듈들의 집합으로 구성할 수 있다.
      3. 식별자를 선언할 수 있다. 
        • 변수, 상수 등을 선언하여 해당 식별자를 SQL과 절차적인 프로그램에서 사용할 수 있다.
        • 데이터베이스의 테이블과 Record를 기반으로 하는 Dynamic한 변수 선언이 가능하다.
        • 단일형 데이터 타입과 복합형 데이터 타입을 선언할 수 있다.
      4. 절차적 언어 구조로 된 프로그램을 작성할 수 있다.
        • IF문을 통해 조건에 따라 일련의 문장을 실행 할 수 있다.
        • LOOP문을 사용하여 일련의 문장을 반복적으로 실행할 수 있다. 
        • Explicit Cursor를 이용한 Multi-row 처리가 가능하다.
      5. ERROR 처리가 가능하다.
        • Exception 처리 루틴을 이용하여 Oracle Server 에러를 처리할 수 있다.
        • 사용자 정의 에러를 선언하고 Exception 처리 루틴으로 처리가 가능하다.
      6. 성능 향상을 기대할 수 있다.
        • PL/SQL은 네트워크 부하를 줄여 프로그램의 성능을 향상시킬 수 있다.
        • PL/SQL은 여러 SQL문장을 BLOCK으로 묶고 한번에 BLOCK전부를 서버로 전송하기 때문에 통신량을 줄일 수 있어 성능향상을 기대할 수 있다.
  • PL/SQL 구조
    • PL/SQL은 프로그램을 논리적인 블록으로 나누게 하는 구조화된 블록 언어로서, 다음과 같은 블록 구조로 구성된다.
      1. 선언부 (DECLARE, Optional)
        • 실행부에서 참조할 모든 변수, 상수, CURSOR, EXCEPTION을 선언한다.
      2. 실행부 (BEGIN/END, Mandatory)
        • BEGIN과 END 사이에 기술되는 영역이다.
        • 데이터베이스 데이터를 처리할 SQL문과 PL/SQL 블록을 기술한다.
      3. 예외 처리부 (Exception, Optional)
        • 실행부에서 에러가 발생했을 때 수행될 문장을 기술
  • PL/SQL 처리 절차
    • PL/SQL로 작성된 Block을 Oracle 서버로 보내면 PL/SQL 엔진이 SQL문과 Non SQL문을 구분한다.
    • Non SQL문은 PL/SQL Engine내의 Procedural Statement Executor가, SQL문은 SQL Statement Executor가 처리하게 된다.
    • Non SQL문은 Client환경에서, SQL문은 서버에서 실행하게 된다.
    • 따라서, PL/SQL을 사용하게 되면 서버의 작업 양을 줄이게 되므로 네트워크 부하를 감소시켜 수행성능을 증가시키는 잇점이 있다.
  • PL/SQL 프로그래밍 가이드
    • PL/SQL Block 내에서는 한 문장이 종료할 때마다 ';'을 기술한다.
      • END 뒤에도 ';'을 사용하여 Block이 끝났다는 것을 명시하여야 한다.
      • PL/SQL을 실행은 "/"을 사용하고, 성공적으로 실행 된다면 "... successfully completed"라는 메시지가 출력되므로 이를 확인하여야 한다.
    • PL/SQL Block의 작성은 편집기를 통해서나 SQL *Plus에서 바로 작성하여 실행 할 수 있고, PL/SQL 실행 시 발생한 Error는 show errors 명령어로 확인한다.
    • PL/SQL 블록을 개발할 때 명확한 코드 생성과 유지보수를 위하여 프로그래밍 가이드를 정의, 준수, 수행하는 것이 좋다. 
    • 코드의 가독성을 높이기 위하여 들여쓰기를 하도록 한다.

 

 

 

 

참고자료

  • NCS학습모듈 - 데이터입출력구현
반응형