SQL - WHERE 절

친愛하는 데이터베이스 마법사 되고자 하는 여러분 환영합니다! 오늘 우리는 SQL 도구箱에서 가장 강력한 도구 중 하나인 WHERE 절에 대해 배울 것입니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서 저는 이 흥미로운 여정을 안내해 드리겠습니다. 그러면 가상의魔杖(키보드)을 손에 들고 SQL 마법을 쓰러가 볼까요!

SQL - Where Clause

SQL WHERE 절

거대한 도서관에서 수百万 권의 책이 있는 상상해 봅시다. 드래곤에 관한 특정 책을 찾고 있습니다. 모든 책을 하나씩 검토할 것인가요? 물론 그렇지 않습니다! 도서관 사서에게 드래곤에 관한 책을 도와달라고 요청할 것입니다. SQL에서 WHERE 절은 여러분의 유용한 사서입니다.

WHERE 절은 특정 조건을 기반으로 데이터를 필터링할 수 있게 해줍니다. 데이터베이스에게 "이 조건을 만족하는 특정 정보만 보고 싶다"고 말하는 것과 같습니다.

기본 문법은 다음과 같습니다:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

이게 조금 두려워 보일 수도 있지만, 조금씩 설명드리면 곧 데이터를 프로처럼 필터링할 수 있을 것입니다!

WHERE 절과 SELECT 문

간단한 예제로 시작해 보겠습니다. students라는 테이블이 있고, id, name, age 열이 있습니다. 18세인 모든 학생을 찾고 싶습니다.

SELECT *
FROM students
WHERE age = 18;

이 쿼리에서:

  • SELECT *는 모든 열을 보고 싶다는 의미입니다.
  • FROM students는 쿼리를 수행할 테이블을 지정합니다.
  • WHERE age = 18는 조건입니다. "나이가 정확히 18세인 행만 보여달라"는 의미입니다.

그런 다음, 이 18세 학생들의 이름만 보고 싶다면:

SELECT name
FROM students
WHERE age = 18;

*name으로 변경하여, 이제 모든 열이 아니라 이름만 보이게 됩니다.

WHERE 절과 UPDATE 문

WHERE 절은 SELECT 문뿐만 아니라 데이터 업데이트에도 매우 유용합니다. 예를 들어, "Alice"라는 이름을 가진 모든 학생의 나이를 19로 업데이트하고 싶습니다.

UPDATE students
SET age = 19
WHERE name = 'Alice';

이 쿼리는 Alice라는 이름을 가진 학생들의 나이를 19로 변경합니다. WHERE 절이 없다면 모든 학생의 나이를 변경하는 실수를 저지를 수 있습니다!

WHERE 절과 IN 연산자

18, 19, 20세인 학생들을 찾고 싶다면 어떻게 하죠? 여러 개의 OR 조건을 사용할 수 있지만, 더 간결한 방법이 있습니다: IN 연산자입니다.

SELECT *
FROM students
WHERE age IN (18, 19, 20);

이 쿼리는 나이가 18, 19, 20세인 모든 학생을 반환합니다. "나이가 이 목록의 값 중 하나인가요? 그렇다면 포함하세요!"와 같은 의미입니다.

WHERE 절과 NOT IN 연산자

그런 다음, 18, 19, 20세가 아닌 모든 학생을 찾고 싶다면 어떻게 하죠? 간단합니다! IN 앞에 NOT을 추가합니다:

SELECT *
FROM students
WHERE age NOT IN (18, 19, 20);

이 쿼리는 나이가 18, 19, 20세가 아닌 모든 학생을 반환합니다.

WHERE 절과 LIKE 연산자

때로는 텍스트 데이터에서 패턴을 검색해야 할 수 있습니다. 그때 LIKE 연산자가 유용합니다. 예를 들어, 이름이 'A'로 시작하는 모든 학생을 찾고 싶다면:

SELECT *
FROM students
WHERE name LIKE 'A%';

이 쿼리에서 '%'는 모든 문자열을 매칭하는 와일드카드입니다. 따라서 'A%'는 "A로 시작하고 그 뒤에 무엇이든 오는 문자열"을 의미합니다.

이름이 'n'으로 끝나는 학생을 찾고 싶다면:

SELECT *
FROM students
WHERE name LIKE '%n';

또는 이름에 어디서든 'li'가 포함된 학생을 찾고 싶다면:

SELECT *
FROM students
WHERE name LIKE '%li%';

WHERE 절과 AND, OR 연산자

종종 여러 조건을 결합해야 할 때가 있습니다. 그때 AND와 OR 연산자가 유용합니다.

예를 들어, 18세이고 이름이 'A'로 시작하는 모든 학생을 찾고 싶다면:

SELECT *
FROM students
WHERE age = 18 AND name LIKE 'A%';

또는 18세이거나 이름이 'A'로 시작하는 학생을 찾고 싶다면:

SELECT *
FROM students
WHERE age = 18 OR name LIKE 'A%';

이 연산자들을 결합하여 복잡한 조건을 만들 수 있습니다:

SELECT *
FROM students
WHERE (age = 18 OR age = 19) AND (name LIKE 'A%' OR name LIKE 'B%');

이 쿼리는 나이가 18이나 19이고 이름이 'A'나 'B'로 시작하는 학생들을 찾습니다.

여기서 배운 연산자들을 요약한 표입니다:

연산자 설명 예제
= 같다 WHERE age = 18
<> or != 다르다 WHERE age <> 18
> 크다 WHERE age > 18
< 작다 WHERE age < 18
>= 크거나 같다 WHERE age >= 18
<= 작거나 같다 WHERE age <= 18
IN 목록의 값을 매칭 WHERE age IN (18, 19, 20)
NOT IN 목록의 값을 매칭하지 않음 WHERE age NOT IN (18, 19, 20)
LIKE 패턴 매칭 WHERE name LIKE 'A%'
AND 두 조건 모두 참 WHERE age = 18 AND name LIKE 'A%'
OR 두 조건 중 하나 참 WHERE age = 18 OR name LIKE 'A%'

이제 WHERE 절의 내용을 배웠습니다. 연습이 완벽함을 기억하세요. 자신만의 쿼리를 작성하고 다양한 조건을 실험해 보세요. 곧 경험 많은 데이터베이스 관리자처럼 데이터를 필터링할 수 있을 것입니다.

기쁜 쿼리 작성을 기원하며, WHERE 절이 항상 찾고자 하는 것을 찾아주기를 바랍니다!

Credits: Image by storyset