데이터 베이스/SQL 첫걸음(인프런 강의)

Ch04. 조회와 정렬 - Select(조회)

webmaster 2025. 10. 13. 18:25
728x90

데이터베이스는 데이터를 저장하는 창고다. 하지만 창고에 물건을 쌓아두기만 하면 아무 의미가 없다. 필요할 물건을 꺼내서 확인하고, 사용해야 가치가 있다. 바로 '데이터를 꺼내보는 행위' 조회라고 한다. 그리고 조회를 사용하는 가장 기본적인 명령어가 바로SELECT.

 

가장 간단한 데이터 조회

데이터를 조회하는 가장 기본적이고 간단한 방법부터 알아보자. SELECT FROM  가지 키워드만 알면 된다.

  • SELECT : 무엇을 가져올 것인가? (조회할 열, 즉 컬럼을 지정한다)
  • FROM : 어디에서 가져올 것인가? (데이터가 들어있는 테이블을 지정한다)

가장 단순하게 customers라는 테이블에 들어있는 모든 고객 정보를 전부 꺼내보고 싶다고 해보자. 이럴 모든 (컬럼) 의미하는 특별한 기호인 *(애스터리스크, Asterisk) 와일드카드를 사용한다.

select *
from customers;
  • SELECT * FROM 테이블이름; ->  이 구문은 "이 테이블에 있는 모든 열의 데이터를 다 보여줘" 라는 의미다.
  • Select *은 테이블의 구조나 내용을 빠르게 확인할 때 유용하다.

필요한 데이터만 골라보는 이유

"SELECT *"  분명 편리하지만, 항상 좋은 것만은 아니다. 만약 customers 테이블에 수백만 명의 고객 데이터가 들어있고, (Column) 50개가 넘는다고 상상해 봐라. 그저 이름과 이메일만 확인하고 싶을 뿐인데, SELECT 용하면 어떤 문제가 발생할까?

1) 성능저하: 불필요한 데이터까지 모두 읽어오느라 데이터베이스 시스템에 부담을 준다. 조회 속도가 당연히 려진다.

2) 가독성 저하: 내가 보고 싶은 데이터는 '이름' '이메일' 뿐인데, 수십 개의 열이 함께 표시되니 한눈에 파악하기 어렵다.

3) 네트워크 트래픽 낭비: 데이터베이스 서버에서 우리 컴퓨터(클라이언트) 데이터를 전송할 , 필요 없는 데이터까지 함께 보내므로 네트워크 자원을 낭비하게 된다

 

그래서 실무에서는 "SELECT *" 사용을 최소화하고, 필요한 열만 명시적으로 지정해서 조회하는 습관을 들여야 .

참고
우리는 학습을 목적으로 MySQL 데이터베이스 서버 MySQL 워크벤치 같은 클라이언트 도구 컴퓨터에 함께 설치했다.
일반적으로는 데이터베이스 서버 별도의 컴퓨터에 설치하고, 사용자는 자신의 PC에서 MySQL 워크벤치 같은 클라이언트 접속 도구 이용해 서버에 접속한다.

특정 열만 선택하기

SELECT 열이름1, 열이름2, ... FROM 테이블이름;
  • "SELECT *" 대신, SELECT 절에 직접 보고 싶은 열의 이름들을 콤마(,)로 구분하여 적어주면 된다.
SELECT name, email FROM customers;

결과

  • name과 email 열만 깔끔하게 조회된다.

열 이름에 별칭(Alias) 붙이기: AS

이름에 '별칭(Alias)' 붙여서 조회 결과의 헤더를 바꿀 있다. AS 키워드를 사용한다

SELECT 열이름1 AS 별칭1, 열이름2 AS 별칭2, ... FROM 테이블이름;

결과

  • 결과 테이블의 헤더(머리글)가 우리가 지정한 '고객명'과 '이메일'로 바뀐 것을 볼 수 있다. 

별칭을 사용하는 이유?

  • 가독성 향상: 조회 결과를 '고객명', '이메일' 처럼 한글로 표시하면, 이해하기 쉬운 보고서가 된다.
  • 열 이름의 충돌 방지: 여러 테이블을 JOIN해서 조회할 때, 서로 다른 테이블에 같은 이름의 열이 존재할 수 있다. 이때, 별칭을 사용해 각 열을 명확하게 구분할 수 있다.

AS 키워드는 생략하고 "SELECT 열이름1 별칭 1"과 같이 사용할 수도 있지만, 쿼리를 명확하게 만들기 위해 AS를 써주는 것이 좋다.

SELECT name 고객명, email 이메일 FROM customers;
별칭 이름 짓는 룰
별칭도 앞서 배운 테이블과 컬럼 이름 규칙을 따르면 된다. 별칭도 마찬가지로 백틱으로 감싸면 특수문자를 사용할 수 있다.
728x90