데이터 조회(SELECT) 가이드

데이터 조회(SELECT) 가이드

데이터를 넣었으면 이제 꺼내 읽을 차례예요. MariaDB에서 데이터를 가져오는 기본 도구는 SELECT 문장인데, 이 가이드는 특정 컬럼만 고르는 것부터 조건·정렬·LIMIT·조인·함수까지 단계적으로 안내해요. 기본 문법에서 조금 더 복잡한 쿼리로 자연스럽게 넘어갈 수 있게 구성돼 있죠.

출처: https://mariadb.com/docs/server/mariadb-quickstart-guides/mariadb-selecting-data-guide

기본 데이터 조회

테이블의 모든 컬럼을 가져오려면 *를 써요.

SELECT * FROM books;

특정 컬럼만 가져오려면 컬럼 이름을 쉼표로 나열해요.

SELECT isbn, title, author_id FROM books;

LIMIT로 행 수 제한하기

처음 N개 행만 가져올 때는 LIMIT N을 써요.

SELECT isbn, title, author_id FROM books LIMIT 5;

오프셋부터 시작할 수도 있는데, 오프셋은 0부터 세요.

SELECT isbn, title, author_id FROM books LIMIT 5, 10;  -- 5개 건너뛰고 다음 10개

조건과 정렬

WHERE로 필터링

WHERE 절로 행 선택 조건을 지정해요.

SELECT isbn, title
FROM books
WHERE author_id = 2
LIMIT 5;

ORDER BY로 정렬

ORDER BY column_name [ASC|DESC]로 결과를 정렬해요.

SELECT isbn, title
FROM books
WHERE author_id = 2
ORDER BY title ASC
LIMIT 5;
  • ASC(오름차순)가 기본이고, DESC는 내림차순이에요.
  • 여러 컬럼으로 정렬할 수 있어요: ORDER BY col1 ASC, col2 DESC.
  • 절 순서: SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT .... MariaDB는 보통 WHEREORDER BYLIMIT 순으로 처리해요.

여러 테이블 다루기와 함수

JOIN으로 테이블 연결

관련 컬럼을 기준으로 두 테이블의 행을 합치려면 JOIN을 써요.

SELECT isbn, title, CONCAT(name_first, ' ', name_last) AS author
FROM books
JOIN authors USING (author_id)
WHERE name_last = 'Dostoevsky'
ORDER BY title ASC
LIMIT 5;
  • JOIN ... USING (author_id) 대신 JOIN ... ON books.author_id = authors.author_id도 가능해요.
  • CONCAT(str1, str2, ...)은 문자열을 이어 붙여요.
  • AS alias_name은 출력 컬럼에 별칭을 붙여요.

LIKE로 패턴 매칭

LIKE를 WHERE 절에서 쓰면 패턴 매칭이 돼요. %는 0개 이상의 문자를 뜻하는 와일드카드예요.

SELECT isbn, title
FROM books
JOIN authors USING (author_id)
WHERE name_last LIKE 'Dostoevsk%'
ORDER BY title ASC
LIMIT 5;

SELECT 문장 수식어

SELECT 키워드 바로 뒤에 붙이는 수식어들이에요.

  • ALL vs DISTINCTALL(기본)은 조건에 맞는 모든 행을, DISTINCT는 선택한 컬럼 기준으로 고유한 행만 돌려줘요.
SELECT DISTINCT title
FROM books
WHERE name_last = 'Dostoevsky'
ORDER BY title;
  • SQL_CALC_FOUND_ROWSFOUND_ROWS()LIMIT을 뺐다면 몇 행이 나왔을지 알고 싶을 때 써요. SELECT SQL_CALC_FOUND_ROWS ...로 쿼리를 실행한 직후 SELECT FOUND_ROWS();를 실행하면 총 개수를 알 수 있어요. 이 값은 임시적이고 현재 세션에 한정돼요.
SELECT SQL_CALC_FOUND_ROWS isbn, title
FROM books
WHERE name_last = 'Dostoevsky'
ORDER BY title
LIMIT 5;

SELECT FOUND_ROWS();

더 알아보기