Simple SELECT Query

SELECTλ¬Έ(statement)은 ν…Œμ΄λΈ”μ„ μ‘°νšŒν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

이전 μž₯의 Hello, World μ˜ˆμ‹œμ—μ„œ SELECT λ¬Έμž₯은 ν…Œμ΄λΈ” ν˜•νƒœμ˜ κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄ 화면에 λ³΄μ—¬μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. ν…Œμ΄λΈ”μ„ 쑰회 ν•˜κΈ° μœ„ν•΄μ„œλŠ” κ·Έ λŒ€μƒμ„ λ§Œλ“œλŠ” 과정이 μ„ ν–‰λ˜μ–΄μ•Ό ν•˜λŠ”λ° SELECTλ¬Έμž₯이 κ·Έ 역할을 ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

이미 λ§Œλ“€μ–΄μ Έ μ–΄λ”˜κ°€μ— μ €μž₯된 ν…Œμ΄λΈ”μ„ μ‘°νšŒν•˜λŠ” κ²½μš°μ—λ„ λ‚΄μš©λ¬Όμ„ κΊΌλ‚΄ 쑰회λ₯Ό μœ„ν•œ 결과물을 λ§Œλ“œλŠ” 과정이 ν•„μš”ν•©λ‹ˆλ‹€. (CREATE TABLE은 ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜κΈ° λ³΄λ‹€λŠ” ν…Œμ΄λΈ”μ΄ λ“€μ–΄κ°ˆ 곡간을 λ§ˆλ ¨ν•˜κ³  SELECTλ‚˜ INSERT문이 μƒμ„±ν•œ 결과물을 μ €μž₯ ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.)

이처럼 SELECT문은 ν…Œμ΄λΈ”μ„ λ§Œλ“€μ–΄ λ‚΄λŠ” 역할을 ν•©λ‹ˆλ‹€. SELECT문은 μ—¬λŸ¬ 절(clause)둜 μ΄λ£¨μ–΄μ§€λŠ”λ° κΈ°λ³Έ κ΅¬μ„±μš”μ†ŒλŠ” SELECT, FROM, WHERE μ ˆμž…λ‹ˆλ‹€.

Conveyor Belt [그림좜처 - https://www.pngwing.com/en/free-png-xvssn]

μ—¬κΈ°μ„œ 잠깐 곡μž₯μ—μ„œ μ›μž¬λ£Œκ°€ μ œν’ˆμœΌλ‘œ λ§Œλ“€μ–΄μ§€λŠ” 과정을 ν•œ 번 상상해 λ³΄κ² μŠ΅λ‹ˆλ‹€.

μžμž¬μ°½κ³ μ—λŠ” μ›μžμž¬κ°€ λ³΄κ΄€λ˜μ–΄ 있고 μ‘°λ¦½λΌμΈμ—μ„œ ν•„μš”λ‘œ ν•˜λŠ” μžμž¬λ“€μ„ 컨베이어 λ²¨νŠΈμ— μ‹€μ–΄ λ‚˜λ₯΄λ©΄ 각 μ‘°λ¦½λΌμΈμ—μ„œλŠ” μž‘μ—… μ§€μ‹œμ„œμ— μ˜ν•΄μ„œ μ œν’ˆμ„ κ°€κ³΅ν•˜κ³  μ™„μ„±λœ μ œν’ˆμ„ μ™„μ œν’ˆ 창고에 μ μž¬ν•©λ‹ˆλ‹€.

λΉ„μœ ν•˜μžλ©΄ SELECT ν˜Ήμ€ SELECT listμ ˆμ€ μž‘μ—…μ§€μ‹œμ„œμ— μ˜ν•΄μ„œ μ œν’ˆμ„ λ§Œλ“€μ–΄ λ‚΄λŠ” μƒμ‚°λΌμΈμ˜ μž‘μ—…λŒ€λ‘œ λ³Ό 수 있고, FROMμ ˆμ€ 곡μž₯의 μžμž¬μ°½κ³ μ™€ 같은 역할을 ν•˜λ©° WHEREμ ˆμ€ λΌμΈμ—μ„œ ν•„μš”λ‘œ ν•˜λŠ” μžμž¬λ§Œμ„ λ‚˜λ₯΄λ„둝 κ²€μˆ˜λ₯Ό ν•˜λŠ” 곳이라 ν•  수 μžˆκ² μŠ΅λ‹ˆλ‹€.

곡μž₯ 생산라인 λΉ„μœ μ—μ„œ 자재의 흐름을 따라가 보면 μ°½κ³ μ—μ„œ κ²€μˆ˜λ₯Ό 거쳐 μž‘μ—…λŒ€λ‘œ μ΄μ–΄μ§€λŠ”λ° SELECTλ¬Έμž₯을 해석할 λ•Œλ„ 이 μˆœμ„œλ₯Ό λ”°λ¦…λ‹ˆλ‹€.

SELECT station_id, name
  FROM `bigquery-public-data.new_york_citibike.citibike_stations`
 WHERE capacity > 10;

쿼리λ₯Ό 해석해 보면,

FROM μ ˆμ—λŠ” 자재 창고의 이름이 μ ν˜€μ˜€μŠ΅λ‹ˆλ‹€. bigquery-public-data.new_york_citibike.citibike_stations λΌλŠ” μ°½κ³ μž…λ‹ˆλ‹€. 이 κ³³μ—μ„œ 자재λ₯Ό ν•˜λ‚˜μ”© λΆˆμΆœν•΄μ„œ WHERE 절의 κ²€μˆ˜ 쑰건 capacity > 10 을 ν†΅κ³Όν•œ 자재만 쑰립라인인 SELECT 절둜 λ„˜κΉλ‹ˆλ‹€. SELECT μ ˆμ—μ„œλŠ” μž‘μ—… μ§€μ‹œμ„œμ— μ˜ν•΄ 자재λ₯Ό κ°€κ³΅ν•©λ‹ˆλ‹€. μž‘μ—… μ§€μ‹œμ„œμ—λŠ” station_id 와 name μ΄λΌλŠ” λΆ€λΆ„λ§Œ μΆ”μΆœν•˜λ„λ‘ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 쑰립라인을 거친 μ œν’ˆμ€ μ™„μ œν’ˆ 창고에 μ €μž₯λ©λ‹ˆλ‹€.

또 λ‹€λ₯Έ μ˜ˆμ‹œλ₯Ό ν•˜λ‚˜ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. κ²°κ³Ό ν…Œμ΄λΈ”μ΄ λ§Œλ“€μ–΄ μ§€λŠ” μˆœμ„œμ™€ 쿼리λ₯Ό 읽어 λ‚˜κ°€λŠ” μˆœμ„œλŠ” λ™μΌν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œλ„ FROM μ ˆμ— 기술된 emp μžμž¬μ°½κ³ μ—μ„œ WHERE μ ˆμ— 기술된 쑰건을 λ§Œμ‘±ν•˜λŠ” 자재(row) λ§Œμ„ SELECT μ ˆμ— λ„˜κ²¨ ename, sal, job 을 μΆ”μΆœν•˜λ„λ‘ λ¬Έμž₯이 μž‘μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

SELECT ename, sal, job
  FROM emp
 WHERE job = 'SALESMAN' AND sal < 1500;

Last updated