본문 바로가기
SQL

[SQL 기초 연습] 4. 이제 놀만큼 놀았으니 다시 공부해봅시다!

by wooksss 2025. 1. 14.
아래와 같은 sparta_students(학생) 테이블이 있습니다.
id
name
track
grade
enrollment_year
1
르탄이
Node.js
A
2023
2
배캠이
Spring
B
2022
3
구구이
Unity
C
2021
4
이션이
Node.js
B
2022
13.
sparta_students 테이블에서 모든 학생의 이름(name)과 트랙(track)을 선택하는 쿼리를 작성해주세요!
    > SELECT name, track FROM sparta_students;
14.
sparta_students 테이블에서 Unity 트랙 소속이 아닌 학생들을 선택하는 쿼리를 작성해주세요!

    > SELECT * FROM sparta_students WHERE track != 'Unity';

    > SELECT * FROM sparta_students WHERE track <> 'Unity'; 

15.
sparta_students 테이블에서 입학년도(enrollment_year)가 2021년인 학생과 2023년인 학생을 선택하는 쿼리를 작성해주세요!

    > SELECT * FROM sparta_students WHERE enrollment_year = 2021 or enrollment_year = 2023;

    > SELECT * FROM sparta_students WHERE enrollment_year IN (2021, 2023);

16.
sparta_students 테이블에서 Node.js 트랙 소속이고 학점이 ‘A’인 학생의 입학년도를 선택하는 쿼리를 작성해주세요!

    > SELECT enrollment_year FROM sparta_students WHERE track = 'Node.js' AND grade = 'A';

 

SQL의 비교 연산자에 대해서 알아봤다. 보통 비교에서 NOT을 '!='로 사용했는데 '<>'가 표준 SQL임을 알게 됐다.

기본 비교 연산자

= 두 값이 같음을 비교 WHERE age = 25
<> 두 값이 다름을 비교 (표준 SQL) WHERE age <> 25
!= 두 값이 다름을 비교 (일부 DBMS에서 사용 가능) WHERE age != 25
> 왼쪽 값이 오른쪽 값보다 큼 WHERE salary > 50000
< 왼쪽 값이 오른쪽 값보다 작음 WHERE salary < 50000
>= 왼쪽 값이 오른쪽 값보다 크거나 같음 WHERE age >= 18
<= 왼쪽 값이 오른쪽 값보다 작거나 같음 WHERE age <= 18

 

특정 값 비교를 위한 연산자

IN 특정 목록 안에 값이 존재하는지 확인 WHERE department IN ('HR', 'Sales')
NOT IN 특정 목록 안에 값이 존재하지 않는지 확인 WHERE department NOT IN ('HR')
BETWEEN 범위 내에 값이 있는지 확인 WHERE salary BETWEEN 30000 AND 50000
NOT BETWEEN 범위 밖에 값이 있는지 확인 WHERE salary NOT BETWEEN 30000 AND 50000

IN을 사용하면 특정 값이 다수일 경우 사용하면 편리하고 가독성이 좋음

패턴 비교를 위한 연산자

LIKE 특정 패턴과 일치하는지 확인 (문자열 비교) WHERE name LIKE 'A%'
NOT LIKE 특정 패턴과 일치하지 않는지 확인 WHERE name NOT LIKE 'A%'

 

NULL 값을 비교하기 위한 연산자

IS NULL 값이 NULL인지 확인 WHERE age IS NULL
IS NOT NULL 값이 NULL이 아닌지 확인 WHERE age IS NOT NULL

 

논리 연산자와 함께 사용하는 비교 연산자

AND 두 조건을 모두 만족하는 경우 WHERE age > 25 AND salary > 50000;
OR 두 조건 중 하나만 만족해도 되는 경우 WHERE age < 18 OR salary < 30000;
NOT 조건을 부정하는 경우 WHERE NOT age = 30;