[sql] 조건(WHERE, HAVING) 표현식들

신창호·2023년 3월 9일
0

mysql문법

목록 보기
4/4
  • WHERE, HAVING을 활용하여 조건을 만들어 테이블에서 원하는값만 출력 할 수 있다.
  • 여기서 중요한게, 조건을 만들어 주는 조건 표현식에 대해 알아보자

풀어볼 연습문제

SELECT CAR_TYPE , COUNT(CAR_TYPE) AS CARS FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%시트%' GROUP BY CAR_TYPE ORDER BY CAR_TYPE;

비교연산자

  • 가장 기본이 되는 연산자로 부등호들로 표기한다.
    • =, >= , <=, > , < !=

사이의 값

  • BETWEEN [] AND []
SELECT * FROM MEMBER WHEHE Age BETWEEN 20 AND 31;
  • 또한 아래와 같이 DATE 타입의 범위도 정해줄 수 있다.
SELECT * FROM APPOINTMENT WHERE APNT_YMD BETWEEN '2022-05-01 00:00:00' AND '2022-05-31 23:59:59';

문자열 패턴 매칭 조건

시작하는 문자열

  • 문자열을 표현할 때는 작은 따옴표로 감싸주자
  • % 은 어떠한 문자열을 의미
    • 경기 + % 일경우 ‘경기’ + ‘어떠한 문자열’
SELECT * FROM MEMBER WHERE ADDRESS LIKE '경기%' 

포함하는 문자열

  • 어떤 문자열을 뜻하는 % 양쪽에다 붙여주면된다.
SELECT * FROM CAR WHERE OPTIONS LIKE '%시트%' 

길이를 알고있는 문자열

  • 특정 길이의 문자열만 조건으로 구하고 싶다면 언더바(_)을 이용하면 된다.
  • _ 는 어떠한 문자 하나을 의미
SELECT * FROM MEMBER WHERE PHONE LIKE '010_ _ _ _ 1234'; # 언더바 4개

조건문이 여러개 일때

  • 만일 조건문이 여러개일때는 어떻게 할까?
  • 여러개의 조건문을 할 수있게 해주는 비교연산자 **AND, OR** 이 있다.
  • 하지만 주의할 점은, 조건표현식을 각각 사용해줘야 된다는 것이다.
    • 예시

      SELECT * FROM CAR_RENTAL_COMPANY_CAR 
      WHERE OPTIONS LIKE '%통풍시트%' 
      			OR OPTIONS LIKE '%열선시트%' 
      			OR OPTIONS LIKE '%가죽시트%' 
      GROUP BY CAR_TYPE 
      ORDER BY CAR_TYPE;
    • 즉, 위와 같이 [OPTIONS][LIKE] ['%통풍시트%' ]

      • [칼럼명][조건표현식] [표현식에 필요한 값]을 여러번 반복해서 입력해줘야된다는 것이다.
    • 이러한 문제를 해결하고자 REGEXP 가 나왔다.

REGEXP

  • REGEXP 연산자는 LIKE보다 복잡한 패턴을 검색 할때 사용한다.
  • 복수개의 특정 문자를 포함하는 데이터 검색 (특정 문자열을 '|' 를 기준으로 나눈다)
SELECT * FROM CAR_RENTAL_COMPANY_CAR 
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트' 
GROUP BY CAR_TYPE 
ORDER BY CAR_TYPE;
  • 정규표현식으로 구현하는 것이기때문에, % 은 제거하고, 필요한 문자열만 넣어주면된다.
profile
한단계씩 올라가는 개발자

0개의 댓글