본문 바로가기
C.W.K.
Stream
Lesson 01 of 10 · published

SELECT — 데이터 가져오기

~12 min · sql, select, querying

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

모든 read의 모양

SQLite DB에서 데이터를 읽는 query는 전부 SELECT로 시작해. 가장 작은 모양은 이래.

SELECT <columns> FROM <table> [WHERE <predicate>] [ORDER BY ...] [LIMIT N]

첫날에 몸에 새길 건 네 가지야.

  • SELECT *는 둘러볼 때나 쓰는 거야. production 코드에서는 절대 쓰지 마. 앱이 schema의 오늘 모양에 통째로 묶여버리거든.
  • 컬럼 자리에는 raw 컬럼만 오는 게 아니야. 표현식도 함수 호출도 문자열 이어붙이기도 다 돼.
  • ASalias를 만들어. query 안에서만 사는 임시 이름이지. 계산해서 만든 컬럼과 self-join에서 요긴해.
  • FROM 없이도 SELECT할 수 있어. SELECT 1+1이나 SELECT datetime('now')처럼 뭘 한번 확인해볼 때 좋아.
Tip: 컬럼을 하나하나 적는 버릇을 첫날부터 들여. production 코드에 남은 SELECT *는 전부 미래의 버그야. 민감한 컬럼이 하나 추가되거나 schema 순서가 바뀌는 순간 조용히 깨지거나 데이터를 흘려.

Code

SELECT 모양들·sql
-- 모든 컬럼 (탐색용만)
SELECT * FROM users;

-- 특정 컬럼
SELECT id, email, username FROM users;

-- 표현식 + alias
SELECT id, email,
       length(email)               AS email_length,
       upper(username)             AS uname_upper,
       email || ' (' || username || ')' AS display
FROM users;

-- FROM 자체 없음
SELECT datetime('now') AS now_utc, 1 + 1 AS two;

External links

Exercise

row 다섯 개짜리 테이블이나 네가 가진 테이블로 SELECT를 다섯 개 써봐. 모든 컬럼을 뽑는 것, 특정 컬럼 두 개만 뽑는 것, alias를 붙인 표현식이 들어간 것, FROM 없는 것, 그리고 alias 두 개가 서로를 참조하는 것(예를 들어 price_with_tax를 계산하고 그걸로 묶기). SQLite가 alias 재사용을 어디서 허용하고 어디서 안 하는지 적어둬.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.