MySQL 총 정리4: 다양한 연산자로 필터링된 데이터 조회

데이터 분석/MySQL

MySQL 총 정리4: 다양한 연산자로 필터링된 데이터 조회

해리누나 2024. 9. 30. 22:56
반응형

 


[ 목차 ]
WHERE
1) 기본 문법
2) 비교 연산자
📝 WHERE절에서 별칭을 사용할 수 없는 이유
3) 논리 연산자
4) WHERE + IN
5) WHERE + LIKE
6) WHERE + BETWEEN

7) IS NULL

WHERE

1) 기본 문법

SELECT 열1, 열2, ...
FROM 테이블명
WHERE 조건;
  • WHERE: 데이터에 대한 조건 설정
  • WHERE 절을 통해 데이터가 필터링이 되어 특정 조건에 맞는 데이터만 조회ㆍ수정ㆍ삭제가 가능하다.

 

2) 비교 연산자

  • 값 비교시 사용
  • =, !=, <, >, <=, >=

 

급여가 삼백만원 이상인 사원 조회

 

부서가 마케팅이 아닌 사원 조회

 

입사한 지 1000일이 넘는 사원 조회

 

•  참고로 AS로 별칭을 붙인 컬럼은 WHERE절에서 사용할 수 없다.

 

📝 WHERE절에서 별칭을 사용할 수 없는 이유

• MySQL에서 쿼리가 실행되는 처리 순서를 알면, 왜 WHERE절에서 별칭을 사용할 수 없는지 이해할 수 있다.

MySQL 쿼리는 우리가 작성한 순서대로 SELECT 부터 실행되는 것이 아니라,
  내부적으로 처리되는 순서에 따라서 실행된다.

① FROM: 쿼리에 사용할 테이블 지정하고 데이터를 부름

② WHERE: WHERE 조건을 만족하는 행 데이터만 필터링

③ GROUP BY: 데이터를 그룹화

④ HAVING: GROUP BY로 그룹화된 결과에 대한 조건을 필터링

⑤ SELECT: 최종적으로 필요한 컬럼을 선택하며, 연산을 수행하거나 별칭 적용

⑥ ORDER BY: 선택된 결과 정렬
여기에 더해

⑦ LIMIT을 통해 결과의 출력 개수를 제한 가능
➯ 즉, WHERE 절은 아직 별칭이 만들어지기 전에 실행되기 때문에, 해당 별칭을 인식하지 못해 오류가 발생하는 것

 

3) 논리 연산자

  • AND: 두 조건 모두 참일 때만 행을 반환
  • OR: 두 조건 중 하나라도 참이면 행을 반환
  • NOT: 조건이 거짓인 행만 반환
    (NOT은 단독으로 사용할 수 없으며, IN, LIKE, BETWEEN 등과 함께 사용해야 한다.)

 

마케팅부면서 급여를 삼백만원 이상으로 받는 사원

 

출판사가 민음사이거나 가격이 15000원 미만인 책 조회

 

✅주의할 점

도서 목록 테이블

• OR과 AND를 동시에 사용해야 하는 경우가 있다면, 사용에 주의해야 한다.

 

• AND 연산자가 OR 연산자보다 우선순위가 높아, AND 연산자가 OR 연산자보다 우선적으로 실행된다.

 

• 즉, 위 쿼리는 이렇게 해석되는 것이다.

 

• 따라서 괄호로 분명히 하자

 

4) WHERE + IN

  • IN은 특정 컬럼의 값이 지정된 목록 중에서 일치하는지 확인하는 데 사용된다.
  • 행의 어떤 특정 컬럼에 대한 값이 목록에 포함되는 값이면, 해당 행을 반환한다.
  • OR 연산자를 사용해 표현이 가능한 부분이지만, IN을 사용하면 쿼리가 훨씬 간결해진다.

 

개발부이거나 영업부이거나 마케팅부인 사원 조회

 

개발부나 영업부, 마케팅부가 아닌 사원 조회

•  NOT IN은 IN의 반대 연산자로, 목록에 없는 값을 필터링한다.

 

• DEPARTMENT 테이블에서 지역이 '서울'인 부서를 찾아, EMPLOYEE 테이블의 해당 부서에 속한 직운을 조회하라.

• 이런식으로 서브쿼리와 함께 사용되어 다른 테이블의 결과와 비교하는 것도 가능하다.

 

✅주의할 점

• IN 연산자는 NULL 값을 무시한다.

 

5) WHERE + LIKE

  • LIKE는 특정 패턴과 일치하는 데이터를 조회할 때 사용한다.
  • 주로 와일드카드와 함께 사용되어 부분적으로 일치하는 문자열을 찾는다.
    % : 0개 이상의 문자를 대체 = 해당 위치에서 몇 글자든 올 수 있다는 것
    ➯ _  : 딱 1개의 문자만을 대체 = 해당 위치에서 반드시 한 글자만 올 수 있다는 것 
  • LIKE는 대소문자를 구분하지 않는다.

 

① %

'김'으로 시작하는 이름을 가진 사원 조회

문자열%: '문자열'로 시작하는 데이터를 찾는다.

 

'수'로 끝나는 이름을 가진 사원 조회

%문자열: '문자열'로 끝나는 데이터를 찾는다.

 

'수'가 이름에 들어가는 사원 조회

%문자열%: '문자열'이 어디든 포함된 데이터를 찾는다.

➯ 즉, '문자열'로 시작하거나, 끝나는 데이터도 포함된다.

 

'2019'년도에 고용된 사원 조회

• 2019년도에 고용된 사원들을 조회한다고 치자.

• 2019%로 쓰면 되는데, 날짜 표현 형식 포맷에 따라 주의해야 한다.

• DBMS마다 날짜의 기본 형식이 다른데, 만일 형식이 yy/mm/dd라면 '19%'로 입력해야 한다.

 

② _

• _는 한 문자만을 대체한다는 것을 잊지말자.

 

• _를 두 번 썼으니 두글자가 대체되는 것이다.

 

%_

• 두번째 글자가 '하'인 데이터 조회

• 이렇게 두 와일드카드를 위와 같이 같이 쓰는 것도 가능하다.

 

6) WHERE + BETWEEN

  • BETWEEN은 주로 숫자, 날짜 등의 범위를 지정할 때 사용된다.
  • BETWEEN A AND B로 쓰는데, 이때 A와 B가 모두 포함되는 범위다.

 

가격이 15000원 이상이며 20000원 이하인 책 정보 조회

 

가격이 13000원 이상이면서 15000원 이하가 아닌 책 정보 조회

• BETWEEN 앞에 NOT을 붙여 해당 범위 내로 값을 가지지 않는 데이터를 조회하는 것도 가능하다.

 

7) IS NULL

  • 컬럼 값이 null인 데이터를 조회할 때 사용
  • NULL은 '값이 존재하지 않음'을 의미해 일반적인 비교 연산자인 '='로는 NULL을 비교할 수가 없다.
  • 대신 IS를 사용하여 비교한다.

 

부서 값이 NULL인 사원 조회 / 부서 값이 NULL이 아닌 사원 조회

 


 

 

728x90
반응형