๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“Š|DataBase

[SQL] ์ŠคํŒŒ๋ฅดํƒ€ ์ฝ”๋”ฉํด๋Ÿฝ SQL - 1์ฃผ์ฐจ (select, where, ...)

by KASSID 2023. 2. 14.

๋ชฉ์ฐจ

    728x90

    ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ž€?

    - ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์œผ๋Š” ๊ณณ

    - ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ CRUD์˜ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค

      ์ด ์ค‘ ์ŠคํŒŒ๋ฅดํƒ€ ๊ฐ•์˜์—์„œ๋Š” 'Read'์— ๋Œ€ํ•ด์„œ๋งŒ ๊ณต๋ถ€ํ•œ๋‹ค!

     

    SQL์ด๋ž€?

    - Structured Query Language ์˜ ์•ฝ์ž!

    - Query(์š”์ฒญ)๋ฅผ ๋‚ ๋ ค์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ๋•๋Š” ์–ธ์–ด์ด๋‹ค.

    - ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด 'SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค' ๋ผ๊ณ  ํ•œ๋‹ค.

     

    SQL์ด ํ•„์š”ํ•œ ์ด์œ ?

    - ๋ฐ์ดํ„ฐ๋ฅผ Readํ•˜๋Š” ๊ณผ์ •์„ ๊ต‰์žฅํžˆ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

    - ๋ฐ์ดํ„ฐ ์ •๋ฆฌ ๋ฐ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค.

     


    Select & Where

    - ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ (select), ์กฐ๊ฑด์— ๋งž๊ฒŒ ํ•„ํ„ฐ๋ง(where)!

     

    Select

    select ์ฟผ๋ฆฌ๋ฌธ์ด๋ž€?

    ์ฟผ๋ฆฌ๋Š” ์งˆ์˜, ์š”์ฒญ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, DB์— ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

    select ์ฟผ๋ฆฌ๋ฌธ์€ DB์—์„œ '๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ'์„ ์˜๋ฏธํ•œ๋‹ค.

     

    ๊ตฌ์„ฑ

    โ‘ ์–ด๋–ค ํ…Œ์ด๋ธ”์—์„œ โ‘ก์–ด๋–ค ํ•„๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ์ง€!

     ํ…Œ์ด๋ธ” : ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธด ๊ณณ
     ํ•„๋“œ : Column์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ, 
    SELECT (ํ•„๋“œ) FROM (ํ…Œ์ด๋ธ”)

     

     

    ํ…Œ์ด๋ธ” ํ™•์ธํ•˜๊ธฐ

    show tables;

    ์‹ค์Šต์—์„œ๋Š” DB๋‚ด์— ์œ„์™€ ๊ฐ™์€ 8๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•œ๋‹ค.

     

     

    select๋ฅผ ์ด์šฉํ•ด ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

    ๋ชจ๋“  ํ•„๋“œ(*)๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค!

    SELECT * FROM users u

     

     

    ํŠน์ • ํ•„๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด

    SELECT user_id , name FROM users u

     


    Where

    where ์ ˆ์ด๋ž€?

    - select ์ฟผ๋ฆฌ๋ฌธ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ์— ์กฐ๊ฑด์„ ๊ฑธ์–ด์ฃผ๋Š” ๊ฒƒ!

    SELECT (ํ•„๋“œ) FROM (ํ…Œ์ด๋ธ”)
    WHERE (์กฐ๊ฑด)

     

     

    ex) users ํ…Œ์ด๋ธ”์—์„œ ์ด์”จ ์„ฑ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์˜ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

    SELECT * FROM users u 
    WHERE name = '์ด**'

    

    ์œ„์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

    ์ด๋•Œ, ์ฃผ์˜ํ•  ์ ์€  ๋ฌธ์ž์—ด์˜ ๊ฒฝ์šฐ '' ํ˜น์€ ""์„ ์ด์šฉํ•˜์—ฌ ๋ช…์‹œ ํ•˜์—ฌ์•ผํ•œ๋‹ค.

    ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธ€์ž๋ฅผ ํ•„๋“œ๋ช…์œผ๋กœ ์ธ์‹ํ•œ๋‹ค.

     

     

    Where์ ˆ์˜ ์กฐ๊ฑด ๋ฌธ๋ฒ•

    1) ๋“ฑํ˜ธ, ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด

    =, !=, >, >=

     

    2) ๋ฒ”์œ„ ์กฐ๊ฑด

    between

    ex) 20๋…„ 7์›”์— ๊ฐ€์ž…ํ•œ ์œ ์ € ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

    SELECT * FROM users u 
    WHERE created_at BETWEEN "2020-07-01" and "2020-08-01"

     

    3) ํฌํ•จ ์กฐ๊ฑด

    in

    ex) ๊ฒฐ์ œ๋ฐฉ์‹์ด ์นด์นด์˜คํŽ˜์ด์™€ ์นด๋“œ์ธ ์ฃผ๋ฌธ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

    SELECT order_no , payment_method  FROM orders o 
    WHERE payment_method in ('kakaopay', 'CARD')

     

    4) ํŒจํ„ด(๋ฌธ์ž์—ด๊ทœ์น™) ์กฐ๊ฑด

    like

    ex)

    'A%' : A๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด

    '%A' : A๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์—ด

    '%A%' : A๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž์—ด

    'A%B' : A๋กœ ์‹œ์ž‘ํ•˜๊ณ  B๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์—ด

    ...

     

    ex) 'ํ™”์ดํŒ…'์ด ํฌํ•จ๋จ ๋‹ค์ง ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

    SELECT user_id , comment FROM checkins c
    WHERE comment LIKE '%ํ™”์ดํŒ…%'

     

     


    ์ด์™ธ ์œ ์šฉํ•œ ๋ฌธ๋ฒ•

     

    Limit, Distinct, Count

    1) ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ

    Limit 

    ex)

    SELECT * FROM orders o 
    Limit 5

     

    2) ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ œ์™ธํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ

    Distinct

    ex)

    SELECT DISTINCT(name) FROM users u

     

    3) ์นด์šดํŠธ

    Count

    ex)

    SELECT COUNT(*) FROM orders o

     

    +) distinct์™€ count ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ

    ex)

    SELECT COUNT(DISTINCT(name)) FROM users u

     

     

    ๋Œ“๊ธ€