메인 콘텐츠로 건너뛰기

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
SELECT는 테이블에서 행을 읽어 냅니다. 이 레슨은 가장 작고 쓸모 있는 형태를 다룹니다: 테이블 이름을 쓰고, 열 이름을 몇 개 쓰고, 행을 돌려받는 것입니다. 모든 예제는 Sakila 데이터베이스를 조회합니다. 아직 로드하지 않았다면 먼저 Sakila를 로드한 다음, mysql -u root -p sakila로 클라이언트를 열어 sakila가 현재 데이터베이스가 되게 하세요.

SELECT의 동작 방식

COLUMN_LIST는 각 행에서 원하는 것으로, 보통 쉼표로 구분한 열 이름입니다. TABLE_NAME은 행이 나오는 테이블입니다. 문은 세미콜론에서 끝납니다. 클라이언트는 세미콜론을 찾을 때까지 계속 읽으므로, 세미콜론이 없는 줄은 계속 입력을 기다리는 프롬프트에 머물게 합니다:

예제

  1. 열 하나 선택하기

film 테이블에 각 영화의 제목만 요청합니다.
테이블의 모든 행에 대해 1개의 행이 돌아오며, 여기서는 1,000개입니다. SELECT는 스스로는 아무것도 걸러내지 않습니다. 어떤 행을 받을지 고르는 것은 WHERE의 일입니다.

  1. 여러 열 선택하기

열 이름을 쉼표로 구분하세요. 요청한 순서대로 돌아오며, 테이블에 놓인 순서와 같을 필요는 없습니다.

  1. 모든 열 선택하기

별표는 테이블의 모든 열을 뜻합니다. language 테이블에는 6개의 행이 있으므로, 이 쿼리는 완전한 결과를 출력합니다.
SELECT *는 모르는 테이블을 탐색하는 동안에는 제 몫을 합니다. 애플리케이션 코드 안에서는 열의 이름을 쓰세요. 별표는 코드가 읽든 말든 모든 열을 네트워크로 보내고, 누군가 열을 추가하는 날 코드 아래에서 형태가 바뀝니다.

  1. 값 계산하기

SELECT 목록에 열 이름만 써야 하는 것은 아닙니다. 식을 넣으면 그 결과가 별도의 열이 됩니다.
세 번째 열의 제목은 입력한 식 그대로인데, 정확하지만 보기 흉합니다. 열 별칭이 직접 지은 이름을 붙여 줍니다.

사람들이 걸려 넘어지는 2가지

키워드는 대소문자를 무시합니다. SELECT, select, SeLeCt 모두 실행됩니다.
이 튜토리얼은 관례로 키워드를 대문자로, 그 밖의 모든 것을 소문자로 씁니다. 긴 쿼리의 형태가 한눈에 읽히도록 하기 위한 관례입니다. 철자가 틀린 열은 오류를 냅니다. MySQL은 무엇을 의도했는지 추측하지 않고, 빈 결과를 돌려주지도 않습니다.
field list는 서버가 SELECT 목록을 부르는 이름이므로, 그 메시지는 무엇이 잘못되었는지뿐 아니라 그 위치도 알려줍니다. 잘못된 이름이 문장의 다른 곳에 있으면 같은 오류의 끝부분이 달라지므로, 찾아 나서기 전에 메시지의 끝을 읽으세요.

요약

  • 행을 읽으려면 SELECT에 열 목록을, FROM에 테이블을 쓰세요.
  • 돌려받고 싶은 순서대로 열을 나열하세요.
  • 탐색할 때는 SELECT *를 쓰고, 애플리케이션 코드에서는 열의 이름을 쓰세요.
  • 행마다 값을 계산하려면 SELECT 목록에 식을 넣으세요.
  • 열 이름이 틀리면 ERROR 1054가 난다고 예상하세요.

함께 보기