자, 이제 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 부분이 먼저 처리되고 그 다음에 결과가 나와. 내부적으로는 이렇게 돌아가:
FROM에 있는 테이블 처리: 서버가 지정된 테이블을 찾음.- 조건이 있으면 행에 적용: 조건에 맞는 행만 골라냄.
- 지정한 컬럼만 선택: 남은 행에서 필요한 데이터만 뽑음.
즉, 이런 명령에서:
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 쿼리는 그냥 데이터만 뽑는 거라서, 이런 실수로 네 데이터베이스에 손상은 안 가. 하지만 나중에 데이터를 바꾸는 쿼리에서는 실수하면 진짜 큰일 날 수 있어.
구체적인 컬럼 대신 * 사용.
*를 쓰면 모든 데이터를 다 뽑아오니까, 필요 없는 데이터까지 가져오게 돼. 이러면 성능도 떨어지고, 테이블이 크면 더 문제야. 꼭 필요한 컬럼만 선택해서 쓰는 습관을 들이자.
GO TO FULL VERSION