요청사항을 쿼리로 어느 정도 번역할 줄 알게 되었다면 이번 글에서는 SQL문으로 번역 내용을 작성하는 법을 배워보겠습니다. SQL 문법에는 여러 가지 중요한 키워드나 구문들이 많지만 그중에서도 SELECT, FROM, WHERE 이 세 가지를 사용하는 것이 가장 기본적인 구문이라고 할 수 있습니다. 처음 보는 것들이어서 생소하겠지만 가만히 살펴보면 참 쉽습니다.
SELECT “원하는 값을 고른다”.
FROM 그 값을 “어느 테이블로부터” 가져온다.
WHERE 그 값은 그 테이블에 “어느 위치”에 있는 값이다. (조건)
해당 키워드들이 단어의 뜻 그대로 기능을 하기 때문에 외우기가 참 쉽죠? 그렇다면 이것을 실제로 어떻게 적용하는지 이전 글에서 보았던 예시를 이번에도 사용하면서 SQL 문법에 맞게 작성해 보도록 하겠습니다. (테이블에 대해선 아래에 설명해 드리겠습니다.)
- 요청사항: 2023년 12월에 신규 가입한 사용자의 아이디
- 값: 사용자 아이디 (SELECT)
- 테이블:??? (FROM)
- 조건: 2023년 12월 가입 (WHERE)

위에 번역한 내용을 그대로 SQL 문법에 대입하자면 이와 같은데요. 조건을 지정하는 키워드가 WHERE인 이유는 위의 그림처럼 테이블 내에 기록된 데이터 중 내가 원하는 조건의 값이 어느 위치(WHERE)에 있는 값인지 지정을 해줘야 DB가 알아듣고 그 값을 가져오기 때문입니다.
그런데 SELECT, WHERE는 번역한 내용을 대입해서 채워지지만 FROM에는 어떤 것을 채워야 하는지 잘 모르겠습니다. 위의 설명대로라면 FROM에는 내가 원하는 값을 어떤 테이블로부터 가져오는지를 대입하는 곳인데 번역내용에는 해당 내용을 없으니 대입할 것이 없는 게 당연합니다.
갑자기 테이블이라는 새로운 개념이 또 등장해서 당황스럽지만 이것도 크게 어렵지 않습니다.
데이터는 보통 하나의 큰 데이터베이스(DB) 안에 각각 목적을 가진 여러 개의 테이블로 쪼개져 저장되어 있는데요. 그냥 하나에 몰아서 저장하면 편한데 왜 여러 테이블로 쪼개져있는지 의문이 생길 수 있겠지만 이는 데이터를 효율적으로 관리하기 위해서 그렇습니다. 이해하기 쉬운 예시를 들어보겠습니다. 우리가 들고 다니는 가방 안에는 노트북 파우치, 필통, 세면도구 파우치와 같이 작은 가방들이 여러 개 들어있습니다. 여기서 큰 가방은 가방이라는 기능을 가진 DB라고 볼 수 있고, 그 DB안에 각각의 목적을 갖는 물건들이 모인 노트북 파우치, 필통과 같은 작은 가방들이 테이블로 대응된다고 볼 수 있습니다. 만약 이런 작은 가방 없이 모든 물건이 가방에 섞여 있다면 내가 원하는 물건을 찾기 위해선 한참을 뒤적여야겠죠.
우리가 DB에서 데이터를 꺼내는 것은 마치 가방에서 펜을 꺼내는 것과 같습니다. 가방을 열고 필통을 찾아 내가 원하는 펜을 꺼내는 것처럼 DB를 열고 내가 원하는 값이 담긴 테이블을 찾아 필요한 값을 꺼내오는 것입니다. 펜의 위치를 모르면 펜을 꺼낼 수 없는 것처럼 우리가 원하는 값이 어느 테이블에 있는지 알아야 값을 찾아올 수 있습니다.
알고 있어야 하는 게 참 많죠?
다행히도 대부분은 요청사항에서 어떤 테이블에서 꺼내오면 좋을지에 대한 힌트를 찾아낼 수 있습니다. 요청사항을 다시 살펴보면, 조건인 2023년 12월 가입을 확인하기 위해선 사용자의 가입일자를 알아야 합니다. 또 원하는 값인 아이디를 가져오기 위해선 사용자(회원)와 관련된 기능을 하는 테이블에 있을만한 내용으로 보이네요. 그렇기 때문에 FROM에는 사용자(회원) 테이블이 들어가야 합니다.
SELECT 사용자 아이디
FROM 사용자(회원) 테이블
WHERE 가입일이 2023년 12월
SQL의 기본 중의 기본 SELECT, FROM, WHERE에 대해서 이해가 되셨나요? 다음 글에서는 예제를 통해 세 가지 구문을 좀 더 이해해 볼 수 있도록 하겠습니다.
함께 성장해요.
'데이터분석' 카테고리의 다른 글
[SQL 기본] 집계 함수 (2) | 2024.01.08 |
---|---|
[SQL 기본] 정말 쉬운 예시 (1) | 2023.12.22 |
[SQL 기본] 요청사항을 쿼리로 번역하기 (1) | 2023.12.18 |
[SQL 기본] 그래서 쿼리가 뭐에요? (0) | 2023.12.13 |
비전공자도 데이터 다루는걸 배워야하는 이유(2) (3) | 2023.12.07 |