Re:제로부터 시작하는 갓생

[ATC] 24/11/28 본문

Study/Article

[ATC] 24/11/28

기븜 2024. 11. 29. 10:56
오늘의 아티클 URL https://yozm.wishket.com/magazine/detail/1747/
 

비개발자를 위한 엑셀로 이해하는 SQL: 3 WHERE와 ORDER BY | 요즘IT

앞선 글에서 일반 사무직으로서 우리가 친숙한 엑셀(Excel) 데이터 조회 사례를 빗대어, SQL에서의 기초 문법인 FROM과 SELECT를 살펴보았다. 이어지는 글에서는 데이터를 조회 및 추출하는 차원에서

yozm.wishket.com

주제

비개발자를 위한 엑셀로 이해하는 SQL: ③ WHERE와 ORDER BY

 

요약 및 주요 포인트

* WHERE

- 정의: 특정 조건에 맞는 행을 골라 조회. 엑셀의 '필터' 역할

- 특징

1) 논리 연산자

- 같다(=)

-- 상품 목록 테이블에서 category가 '간편식'인 데이터 필터링 후 모든 열 조회
SELECT *
FROM 상품목록
WHERE category = '간편식'

- 같지 않다(!=)

-- 상품 목록 테이블에서 category가 '간편식'이 아닌 데이터 필터링 후 모든 열 조회
SELECT *
FROM 상품목록
WHERE category != '간편식'

 

2) 숫자의 크기나 날짜의 전후 비교: 크다(>), 작다(<), 이상(≥), 이하(≤)

-- 상품목록 테이블에서 original_price 2500 이상인 데이터 필터링 후 모든 열 조회
SELECT *
FROM 상품목록
WHERE original_price >= 2500

 

3) 범위 또는 목록의 포함 여부

- ~사이(BETWEEN~ AND~)

-- 상품목록 테이블에서 original_price 2000~2500 사이 필터링 후 전체 열 조회
SELECT *
FROM 상품목록
WHERE original_price BETWEEN 2000 AND 2500

-- 상품목록 테이블에서 original_price 2000~2500 사이가 아닌 값 필터링 후 전체 열 조회
SELECT *
FROM 상품목록
WHERE original_price NOT BETWEEN 2000 AND 2500

- ~중에 해당함(IN~)

-- 상품목록 테이블에서 category가 '빵' or '음료' 값 필터링 후 모든 열 조회
SELECT *
FROM 상품목록
WHERE category IN ('빵', '음료')

-- 상품목록 테이블에서 category가 '간편식' or '음료'가 아닌 값 필터링 후 모든 열 조회
SELECT *
FROM 상품목록
WHERE category NOT IN ('간편식', '음료')

 

4) 특정 문자열 포함 여부 판단: 포함(LIKE), 포함 안 함(NOT LIKE)

LIKE '문자열%': 특정 문자열로 시작하는 값 모두 필터링

LIKE '%문자열': 특정 문자열로 끝나는 값 모두 필터링

LIKE '%문자열%': 특정 문자열이 어딘가에라도 포함되어 있다면 모두 필터링

 

+) 문자열의 경우 작은따옴표(' ')를 써야 문자열로 인식

+) % 는 '앞 또는 뒤에 무슨 글자가 몇 글자가 있든 상관 않는다'라는 의미

-- 상품목록 테이블에서 name에 '밥'으로 끝나는 값 필터링 후 전체열 조회
SELECT *
FROM 상품목록
WHERE name LIKE '%밥'

-- 상품목록 테이블에서 name에 '사'로 시작하는 값 필터링 후 전체열 조회
SELECT *
FROM 상품목록
WHERE name LIKE '사%'

-- 상품목록 테이블에서 name에 '라'라는 글자가 포함된 값 필터링 후 전체열 조회
SELET *
FROM 상품목록
WHERE name LIKE '%라%'

 

5) 특정 행 값 비어있는 경우

- 비어있음(IS NULL)

-- 상품목록 테이블에서 category_id가 비어있는 값 필터링 후 전체열 조회
SELECT *
FROM 상품목록
WHERE category_id IS NULL

- 비어있지 않음(IS NOT NULL)

-- 상품목록 테이블에서 category_id가 비어있지 않은 값 필터링 후 전체열 조회
SELECT *
FROM 상품목록
WHERE category_id IS NOT NULL

 

* ORDER BY

- 정의: 데이터의 정렬 순서를 지정

- 특징

1) 정렬시 확인

어떤 열을 기준으로 정렬할 것인가?

그 열을 기준으로 어떤 방식으로 정렬할 것인가?

 

2) 오름차순 (ASC = Ascending)

ORDER BY 칼럼1: 칼럼1을 기준으로 오름차순 정렬해줘

ASC라고 따로 명시하지 않아도 오름차순이 기본값

-- 상품목록 테이블 모든열의 모든 데이터를 조회하되 item_no 기준 오름차순 정렬
# 방법1
SELECT *
FROM 상품목록
ORDER BY item_no

# 방법2
SELECT *
FROM 상품목록
ORDER BY item_no ASC

 

3) 내림차순 (DESC = Descending)

ORDER BY 칼럼1 DESC: 칼럼1을 기준으로 내림차순 정렬해줘

-- 상품목록 테이블 모든열의 모든 데이터를 조회하되 category_id 기준 내림차순 정렬
SELECT *
FROM 상품목록
ORDER BY category_id DESC

 

4) 여러개의 칼럼 순차 정렬

ORDER BY 칼럼1 DEC, 칼럼2 ASC: 칼럼1을 기준으로 내림차순 정렬한 뒤 다시 칼럼2를 기준으로 오름차순 정렬해줘

엑셀과 달리 여러개 칼럼을 차례로 정렬 가능

이 경우 첫번째 칼럼 기준으로 정리하고 그 안에서 다시 다음 칼럼 기준으로 재정렬

-- category_id 기준으로 내림차순 후 그안에서 다시 original_price 기준으로 오름차순
SELECT *
FROM 상품목록
ORDER BY category_id DESC, original_price ASC

 

핵심개념 및 용어정리

1. FROM 특정 테이블에서

2. SELECT 원하는 열을 골라 조회하는데

3. WHERE 그중에서도 원하는 조건에 맞는 데이터/행만 골라서 조회하고

4. ORDER BY 특정 열을 기준으로 오름차순/내림차순으로 정렬

 

기타(공통 인사이트, 의미있었던 의견, 실무 적용사례)

강의에서 배웠던 내용을 복습하는 느낌이어서 문법에 대한 이해도가 높아졌다.

- WHERE과 HAVING의 다른 점을 파악할 수 있었다.

- 별칭 설정시 따옴표의 기능
별칭을 설정할 때는 “ ” 와 ‘ ’ 상관없이 사용 가능설정한 별칭을 GROUP BY와 ORDER BY 절에 사용할 때는 따옴표 없이 작성 가능

'Study > Article' 카테고리의 다른 글

[ATC] 24/12/17  (0) 2024.12.17
[ATC] 24/12/12  (1) 2024.12.12
[ATC] 24/12/10  (0) 2024.12.10
[ATC] 24/12/02  (0) 2024.12.02
[ATC] 24/11/29  (0) 2024.12.01