SQL

[내일배움캠프] SQL 기초 - 데이터 조회 및 필터링

응애 PM 2025. 3. 11. 14:47

이번 주차에 배운 SQL을 통한 데이터 조회 및 필터링 (SELECT, WHERE, LIKE, IN, BETWEEN) 에 대해 정리해보았다.

 

DBeaver - MySQL 을 사용했고 스파르타코딩캠프에서 제공해주신 데이터를 활용했다는 점 참고~

- SELECT / FROM

SELECT *
FROM payments;

 

SELECT 는 조회할 컬럼을 선택하고, FROM은 어떤 테이블로 부터 가져올 건지를 명시한다.

 

이때 SELECT 뒤에 ' * ' 와 같이 별표를 붙이면 모든 컬럼을 조회할 수 있따

 

· 실행결과

payments 테이블의 모든 컬럼의 데이터가 조회됐다.

 

여기서 품목의 id만 조회하려고 하는데, 컬럼 이름이 order_id 인게 맘에 안들어서 id 로 고쳐서 조회하고 싶다면?

 

SELECT order_id as id
FROM payments;
SELECT order_id id
FROM payments;

 

위와 같이 둘 중 한가지의 방법을 선택할 수 있다. 나 같은 경우는 AS를 쓰는게 편하고 보기도 좋아서 전자를 주로 쓴다

 

변경된 컬럼명


- WHERE을 이용한 필터링

테이블에서 조건을 통해 원하는 컬럼만 뽑아서 쓰고 싶다면, WHERE 절을 통한 조건을 줘서 필터링할 수 있다.

 

ex) food_order 테이블에서 주문 금액 20,000 ~ 30,000 사이 고객 조회

 

사이의 값을 조회해야 한다면 BETWEEN a AND b 구문을 활용하자.

SELECT price
FROM food_orders
WHERE price BETWEEN 20000 AND 30000;

사이의 값이 잘 출력됨

 

이때, 20000 AND 30000 이면 20000 이상 30000 이하의 값이 뽑힌다. 이상 / 이하의 개념이라는 것 인지

 

ex) food_order 테이블에서 'B' 로 시작하는 상점의 주문 조회하기

 

B로 시작하는 문자를 뽑아야하기 때문에 LIKE 절을 활용하면 된다.

 

SELECT *
FROM food_orders
WHERE restaurant_name LIKE "B%";

B부터 시작하는 식당들만 잘 추출되었다.

 

이때 만약에, 정확하게 8글자여야 하고 B로 시작해야 된다면? => ' _ ' 언더바를 활용할 수 있따!

 

SELECT *
FROM food_orders
WHERE restaurant_name LIKE "B_____";

6글자인 데이터를 추출하기 위해 B_____ 와 같이 언더바를 다섯 번 썼다.

 

 

ex) 상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하기

 

비슷한 문제인데, WHERE 절 내에서 조건을 여러 개를 넣고 싶다면 AND로 이어주면 된다는 것만 알면 쉽게 풀 수 있다.

SELECT restaurant_name ,customer_id 
FROM food_orders
WHERE food_preparation_time  BETWEEN 20 AND 30
AND cuisine_type = "Korean";

식당 이름에 BBQ가 보이니 BBQ가 먹고 싶어진다


· 관련 예제 풀이

아래와 같은 sparta_employees(직원) 테이블이 있습니다.
id
name
position
salary
hire_date
1
르탄이
개발자
30000
2022-05-01
2
배캠이
PM
40000
2021-09-25
3
구구이
파트장
35000
2023-06-01
4
이션이
팀장
50000
2021-07-09
 
1. 모든 직원의 이름(name)과 직급(position)을 선택하는 쿼리를 작성
SELECT name, position
FROM sparta_employees;
 

2. 중복 없이 모든 직급(position)을 선택하는 쿼리를 작성

SELECT DISTINCT position
FROM sparta_employees;

 

컬럼의 값이 중복되지 않게 추출하고 싶다면 'DISTINCT' 를 SELECT 절의 추출하고 싶은 컬럼명 앞에 넣어주면 중복되지 않는 값만 추출할 수 있다!

 

3. 연봉(salary)이 40000, 60000 사이의 직원들을 선택하는 쿼리를 작성

SELECT *
FROM sparta_employees
WHERE salary BETWEEN 40000 AND 60000;
 

4. 입사일(hire_date)이 2023년 1월 1일 이전인 모든 직원들을 선택하는 쿼리를 작성

SELECT *
FROM sparta_employees
WHERE hire_date < '2023-01-01';
 

DATE 도 비교 연산자를 활용가능하다는 점 숙지하자!