[ 목차 ]
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) 비교 연산자
- 값 비교시 사용
- =, !=, <, >, <=, >=
• 참고로 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 등과 함께 사용해야 한다.)
✅주의할 점
• 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%로 쓰면 되는데, 날짜 표현 형식 포맷에 따라 주의해야 한다.
• DBMS마다 날짜의 기본 형식이 다른데, 만일 형식이 yy/mm/dd라면 '19%'로 입력해야 한다.
② _
• _는 한 문자만을 대체한다는 것을 잊지말자.
• _를 두 번 썼으니 두글자가 대체되는 것이다.
③ % & _
• 두번째 글자가 '하'인 데이터 조회
• 이렇게 두 와일드카드를 위와 같이 같이 쓰는 것도 가능하다.
6) WHERE + BETWEEN
- BETWEEN은 주로 숫자, 날짜 등의 범위를 지정할 때 사용된다.
- BETWEEN A AND B로 쓰는데, 이때 A와 B가 모두 포함되는 범위다.
• BETWEEN 앞에 NOT을 붙여 해당 범위 내로 값을 가지지 않는 데이터를 조회하는 것도 가능하다.
7) IS NULL
- 컬럼 값이 null인 데이터를 조회할 때 사용
- NULL은 '값이 존재하지 않음'을 의미해 일반적인 비교 연산자인 '='로는 NULL을 비교할 수가 없다.
- 대신 IS를 사용하여 비교한다.
'데이터 분석 > MySQL' 카테고리의 다른 글
MySQL 총 정리6: mysql 내장함수 모음 (4) | 2024.10.03 |
---|---|
MySQL 총 정리5: ORDER BY로 데이터 정렬 (1) | 2024.10.02 |
MySQL 총 정리3: SELECT으로 데이터 조회 (0) | 2024.09.28 |
MySQL 총 정리2: 데이터 추가ㆍ변경ㆍ삭제 (1) | 2024.09.27 |
MySQL 총 정리1: 명명 규칙, 테이블 생성ㆍ구조 변경ㆍ삭제 (0) | 2024.09.24 |