본문 바로가기
Coding Study/MySQL

MySQL 명령문 - 다양한 검색문

by 최듀렉 2023. 10. 14.
  • 그룹화 검색 : GROUP BY절
SELECT [DISTINCT|ALL] 열_리스트
FROM 테이블_리스트
[GROUP BY 그룹_기준열_리스트]
[HAVING 그룹_조건식] ;

 

  • 그룹 조건 검색 : HAVING절
    • HAVING 절은 그룹이 만족해야 하는 제한 조건을 명세
      GROUP BY절을 통해 생성된 그룹 중에서도 특정 조건을 만족하는 그룹만으로 검색을 제한
      WHERE절이 행에 대한 '검색_조건식'을 명세한다면 HAVING절은 행 그룹에 대한 '그룹_조건식'을 명세

 

  • LIKE 문자 연산자 검색 : '_' , '%' 와일드카드
    • 부분 문자열(substring) 포함 여부를 검색하기 위해
      WHERE절 '검색_조건식'에 사용되는 비교 연산자
    • 검색 문자열 값을 정확히 모르거나 일부만 알고 있는 경우
_ 문자열 중 특정 위치에 1개의 모든 문자를 허용
% 문자열 중 임의 위치에 0개 이상의 모든 문자(열)를 허용

 

  • LIKE 와일드카드의 적용 예
적용 예 검색 일치 검색 불일치
LIKE '_ook' book, look good, books, ook
LIKE '9_7_5' 98765, 91715, 9a7b5 975, 98754
LIKE '%k' book, milk, ok, k books
LIKE 'b%k' book, bblack, bk kbkbk, bbooks

 

  • 널 값 검색 : IS NULL, IS NOT NULL
    • 열 값으로 NULL을 갖고 있는 행을 검색할 경우
      '=' 비교 연산자 사용 불가

 

  • 집합 연산자를 이용한 검색 : UNION
    • 서로 다른 SQL 검색문의 결과 집합이 의미적으로 또 형식적으로 일치할 경우 관계 대수의 집합 연산자를 적용

      UNION(합집합) 연산자
      - 여러 SELECT 명령문의 검색 결과를 결합
      - 결과 테이블에서 자동으로 중복 행을 제거한 나머지 행들을 반환

 

 

  • 부 질의문을 이용한 검색
    • 부 질의문 (subquery)
      • 질의문 안에 중첩(nested)되어 포함된 또 다른 SELECT 검색문
      • 괄호 안의 가장 안쪽 부 질의문부터 먼저 수행되고 가장 바깥쪽 주 질의문이 가장 나중에 수행
      • WHERE절의 검색 조건 값을 미리 알지 못하거나 실시간으로 조건식을 완성해야 하는 경우 유용

 

  • IN 연산자
    • 나열된 값들 중에서 하나라도 일치하는 경우 참(true)을 반환하는 연산자
    • NOT IN은 나열된 값들 중 어떤 값도 일치하지 않을 경우 참을 반환
    • 여러 값들의 반복 비교를 위해 '=' 기호를 나열할 필요 없이 한꺼번에 표현하도록 함

 

  • 내부 질의 (inner query) : 안쪽에 위치한 부 질의문
  • 외부 질의 (outer query) 또는 주 질의 (main query) : 바깥쪽 주 질의문
  • 중첩 부 질의문 : 부 질의문 안의 부 질의문

 

SELECT [DISTINCT|ALL] 열_리스트
FROM 테이블_리스트
[WHERE 열_리스트 IN ( SELECT 열_리스트     ◁ 내부 질의
△외부질의 또는 주질의  FROM 테이블_리스트
                                        WHERE 열_리스트 = ( SELECT 열_리스트     ◁ 중첩 부 질의문
                                                                             FROM 테이블_리스트
                                                                             WHERE 열_리스트 = '조건' ) ) ;

 

  • EXISTS 연산자
    • 부 질의문의 실행 결과반환되는 행이 존재하는지 존재 유무를 확인하는 연산자
SELECT [DISTINCT|ALL] 열_리스트
FROM 테이블_리스트
[WHERE 열_리스트 EXISTS ( SELECT 열_리스트     
                                                 FROM 테이블_리스트
                                                 WHERE 열_리스트 = '조건' ) ;

 

  • 상호연관(상관) 질의문 (correlated query)
    • 중첩 질의문 중에서 내부 질의의 WHERE절 '검색_조건식'이
      외부 질의에 선언된 테이블의 일부 열을 참조하는 질의
    • 안쪽 부 질의문의 WHERE 조건식에 바깥 주 질의문의 학생 테이블이 사용되어
      바깥 질의와 안쪽 질의가 서로 연관되어 실행

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Coding Study > MySQL' 카테고리의 다른 글

MySQL 명령문 - 데이터 검색 SELECT문  (0) 2023.10.13