Re:제로부터 시작하는 갓생
[ATC] 24/11/28 본문
오늘의 아티클 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 |