본문 바로가기

정보처리산업기사_실기_기록용

[데이터베이스] SQL - SELECT

반응형

[출처] 2020 시나공 기본서 정보처리산업기사 실기

1. SELECT

SELECT [PREDICATE][테이블명.]속성명[ AS 별칭][, [테이블명.]속성명, ···] FROM 테이블명[, 테이블명, ···] [WHERE 조건] [GROUP BY 속성명[, 속성명, ···]] [HAVING 조건] [ORDER BY 속성명 [ASC | DESC][, 속성명[ASC | DESC], ···]];
  • SELECT절
    • PREDICATE : 검색할 튜플을 제한할 목적으로 사용되는 조건으로 ALL, DISTINCT, DISTINCTROW 등 올 수 있음
      • ALL : 모든 튜플들을 검색, 기본값
      • DISTINCT : 중복된 튜플을 제거
      • DISTINCTROW : 중복된 튜플을 제거하나, 선택된 속성의 값이 아닌 튜플의 전체 값을 대상으로 할 때 사용
    • 속성명 : 검색하여 불러올 속성 또는 수식, 2개 이상의 테이블 대상으로 검색할 때 '테이블명.속성명'으로 사용
    • AS : 속성 및 연산의 이름을 다른 제목으로 표시, AS 생략하고 별칭만 사용 가능 (별칭 ALIAS)
  • FROM절 : 검색할 데이터가 있는 테이블명
  • WHERE절 : 검색할 조건 기술
    • 조건 연산자
      비교 연산자: = <> > < >= <=
      논리 연산자: NOT AND OR
      LIKE 연산자: '%'모든 문자를 대표 / '_'문자 하나를 대표 / '#'숫자 하나를 대표
    • 그룹함수
      COUNT(속성명) : 그룹별 튜플 수를 구하는 함수
      MAX(속성명) : 그룹별 최대값을 구하는 함수
      MIN(속성명) : 그룹별 최소값 구하는 함수
      SUM(속성명) : 그룹별 합계를 구하는 함수
      AVG(속성명) : 그룹별 평균을 구하는 함수
  • GROUP BY절 : 특정 속성을 기준으로 그룹화하여 검색할 때 사용. 일반적으로 그룹함수와 같이 사용됨
  • HAVING절 : 그룹에 대한 조건 기술
  • ORDER BY절 : 특정 속성 정렬
    • 속성명 : 정렬의 기준이 되는 속성명 기술
    • ASC : 오름차순
    • DESC : 내림차순


2. 하위 질의

SELECT 이름, 주소 FROM 사원 WHERE 이름 IN (SELECT 이름 FROM 여가활동 WHERE 취미='나이트댄스');



3. 복수 테이블 검색

SELECT A.이름, A.부서, B.취미, B.검색 FROM 사원 A, 여가활동 B WHERE B.경력 >= 10 AND A.이름 = B.이름



4. 통합(UNION) 질의
UNION은 일반 집합이론에서의 합집합과 같습니다. 두 테이블을 합치면 두 테이블에 속해 있는 튜플은 중복이 제거되어 1개만 표시됩니다.

SELECT * FROM 임원 UNION SELECT * FROM 직원;


5. JOIN
JOIN(조인)은 2개의 테이블에 대해 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션 반환
종류 : INNER JOIN, OUTER JOIN

  • INNER JOIN
    • EQUI 조인
      -WHERE절을 이용한 EQUI JOIN
      
      SELECT 학번, 이름, 학생, 학과코드, 학과명
        FROM 학생, 학과
       WHERE 학생.학과코드 = 학과.학과코드;
       
       
       
      -NATURAL JOIN절을 이용한 EQUI JOIN
       : JOIN 조건이 '='일 때 동일한 속성이 두 번 나타나게 되는데,
         이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법
        
        SELECT 학번, 이름, 학생, 학과코드, 학과명
          FROM 학생
       NATURAL JOIN 학과;
       
       
       
      -JOIN ~ USING절을 이용한 EQUI JOIN 
      
      SELECT 학번, 이름, 학생, 학과코드, 학과명
        FROM 학생
        JOIN 학과 USING(학과코드);​
    • NON-EQUI 조인
      SELECT 학번, 이름, 성적, 등급
        FROM 학생, 성적등급
       WHERE 학생.성적 BETWEEN 성적등급.최저 AND 성적등급.최고;​
      JOIN조건에 '=' 조건이 아닌 나머지 비교 연산자 > < <> >= <= 를 사용하는 방법
  • OUTER JOIN
    LEFT OUTER JOIN
    : INNER JOIN의 결과를 구한 후, 어떤 튜플과도 맞지 않는 좌측 항의 튜플들에 NULL값을 붙여 반환
    
    SELECT [테이블명1.]속성명, [테이블명2.]속성명, ···
      FROM 테이블명1 LEFT OUTER JOIN 테이블명2
        ON 테이블명1.속성명 = 테이블명2.속성명;
        
    SELLECT [테이블명1.]속성명, [테이블명2.]속성명, ···
      FROM 테이블명1, 테이블명2
     WHERE 테이블명1.속성명 = 테이블명2.속성명(+);
     
     
    RIGHT OUTER JOIN
    : INNER JOIN의 결과를 구한 후, 어떤 튜플과도 맞지 않는 우측 항의 튜플들에 NULL값을 붙여 반환
    
    SELECT [테이블명1.]속성명, [테이블명2.]속성명, ···
      FROM 테이블명1 RIGHT OUTER JOIN 테이블명2
        ON 테이블명1.속성명 = 테이블명2.속성명;
        
    SELLECT [테이블명1.]속성명, [테이블명2.]속성명, ···
      FROM 테이블명1, 테이블명2
     WHERE 테이블명1.속성명(+) = 테이블명2.속성명;
     
     
     FULL OUTER JOIN
     : LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합쳐 놓은 것
     
     SELECT [테이블명1.]속성명, [테이블명2.]속성명, ···
      FROM 테이블명1 FULL OUTER JOIN 테이블명2
        ON 테이블명1.속성명 = 테이블명2.속성명;​
  • SELF JOIN
    같은 테이블에서 2개의 속성을 연결하여 JOIN 하는 방법
    
    SELECT A.학번, A.이름, B.이름 AS 선배
      FROM 학생 A JOIN 학생 B
        ON A.선배 = B.학번;
        
    SELECT A.학번, A.이름, B.이름 AS 선배
      FROM 학생 A, 학생 B
     WHERE A.선배 = B.학번;​

 

반응형