TIL #11 MySQL의 데이터 필터링

HYEON JIN CHOI·2024년 5월 3일

1. WHERE 절

WHERE 절은 SQL 쿼리에서 특정 조건에 부합하는 행을 필터링할 때 사용된다.
필터링하기 위한 조건으로 다양한 연산자들이 존재한다.

SELECT name
FROM employees
WHERE department = 'Sales';

위 예제에서는 employees 테이블에서 department 컬럼 값이 'Sales'인 모든 행을 조회한다.

2. 비교 연산자

비교 연산자는 피연산자 간 값의 비교를 통해 참과 거짓을 반환하기 위해 사용된다.
숫자, 문자열, 날짜 등 다양한 데이터 유형에 사용될 수 있다.

SELECT * 
FROM products
WHERE price > 100;

위 예제에서는 products 테이블에서 price 컬럼 값이 100보다 큰 모든 제품을 조회한다.

비교 연산자설명
=두 피연산자가 같다.
!=, <>두 피연산자가 다르다.
<왼쪽 피연산자가 작다.
<=왼쪽 피연산자가 작거나 같다.
>왼쪽 피연산자가 크다.
>=왼쪽 피연산자가 크거나 같다.

3. 논리 연산자

논리 연산자는 참과 거짓의 값을 갖는 두 논리식을 연산할 때 사용된다.

SELECT * 
FROM employees
WHERE salary >= 30000 AND department = 'HR';

위 예제에서는 salary 컬럼 값이 30000 이상이면서 department 컬럼 값이 'HR'인 직원을 조회한다.

논리 연산자설명
AND모두 참이다.
&&모두 참이다.
OR둘 중 하나가 참이다.
||둘 중 하나가 참이다.
XOR둘 값이 서로 다르다.
NOT논리식 결과의 반대이다.
!논리식 결과의 반대이다.

4. 'LIKE'와 와일드카드

LIKE 연산자는 문자 패턴 매칭에 사용되며, %_ 라는 와일드카드(wildcard)와 함께 사용된다.
%는 0개 이상의 문자라는 의미의 와일드카드 문자이고,
_는 하나의 문자라는 의미의 와일드카드 문자이다.

예를 들어 'a%' 라고 하면 'a'로 시작하는 모든 값을 의미하고,
'_a%' 라고 하면 두 번째 인덱스 값이 'a'인 모든 값을 의미한다.

SELECT * 
FROM customers
WHERE name LIKE 'M_%_%';

위 예제에서는 name 컬럼 값이 'M'으로 시작하고 최소 3글자 이상인 모든 고객을 조회한다.

5. 'IN'과 'BETWEEN'

  • IN 은 주어진 목록 중 하나와 일치하는 데이터를 조회한다.
    IN 은 여러 값을 한 번에 비교할 때 유용하다.
  • BETWEEN 은 지정된 두 값 사이에 있는 데이터를 조회한다.
    BETWEEN 은 시작 값, 종료 값을 모두 포함한다.
SELECT * 
FROM products
WHERE category IN ('Furniture', 'Electronics');

위 예제에서는 category 컬럼 값이 'Furniture', 'Electronics' 이 중 하나인 제품을 조회한다.

SELECT * 
FROM employees
WHERE age BETWEEN 25 AND 35;

위 예제에서는 age가 25 이상 35 이하인 직원을 조회한다.

6. 'IS NULL'과 'IS NOT NULL'

IS NULLIS NOT NULL 은 특정 컬럼의 값이 NULL 인지 아닌지를 검사하는 비교 연산자이다.
NULL 은 값이 없다는 의미를 갖고 있는데, 일반적인 비교 연산자인 =, != 로 검사할 수 없다.

SELECT * 
FROM employees
WHERE commission IS NULL;

위 예제에서는 commission 컬럼 값이 NULL 인 모든 직원을 조회한다.

7. 회고

MySQL의 기본적인 문법을 다루어보았다.
기본 개념이 밑받침되어야 이후에 복잡한 쿼리를 처리할 때 부담되지 않기 때문에,
충분히 숙지할 수 있도록 노력해야겠다.

0개의 댓글