질의어

  • 삽입, 삭제, 수정, 검색 등의 데이터 조작을 위한 연산을 표현하기 위한 언어
  • 절차적 언어: 일련의 절차를 명시해야 하는 언어
  • 비절차적 언어: 수행 절차를 기술하지 않아도 사용가가 원하는 결과만을 형식적으로 명시하는 언어 실질적인 수행절차는 시스템 내부에서 처리 (블랙박스)

관계형 데이터베이스에서의 대표적 질의어

  • 관계 대수
    • 비절차적 언어
    • 관계 해석 보다는 더 절차적인 언어
    • 수학에서의 수식구조와 유사
      • 피연산자: 테이블
      • 연산자: 단항, 이항 연산자
  • 관계 해석
    • 비절차적 언어

관계대수의 연산 종류

  • 기본 연산
    • 선택 연산: 하나의 테이블에서 주어진 조건을 만족하는 레코드들을 검색하는 기능
      • 형식: σ조건식(테이블이름)
      • 교환법칙이 성립한다.
    • 추출 연산: 사용자가 원하는 필드만을 결과로 출력하는 연산
      • 형식: π필드리스트(테이블이름)
      • 교환법칙이 성립되지 않는다.
    • 재명명 연산: 테이블에 이름을 부여하거나 변경하는 연산
      • 형식: ρ테이블명(테이블명)
    • 집합 연산: 수학적 집합 이론에서 정의된 연산
      • 조건: 집합 연산에 피연산자인 두개의 테이블은 서로 호환이 가능해야 함
        • 두 피연산자의 차수와 필드 이름이 같아야함
        • 같은 이름의 필드들이라 하더라도 도메인이 일치해야 함
      • 합집합
      • 차집합
      • 카티션 프로덕트: 두 개의 테이블에서 각각의 레코드들을 서로 결합하여 하나의 레코드로 구성하면서 가능한 모든 조합의 레코드들로 테이블을 생성
        • 형식: 테이블 x 테이블
        • 두 개 이상의 테이블이 필요한 질의의 표현이 가능
        • 교환법칙과 결합법칙이 성립함
      • 교집합
  • 추가연산
    • 조인
    • 자연 조인
    • 외부 조인
    • 지정 연산
  • 관계대수 연산의 결과는 임시 테이블의 형태로 보여진다. (결과가 저장되지는 않음) 따라서 연산의 중첩이 가능함
  • null 처리: 조건식에서 배제

조인(join)

  • 두 테이블로 부터 특정 조건을 만족하는 레코드들을 하나의 레코드로 결합하는 연산
  • 카티션 프로덕트는 모든 가능한 조합에 의해 레코드들을 생성하지만 조인은 특정 조건을 만족하는 레코드만을 선택
  • 세타 조인이라고 함
  • 형식: <테이블이름1>⋈(조건식)<테이블이름2>
    • 조인 조건은 필드간의 동등비교(=)가 대부분이며 이를 동등조인 이라 함
  • 다음과 같이 카티션 프로덕트로 표현가능

  • ex: 학교와 학과에 소속된 같은 이름의 정보 검색

자연 조인

  • 서로 다른 테이블에서 같은 필드명을 가지는 두개의 필드가 같은 값을 같는 필드를 하나 제거하여 합쳐 단순히 표현한 연산
  • 형식: <테이블이름1>⋈<테이블이름2>
  • 만약 공통되는 필드가 없다면 카티션 프로덕트와 같다.

외부 조인

  • 조인 조건에 만족되지 않는 레코드까지 검색 결과에 포함시키기 위한 방법(필드 안에 레코드 내용이 동일 하지 않은 경우를 대비)
  • 서로 매치되지 않는 필드에 대해서는 NULL을 입력함
  • 종류
    • 왼쪽 외부조인 (왼쪽의 중복되지 않는 요소 포함)
    • 오른쪽 외부조인 (오른쪽의 중복되지 않는 요소 포함)
    • 완전 외부조인 (양쪽의 중복되지 않는 요소 포함)

지정 연산

  • 복잡한 질의를 여러 개의 질의로 분리하거나 중간 결과에 이름을 부여
  • 최종 질의를 결과에 이름을 부여
  • 연산 기호로는 ←를 사용
  • ex: student 테이블에서 3학년인 학생을 선택해서 그 결과 테이블을 junior이라는 이름으로 지정해라
    • junior ←σ(조건) <테이블명>

'CS > DataBase' 카테고리의 다른 글

집계 함수  (0) 2023.04.01
SQL 1  (0) 2023.03.24
Key  (0) 2023.03.11
릴레이션  (0) 2023.03.11
데이터와 데이터베이스  (1) 2023.03.03

+ Recent posts