확인한 환경과 범위

Windows · SQLite 3.45.3. 본문의 첫 예제를 실행하여 표준 출력과 예상 결과가 일치함을 확인했습니다. 연습문제의 모든 입력을 검증한 것은 아닙니다.

이 글의 순서 5개 단락

상품 목록에서 이름과 가격만 보고 싶을 때는 테이블의 모든 내용을 가져올 필요가 없습니다. SQLite의 SELECT와 FROM을 사용하면 조회할 열과 데이터의 출처를 지정할 수 있습니다.

테이블의 행과 열

테이블은 데이터를 행과 열로 정리한 구조입니다. 상품 테이블에서는 한 행이 상품 하나를 나타내고, name과 price 같은 열은 각 상품의 이름과 가격을 나타냅니다. 행과 열이 만나는 곳에는 해당 상품의 값이 들어갑니다.

핵심은 FROM으로 조회할 대상을 지정하고, SELECT로 결과에 표시할 열을 고르는 것입니다. SELECT *는 대상의 모든 열을 선택합니다.

전체 열과 원하는 열 조회하기

실습 환경은 SQLite입니다. 다음 예제는 WITH와 VALUES로 각 조회문에서 사용할 상품 데이터를 직접 준비하므로 별도의 테이블이나 파일이 필요하지 않습니다. WITH products(id, name, price) AS (...)는 한 문장 동안 테이블처럼 사용할 products를 정의하고 열 이름을 붙입니다. VALUES의 괄호 하나가 행 하나이며, 각 값은 지정된 열 순서에 대응합니다.

WITH products(id, name, price) AS (
  VALUES (1, '노트', 3000),
         (2, '펜', 1500)
)
SELECT * FROM products;

WITH products(id, name, price) AS (
  VALUES (1, '노트', 3000),
         (2, '펜', 1500)
)
SELECT name, price FROM products;

테이블을 이해하고 데이터 조회하기 — 첫 예제의 실제 실행 결과

입력 데이터는 상품 두 행입니다. 첫 번째 조회의 예상 결과는 다음과 같습니다.

idnameprice
1노트3000
2펜1500

두 번째 조회의 예상 결과는 다음과 같습니다.

nameprice
노트3000
펜1500

결과의 표시 형식은 사용하는 SQLite 실행 환경에 따라 다를 수 있습니다. 또한 정렬을 지정하지 않았으므로 행이 위 표의 순서로 나온다고 보장되지는 않습니다.

조회 결과가 만들어지는 이유

첫 문장에서 FROM products는 준비한 상품 데이터를 조회 대상으로 지정하고, SELECT *는 id, name, price를 모두 결과에 넣습니다. 두 번째 문장의 SELECT name, price는 같은 데이터에서 이름과 가격만 지정한 순서로 반환합니다. 두 조회 모두 행을 걸러내는 조건이 없으므로 상품 두 행이 결과에 포함됩니다.

WITH로 정의한 products는 해당 SQL 문장 안에서만 사용할 수 있습니다. 따라서 독립적인 두 번째 조회문에도 같은 데이터 정의가 필요합니다. SELECT는 데이터를 읽어 결과를 만들며 원본 데이터를 변경하지 않습니다.

흔한 실수와 경계 조건

열 이름을 여러 개 쓸 때는 name, price처럼 쉼표로 구분합니다. 존재하지 않는 열이나 테이블 이름을 쓰면 조회할 대상을 찾을 수 없어 오류가 납니다. 예를 들어 products를 정의하지 않은 별도의 문장에서 FROM products를 사용하면 이 예제의 임시 데이터에 접근할 수 없습니다.

*는 모든 열을 뜻하며 모든 행을 정렬한다는 뜻은 아닙니다. 조회 대상에 행이 없으면 결과에도 행이 없습니다. 결과를 일정한 순서로 보려면 정렬을 지정해야 하며, 정렬은 다음 강의에서 다룹니다.

연습: 가격만 조회하기

위 예제의 두 번째 문장에서 상품 이름은 빼고 가격만 조회해 보세요. WITH로 상품 데이터를 준비하는 부분은 그대로 두고 조회 부분을 다음과 같이 바꿉니다.

SELECT price FROM products;

예상 결과는 price 열 하나에 3000과 1500이 각각 들어 있는 두 행입니다. SELECT에 price만 지정했기 때문에 다른 열은 표시되지 않습니다. 행의 표시 순서는 보장되지 않습니다.

CHECK THE SOURCE

참고한 공식 문서

기능 설명은 위 문서를 참고했으며, 예제의 입력·결과와 한계는 본문에 따로 기록했습니다.

한 줄씩 이해하고, 차곡차곡 기록합니다.이 글의 오류 제보하기 ↗