CodeGym /행동 /SQL SELF /SELECT의 기본 문법: 쿼리 구조와 구성요소

SELECT의 기본 문법: 쿼리 구조와 구성요소

SQL SELF
레벨 1 , 레슨 4
사용 가능

자, 이제 SELECT에 대해 슬슬 알아보고 있지? 이건 SQL에서 테이블이나 여러 테이블에서 데이터를 뽑아오는 명령어야. 쉽게 말하면 데이터베이스에서 "뭐 있나 보여줘" 하는 F5 같은 거지. 쿼리의 간단한 구조는 이렇게 생겼어:


        SELECT 컬럼1, 컬럼2, … 컬럼N
        FROM 테이블
        

여기서:

  • SELECT — 쿼리가 이 키워드로 시작해.
  • 컬럼1, 컬럼2, ... — 이건 네가 뽑고 싶은 컬럼들의 리스트야.
  • FROM 테이블 — 데이터를 가져올 테이블을 지정하는 거지.

바로 예시로 쪼개서 볼까!

SELECT 명령의 기본 구조

모든 컬럼 선택하기. 테이블의 모든 데이터를 보고 싶으면 별표 *를 쓰면 돼. 예를 들어 students라는 테이블이 있다고 해보자:

id name age grade
1 Alex 17 A
2 Maria 19 B
3 Otto 21 C

이 테이블에서 모든 데이터를 뽑으려면 이렇게 쿼리하면 돼:


        SELECT * FROM students
        

결과는 이런 컬럼과 행들이 나올 거야:

id name age grade
1 Alex 17 A
2 Maria 19 B
3 Otto 21 C

즉 — 테이블 전체가 그대로 나오는 거지.

특정 컬럼만 선택하기

사실 대부분은 필요한 컬럼만 뽑는 게 좋아. 괜히 쓸데없는 데이터까지 가져올 필요 없잖아. 예를 들어 이름이랑 나이만 알고 싶으면 이렇게 쿼리하면 돼:


        SELECT name, age FROM students
        

이 쿼리의 결과는 이렇게 나와:

name age
Alex 17
Maria 19
Otto 21

차이 알겠지? 필요한 컬럼만 뽑으면 쿼리도 더 빠르고 보기 좋아.

쿼리 실행 순서

SQL 쿼리는 좀 헷갈릴 수 있어: 우리가 SELECT를 맨 앞에 쓰지만, 실제로는 FROM 부분이 먼저 처리되고 그 다음에 결과가 나와. 내부적으로는 이렇게 돌아가:

  1. FROM에 있는 테이블 처리: 서버가 지정된 테이블을 찾음.
  2. 조건이 있으면 행에 적용: 조건에 맞는 행만 골라냄.
  3. 지정한 컬럼만 선택: 남은 행에서 필요한 데이터만 뽑음.

즉, 이런 명령에서:


        SELECT name FROM students
        

먼저 서버가 students 테이블을 찾고, 그 다음 name 컬럼을 읽고, 마지막에 결과를 돌려주는 거야.

실전 예시

예시 1: 학생 목록.

네가 대학 관리자라고 해보자. 모든 학생의 이름이 필요해. 쿼리는 이렇게:

SELECT name
FROM students;

결과:

name
Alex
Maria
Otto

예시 2: 나이와 id 추가.

이번엔 id, 이름, 나이가 다 필요하다면 컬럼만 더 추가하면 돼:

SELECT name, age, id
FROM students;

결과:

name age id
Alex 17 1
Maria 19 2
Otto 21 3

예시 3: 식(expression) 추가.

예를 들어 학생들이 성인이 되려면 몇 년 남았는지 알고 싶다고 해보자.

그럼 age 대신 21-age를 쓰면 돼. 여기선 성인이 21살이라고 가정한 거야:

SELECT name, 21-age
FROM students;

결과는 이렇게 나와:

name 21-age
Alex 4
Maria 2
Otto 0

식(expression)에 대해서는 다음 강의에서 더 자세히 다룰 거야. 이제 자주 하는 실수들도 한번 보자.

SELECT 쓸 때 자주 하는 실수

테이블/컬럼 이름 오타.

가장 흔한 실수 중 하나가 테이블이나 컬럼 이름을 잘못 쓰는 거야.

만약 데이터베이스에 studentsz라는 테이블이 없으면 이런 에러가 나와:

SELECT name
FROM studentsz; -- 에러: 테이블 없음!

또는 컬럼 이름이 name인데 student_name이라고 쓰면 또 에러:

SELECT student_name -- 에러: 컬럼 없음!
FROM students;

해결법은 간단해: 항상 테이블과 컬럼 이름을 잘 확인하자.

쿼리 문법 오류.

또 자주 하는 실수는 컬럼 나열할 때 콤마(,)를 빼먹는 거야:

SELECT name age id -- 에러: 콤마 없음!
FROM students; 

근데 너무 걱정하지 마. SELECT 쿼리는 그냥 데이터만 뽑는 거라서, 이런 실수로 네 데이터베이스에 손상은 안 가. 하지만 나중에 데이터를 바꾸는 쿼리에서는 실수하면 진짜 큰일 날 수 있어.

구체적인 컬럼 대신 * 사용.

*를 쓰면 모든 데이터를 다 뽑아오니까, 필요 없는 데이터까지 가져오게 돼. 이러면 성능도 떨어지고, 테이블이 크면 더 문제야. 꼭 필요한 컬럼만 선택해서 쓰는 습관을 들이자.

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