어떻게 묻는 언어, SQL
표가 가득한 데이터베이스 앞에 섰다고 하자. 그 안에서 원하는 것만 꺼내려면 어떻게 해야 할까? 사람에게 묻듯이 데이터베이스에도 또박또박 물어보면 된다. 어떤 열을 볼지 고르고, 어떤 줄만 남길지 조건을 말하는 것이다. 이렇게 묻는 데 쓰는 언어가 SQL이에요.
데이터베이스에 물어본다
앞에서 데이터베이스가 표들이 모인 창고라는 것을 보았다. 표 안에는 줄과 칸이 가지런하다. 그런데 그 많은 줄 가운데 원하는 것만 어떻게 꺼낼까?
사람에게 묻듯이 물어보면 된다. 다만 말투를 미리 정해 둔다. '스무 살 이상인 사람의 이름을 알려 줘' 같은 사람의 말을 정해진 말투로 바꾸어 보내면 데이터베이스가 알아듣고 답해 줘요.
사람 말 조각을 차례로 눌러 묻는 말로 바꿔 보자. 보고 싶은 열과 조건을 고르면 정해진 말투가 만들어져요.
사람의 말이 묻는 말로 바뀌었다. 잘 보면 두 부분으로 나뉜다. 하나는 어떤 열을 볼지, 다른 하나는 어떤 줄만 남길지다.
여기에 어느 표에서 꺼낼지를 FROM으로 덧붙이면 묻는 말이 완성돼요. 복잡해 보여도 속은 단순하다. 먼저 열 고르기부터 차근차근 살펴보자.
보고 싶은 열을 골라요, SELECT
표에는 열이 여러 개 있다. 이름, 나이, 도시 같은 것들이다. 그런데 언제나 모든 열이 필요하지는 않다. 이름만 보고 싶을 때도 있다.
그럴 때는 보고 싶은 열만 고른다. 고른 열만 남고 나머지는 가려져요. 이렇게 열을 고르는 것을 SELECT라고 부른다. 결과에 무엇을 보여 줄지 정하는 부분이에요.
보고 싶은 열의 머리를 눌러 보자. 고른 열만 남고 나머지 열은 가려져요. 다시 누르면 풀린다.
필요한 열만 깔끔하게 남았다. 표가 한결 보기 쉬워졌다. 그런데 열만 골라서는 부족할 때가 있다. 줄은 여전히 다 남아 있기 때문이다.
나이가 몇 살이든 모든 사람이 보여요. 우리는 보통 '스무 살 이상인 사람만'처럼 조건을 걸어 묻는다. 이번에는 줄을 걸러 보자.
조건으로 줄을 걸러요, WHERE
이번에는 줄 차례다. 표의 모든 줄이 다 필요하지는 않다. 원하는 줄에는 나이가 스무 살 이상이라는 것 같은 공통점이 있다.
그 공통점을 조건으로 적는다. 조건에 맞는 줄만 남고 맞지 않는 줄은 빠져요. 이렇게 줄을 거르는 것을 WHERE라고 부른다. 어떤 것만 남길지 정하는 부분이에요.
조건을 눌러 걸어 보자. 나이가 그 조건에 맞는 줄만 남고, 맞지 않는 줄은 흐려지며 빠져요.
조건에 맞는 줄만 남고 나머지는 조용히 빠졌다. 이제 열 고르기와 줄 거르기를 모두 익혔다.
그런데 진짜 힘은 둘을 합칠 때 나와요. 보고 싶은 열을 고르면서 원하는 줄만 남기면, 딱 필요한 만큼만 남은 표가 나온다. 둘을 한꺼번에 써 보자.
둘을 합치면 결과 표
이제 두 솜씨를 한 번에 써 보자. 조건으로 줄을 거르면 조건에 맞는 줄만 남는다. 그 줄에서 보고 싶은 열만 고르면 그 열만 보인다.
고른 열과 거른 줄이 만나는 자리에 작은 결과 표가 생겨요. 물음에 딱 맞는 답이 표로 나온 것이다. 실제 데이터베이스는 거르기를 먼저 하고 열을 고르지만, 어느 쪽부터 생각해도 결과는 같다.
열 고르기와 조건 거르기를 차례로 눌러 보자. 둘을 합치면 조건에 맞는 줄과 고른 열만 남은 결과 표가 만들어져요.
원하던 답이 표로 나왔다. 많은 줄과 열 가운데 묻는 말 하나로 딱 필요한 만큼만 골라냈다. 사람이 일일이 눈으로 훑지 않아도 데이터베이스가 알아서 골라 준다.
표가 백만 줄이어도 같은 방식이에요. 앞에서 본 인덱스가 있으면 데이터베이스는 그것을 써서 조건에 맞는 줄을 더 빨리 찾는다. 묻는 말만 잘 적으면 답은 금방 온다.
정리
한 줄로 모으면 이렇다. SQL은 데이터베이스에 묻는 언어다. 어떤 열을 볼지 고르는 것이 SELECT, 어떤 줄만 남길지 거르는 것이 WHERE다.
둘을 합치면 조건에 딱 맞는 결과 표가 나와요. 묻는 말 하나로 원하는 답을 표로 받는 것, 이것이 SQL의 기본이다.
핵심을 차례로 눌러 되짚어 보자. (묻는 언어 SQL → 열 고르기 SELECT → 줄 거르기 WHERE → 합치면 결과 표)
이제 데이터베이스에 또박또박 묻는 법을 알았다. 원하는 열을 고르고 줄을 걸러 필요한 답만 받아 오는 솜씨다.
그런데 지금까지는 표 하나만 다뤘어요. 실제로는 사람 표 따로, 주문 표 따로처럼 정보가 여러 표에 나뉘어 있는 경우가 많다. 다음 레슨에서는 여러 표를 이어서 묻는 방법, 조인을 다룬다.