CodeGym /행동 /SQL SELF /특정 컬럼 선택하기: 컬럼 이름으로 데이터 뽑기

특정 컬럼 선택하기: 컬럼 이름으로 데이터 뽑기

SQL SELF
레벨 2 , 레슨 0
사용 가능

DB에서 데이터를 뽑을 때, 사실 모든 컬럼이 다 필요한 경우는 거의 없어. 예를 들어 employees 테이블에 15개 컬럼이 있다고 치자: 이름, 성, 생일, 직책, 월급, 입사일 등등. 근데 너한테 필요한 건 이름이랑 직책뿐이야. 굳이 다 끌고 오는 건 쓸데없고 비효율적이지. 그래서 필요한 컬럼만 뽑는 게 진짜 중요해.

비유하자면, 오렌지, 사과, 바나나가 섞인 바구니에서 사과만 골라내는 거랑 똑같아. 멋지지? 우리도 이걸 해볼 거야!

문법

참고로, SQL은 진짜 user-friendly하게 만들어졌어.

첫째, 쿼리에서 대소문자는 상관없어. SELECT, Select, select 아무렇게나 써도 다 돌아가. 둘째, 줄바꿈도 신경 안 써도 돼. DBMS가 알아서 한 줄로 만들어주니까, 네가 편한 대로 쓰면 돼.

이미 눈치챘겠지만, SELECTFROM만 있다고 끝나는 게 아니야. 그랬으면 SQL 얘기가 이렇게 많지도 않았겠지. 좀 더 확장된 SQL 쿼리는 이렇게 생겼어:

SELECT 컬럼들
FROM 테이블
WHERE 조건
GROUP BY 컬럼들
HAVING 컬럼들
ORDER BY 정렬

여기서:

  • 컬럼들 — 네가 뽑고 싶은 컬럼 이름들이야.
  • 테이블 — 데이터를 가져올 테이블 이름.
  • 조건 — 행을 필터링할 조건.
  • 정렬 — 정렬할 컬럼과 순서.

쉽지? 실제 예제로 바로 가보자. 근데 일단 간단한 예부터 해보자.

기본 쿼리 예제

예를 들어 students 테이블이 있다고 해보자. 학생 정보가 들어있지. 테이블 구조는 대충 이래:

id first_name last_name age grade
1 Alex Lin 20 A
2 Anna Song 22 B
3 Otto Art 19 A

이제 우리한테 필요한 건 학생들의 last_name이랑 grade만이야.

쿼리는 이렇게 써:

SELECT last_name, grade
FROM students;

실행 결과:

last_name grade
Lin A
Song B
Art A

축하해! DB 리소스도 아끼고 결과도 훨씬 보기 좋아졌어!

문자열 합치기

이제 데이터 뽑는 건 할 줄 아니까, 좀 더 재밌는 거 해보자. 테이블에 이름이랑 성이 따로 저장돼 있잖아? 학생의 전체 이름을 한 컬럼에 보여주고 싶을 때가 있지.

PostgreSQL에서는 || 연산자로 문자열을 합칠 수 있어. SELECT 쿼리는 이렇게 돼:

SELECT first_name || last_name, grade
FROM students;

실행 결과:

first_name || last_name grade
AlexLin A
AnnaSong B
OttoArt A

음. 뭔가 부족하지? 이름이랑 성 사이에 공백이 없어! 이거 고쳐보자.

SELECT first_name || ' ' || last_name, grade
FROM students;

실행 결과:

first_name || ' ' || last_name grade
Alex Lin A
Anna Song B
Otto Art A

좋아. 결과 테이블 내용은 맘에 드는데, 컬럼 이름이 좀 별로지? full name이나 name처럼 보이면 좋은데, first_name || ' ' || last_name은 좀 별로잖아. 이럴 때도 방법이 있어.

Alias(별칭) 사용해서 컬럼 이름 바꾸기

SQL 쿼리는 alias를 써서 더 읽기 쉽게 만들 수 있어. alias는 쿼리 안에서 컬럼에 새 이름을 붙여주는 거야. AS 키워드를 쓰는데, 사실 생략해도 되지만 가독성을 위해 쓰는 게 좋아.

예시를 보자:

SELECT first_name AS "이름", last_name AS "성", grade AS "성적"
FROM students;

실행 결과:

이름 성적
Alex Lin A
Anna Song B
Otto Art A

여기서 우리는:

  1. 컬럼 이름을 한글로 더 알아보기 쉽게 바꿨어.
  2. 쿼리에서 AS로 alias를 썼어.

사장님이나 클라이언트한테 데이터 보여줄 때, 표가 보기 좋게 나오게 하려면 alias가 진짜 꿀팁이야.

이제 전체 이름 뽑는 쿼리도 좀 더 예쁘게 만들어보자.

SELECT first_name || ' ' || last_name  AS "전체 이름", grade  AS "성적"
FROM students;

실행 결과:

전체 이름 성적
Alex Lin A
Anna Song B
Otto Art A

완벽. 우리가 원하던 대로야.

왜 필요한 컬럼만 뽑아야 할까?

  1. 성능

수백만 행, 수백 컬럼짜리 테이블에서 SELECT *로 다 뽑으면 몇 분, 심하면 몇 시간 걸릴 수도 있어. 서버 리소스도 엄청 잡아먹고. 필요한 것만 뽑으면 훨씬 효율적이지.

  1. 가독성

필요한 컬럼만 뽑으면 결과가 훨씬 보기 쉬워. 안 그러면 금요일 저녁에 뉴스 피드 읽는 기분 날걸?

  1. 실수 줄이기

쿼리에서 다루는 데이터가 적을수록 실수할 확률도 줄어. 특히 그 데이터를 또 가공할 때 더더욱.

뭐 기억해야 할 거?

테이블 alias

테이블 이름이 길면 alias를 쓰는 것도 좋아. 원래 이름이랑 비슷하거나, 내용과 관련된 짧은 이름으로 쓰면 돼.

SELECT sa05.first_name, sa05.course_id
FROM students_archive_2005 AS sa05

이 방법은 테이블 이름이 university_students_enrollments_records처럼 길 때 usr이나 us처럼 줄여서 쓰면 진짜 편해.

특정 컬럼 선택할 때 흔히 하는 실수

  1. 컬럼 이름 오타. 컬럼 이름을 잘못 쓰면 이런 에러가 떠: ERROR: column "lastname" does not exist. 컬럼 이름 제대로 썼는지 꼭 확인하자.

  2. 이름 충돌. 여러 테이블을 쓸 때는, 컬럼이 어느 테이블 건지 꼭 명시해줘야 해. 예를 들어 students.first_name처럼.

  3. SELECT * 쓰기 — 초보자들이 자주 빠지는 함정. 물론 편하긴 한데, 큰 프로젝트에서는 진짜 별로야! 꼭 필요한 컬럼만 뽑자.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION