Jayden1116 2022. 1. 23. 13:33

Q. ' SELECT * ' ๊ณผ ' SELECT rowid ' ์˜ ์ถœ๋ ฅ๋˜๋Š” ์ˆœ์„œ ์ฐจ์ด


1. SELECT *
SELECT *
FROM customers AS c

image


2. SELECT rowid (customerId == rowid)
SELECT customerId
FROM customers AS c

image
์ฆ‰, 1๊ณผ 2์—์„œ SELECT์— ๋”ฐ๋ผ ์ถœ๋ ฅ๋˜๋Š” rowid์˜ ์ˆœ์„œ๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.


  1. SELECT FirstName (rowid๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์นผ๋Ÿผ ํ•˜๋‚˜๋งŒ SELECT)
SELECT FirstName 
FROM customers AS c

image
1๋ฒˆ๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ, rowid ์—†์ด ๋‹จ์ผ ํŠน์„ฑ๋งŒ SELECT ํ•ด๋„ ORDER BY rowid ๊ฐ€ ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


4. SELECT SupportRepId (Foreign key) ์™€ SELECT CustomerId, SupportRepId (Primary key, Foreign key)
SELECT SupportRepId 
FROM customers AS c

image

SELECT CustomerId, SupportRepId 
FROM customers AS c

image
๋‹ค๋ฅธ ์ปฌ๋Ÿผ๋“ค๊ณผ ๋‹ฌ๋ฆฌ, foreign key์˜ ์—ญํ• ์„ ํ•˜๋Š” ์ปฌ๋Ÿผ์€ ORDER BY rowid ๊ฐ€ ์•„๋‹Œ ORDER BY SupportRepId ์˜ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.


์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ SELECT ๋ฌธ์„ ํ…Œ์ŠคํŠธํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
SELECT CustomerId 
FROM customers AS c
ORDER BY SupportRepId 

image
์ฒ˜์Œ 2๋ฒˆ์—์„œ rowid๋งŒ ์ถœ๋ ฅํ•œ ๊ฒฐ๊ณผ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ด๋Š” rowid ๋‹จ์ผ ์ปฌ๋Ÿผ๋งŒ์„ SELECT ํ–ˆ์„ ๋•Œ๋Š” Foreign key์— ํ•ด๋‹นํ•˜๋Š” ์ปฌ๋Ÿผ์˜ ์ˆœ์„œ์— ๋งž์ถฐ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.


์ฐธ๊ณ 1: SQLite_Document_'SELECT'
์ฐธ๊ณ 2: Reddit_Same_Question
์ฐธ๊ณ 3: Stackoverflow_Question
์ฐธ๊ณ 4: Github_SQLite_SELECT_logic
์ฐธ๊ณ 5: B-tree

๊ฒฐ๋ก 

rowid๋ฅผ ๋‹จ์ผ ์ปฌ๋Ÿผ SELECT ์‹œ foreign key์˜ ์—ญํ• ์„ ํ•˜๋Š” ์ปฌ๋Ÿผ์˜ ์ˆœ์„œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

์ถ”ํ›„ ์ถ”๊ฐ€ํ•  ์‚ฌํ•ญ

  1. foreign key์˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ผ์„œ ์ถœ๋ ฅ๋˜๋Š” ์ด์œ 
  2. sql์˜ tree ๊ตฌ์กฐ์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ์ธ์ง€(์ฐธ๊ณ 5 ๊ด€๋ จ)