[SQL] Practice 2 & ์„œ๋ธŒ์ฟผ๋ฆฌ

Updated:

Categories:

Tags: , ,

๐Ÿ“Œ ๊ฐœ์ธ์ ์ธ ๊ณต๊ฐ„์œผ๋กœ ๊ณต๋ถ€๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
์ •ํ™•ํ•˜์ง€ ์•Š์€ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ๋ฐ”๋ž๋‹ˆ๋‹ค :๐Ÿ˜ธ
[ํ‹€๋ฆฐ ๋‚ด์šฉ์€ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋ณต๋ฐ›์œผ์‹ค๊ฑฐ์—์š”]

์ฟผ๋ฆฌ์‹ค์Šต [๋Œ€ํ•™๊ต ๊ด€๋ฆฌ์‹œ์Šคํ…œ]

๊ณ ๊ธ‰-3

  1. ๋‚˜์˜ ์ฟผ๋ฆฌ

    1
    2
    3
    4
    5
    6
    7
    8
    
     4. **๋ฌธ์ œ**: ๊ฐ ๊ต์ˆ˜๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ•์˜์˜ ์ˆ˜๋ฅผ ์กฐํšŒํ•˜์„ธ์š”.
     SELECT p.name ,COUNT(c.course_id) 
     from Courses c 
     RIGHT JOIN Departments d 
     ON d.department_id = c.department_id 
     RIGHT JOIN professors p 
     ON p.professor_id =d.department_id 
     group by p.professor_id; 
    

  2. Reference ์ฟผ๋ฆฌ

    1
    2
    3
    4
    5
    6
    7
    
     [Reference ์ฝ”๋“œ]
     **SELECT P.name, 
     COUNT(SE.section_id) 
     FROM Professors P 
     LEFT JOIN Sections SE 
     ON P.professor_id = SE.professor_id 
     GROUP BY P.name;**
    
  3. [์˜ค๋‹ต์ด์œ ]

    ๊ฐ•์˜ countํ•  ๋•Œ ๋‚˜๋Š” ๊ฐ•์˜๊ฐ€ course์ด๊ธฐ ๋•Œ๋ฌธ์— course ๊ธฐ์ค€์œผ๋กœ ํ–ˆ๋Š”๋ฐ

    ํ•œ ๊ฐ•์˜๋Š” ์—ฌ๋Ÿฌ section์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ 

    section์—์„œ ๋‹ด๋‹น ๊ต์ˆ˜ ์ •๋ณด๊ฐ€ ๋ฐฐ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

    section ๊ธฐ์ค€์œผ๋กœ ์„ธ๋Š”๊ฒŒ ๋งž์Œ.

๊ณ ๊ธ‰-4

  1. ๋ฌธ์ œ: ๊ฐ ํ•™๊ณผ๋ณ„๋กœ ํ‰๊ท  ํ•™์ ์ด ๊ฐ€์žฅ ๋†’์€ ๊ฐ•์˜๋ฅผ ์กฐํšŒํ•˜์„ธ์š”.
  2. ๋‚˜์˜ ์ฟผ๋ฆฌ

    1
    2
    3
    4
    5
    6
    7
    
     select AVG(c.credits)
     from courses c 
     join departments d 
     on d.department_id =c.department_id 
     group by d.department_id 
     order by d.department_id desc
     limit  1;
    
  3. Reference ์ฟผ๋ฆฌ

    1
    2
    3
    4
    5
    6
    7
    8
    
     SELECT d.name,c.title, c.credit 
     from departaments d
     join courses c
     ON c.deaprtment_id = d.department_id
     WHERE c.credits 
     in (SELECT MAX(c2.credits)from courses c2
     	WHERE c2.department_id=c.department_id
     	group by c2.department_id);
    

  4. [์˜ค๋‹ต์ด์œ ]

    ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•  ์ค„ ๋„ ๋ชฐ๋ž๊ณ  ๋ฌธ์ œ๋„ ํ•™๊ณผ๋ณ„๋กœ ํ‰๊ท ํ•™์ ์ด ๊ฐ€์žฅ ๋†’์€ ๊ฐ•์˜์ธ๋ฐ

    ํ•™๊ณผ๋ณ„์ด ์•„๋‹Œ, ํ‰๊ท  ํ•™์  ์ค‘ ๊ฐ€์žฅ ๋†’์€ ํ•™๊ณผ ํ•˜๋‚˜๋งŒ Selectํ–ˆ๋‹ค.


์„œ๋ธŒ์ฟผ๋ฆฌ

  • ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” SQL ๋ฌธ์žฅ ๋‚ด์—์„œ ๋‹ค๋ฅธ SQL ๋ฌธ์žฅ์„ ํฌํ•จํ•˜๋Š” ๊ตฌ์กฐ
    • ์ฃผ๋กœ ๊ด„ํ˜ธ ()๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ์Œ : ๊ด„ํ˜ธ ๋‚ด ๋ฌธ์žฅ์ด ์„œ๋ธŒ์ฟผ๋ฆฌ
  • CRUD ์ค‘์—์„œ

    Create

    Read - SELECT๋Š” ์—ฌ๊ธฐ์— ํ•ด๋‹น, ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” SELECT๋ฐ–์— ๋ชป์”€

    Update

    Delete

  • ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” from์ ˆ, join์ ˆ, having ์ ˆ์—์„œ๋Š” ๋ณ„์นญ์„ ๊ผญ ๋งŒ๋“ค์–ด ์ฃผ์–ด์•ผ ํ•จ.
  • ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” order by๋Š” ์‚ฌ์šฉ ๋ชปํ•จ.


์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์ข…๋ฅ˜

  1. ๋‹จ์ผ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ: ํ•˜๋‚˜์˜ ํ–‰๋งŒ ๋ฐ˜ํ™˜. ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ
  2. ๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ: ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ–‰์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ, ์—ฐ์‚ฐ์ž๋กœ๋Š” IN, ANY, ALL, EXISTS ๋“ฑ์ด ์‚ฌ์šฉ
  3. ๋‹ค์ค‘ ์—ด ์„œ๋ธŒ์ฟผ๋ฆฌ: ๋‘ ๊ฐœ ์ด์ƒ์˜ ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ


์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ์œ„์น˜

SELECT ์ ˆ

  1. ์˜ˆ์ œ

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
     -- Users ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ 
     --๊ทธ๋“ค์˜ ๋Œ€์ถœ ๊ฑด์ˆ˜๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฉ”์ธ ์ฟผ๋ฆฌ
        
     SELECT 
         username, 
            
      -- ๊ฐ ์‚ฌ์šฉ์ž๋ณ„ ๋Œ€์ถœ ๊ธฐ๋ก ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ
         (SELECT COUNT(*) 
          FROM LoanRecords 
          WHERE user_id = Users.user_id) 
          AS loans_count
             
     FROM 
         Users;
    
    • ํ•ด๋‹น ๊ตฌ๋ฌธ์€ ์•„๋ž˜๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ.

      1
      2
      3
      4
      5
      
        select u.username, count(l.record_id) 
        from users u
        left join loanrecords l 
        on l.user_id = u.user_id 
        group by u.user_id;
      
    • ์‹คํ–‰๊ฒฐ๊ณผ

      loans_count : ๊ฐ ์‚ฌ์šฉ์ž์˜ ๋Œ€์ถœ ๊ฑด์ˆ˜


FROM์ ˆ

  1. ์˜ˆ์ œ

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
     -- Users ํ…Œ์ด๋ธ”๊ณผ LoanRecords ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ณ„ ๋Œ€์ถœ ๊ฑด์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ
        
     SELECT 
         user_data.username,  -- ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์„ ํƒ
         loan_count.loans     -- ๋Œ€์ถœ ๊ฑด์ˆ˜ ์„ ํƒ
     FROM 
         Users AS user_data  -- Users ํ…Œ์ด๋ธ”์„ user_data๋ผ๋Š” ๋ณ„์นญ์œผ๋กœ ์‚ฌ์šฉ
     JOIN 
         (   -- LoanRecords ํ…Œ์ด๋ธ”์—์„œ ๊ฐ user_id๋ณ„๋กœ ๋Œ€์ถœ ๊ฑด์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ
             SELECT 
                 user_id, 
                 COUNT(*) AS loans  -- ๋Œ€์ถœ ๊ฑด์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ loans๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฐ˜ํ™˜
             FROM 
                 LoanRecords 
             GROUP BY 
                 user_id  -- user_id๋ณ„๋กœ ๊ทธ๋ฃนํ™”
         ) AS loan_count  -- ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— loan_count๋ผ๋Š” ๋ณ„์นญ ๋ถ€์—ฌ
     ON 
         user_data.user_id = loan_count.user_id;  -- Users ํ…Œ์ด๋ธ”์˜ user_id์™€ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์˜ user_id๋ฅผ ๋งค์นญํ•˜์—ฌ ์กฐ์ธ
    
    • ์‹คํ–‰๊ฒฐ๊ณผ


WHERE์ ˆ

  1. ์˜ˆ์ œ

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
     WHERE ์ ˆ
     -- Users ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์กฐํšŒ
     SELECT 
         username  -- ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์„ ํƒ
     FROM 
         Users
     WHERE 
         user_id IN (  -- Users ํ…Œ์ด๋ธ”์˜ user_id๊ฐ€ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ์„ ํƒ๋œ user_id์— ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๋งŒ ์กฐํšŒ
             -- LoanRecords ํ…Œ์ด๋ธ”์—์„œ ๋ฐ˜๋‚ฉ ๋‚ ์งœ๊ฐ€ NULL์ธ ๋Œ€์ถœ ๊ธฐ๋ก์˜ user_id๋ฅผ ์„ ํƒ
             SELECT 
                 user_id
             FROM 
                 LoanRecords
             WHERE 
                 return_date IS NULL  -- ๋ฐ˜๋‚ฉ ๋‚ ์งœ๊ฐ€ ์—†๋Š” (์ฆ‰, ์•„์ง ๋ฐ˜๋‚ฉ๋˜์ง€ ์•Š์€) ๋Œ€์ถœ ๊ธฐ๋ก์„ ํ•„ํ„ฐ๋ง
         );
    





HAVAING ์ ˆ

  • HAVING์ ˆ์€ ์กฐ๊ฑด๋ฌธ์ธ๋ฐ WHERE์ ˆ์€ GROUP BY ์ „์— ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด
  • HAVING์ ˆ์€ GROUPํ™” ํ•œ ๊ฒฐ๊ณผ์— ์กฐ๊ฑด์„ ๊ฑธ์–ด ์ฒ˜๋ฆฌ
    1. ์˜ˆ์ œ
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
      -- ๋Œ€์ถœ ๊ธฐ๋ก ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉ์ž๋ณ„ ๋Œ€์ถœ ๊ฑด์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ ,
       ์ด ๊ฑด์ˆ˜๊ฐ€ ์ „์ฒด ์‚ฌ์šฉ์ž์˜ ํ‰๊ท  ๋Œ€์ถœ ๊ฑด์ˆ˜๋ณด๋‹ค ๋งŽ์€ ์‚ฌ์šฉ์ž๋ฅผ ์กฐํšŒ
         
      SELECT 
          user_id,            -- ์‚ฌ์šฉ์ž ID
          COUNT(*) AS loan_count  -- ๋Œ€์ถœ ๊ฑด์ˆ˜
      FROM 
          LoanRecords
      GROUP BY 
          user_id             -- ์‚ฌ์šฉ์ž ID๋ณ„๋กœ ๊ทธ๋ฃนํ™”
      HAVING 
          COUNT(*) > (        -- ๊ฐ ์‚ฌ์šฉ์ž์˜ ๋Œ€์ถœ ๊ฑด์ˆ˜๊ฐ€ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๊ณ„์‚ฐ๋œ ํ‰๊ท  ๋Œ€์ถœ ๊ฑด์ˆ˜๋ณด๋‹ค ํด ๊ฒฝ์šฐ์—๋งŒ ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จ
              SELECT 
                  AVG(loan_count)  -- ํ‰๊ท  ๋Œ€์ถœ ๊ฑด์ˆ˜ ๊ณ„์‚ฐ
              FROM 
                  (SELECT 
                       COUNT(*) AS loan_count  -- ๊ฐ ์‚ฌ์šฉ์ž๋ณ„ ๋Œ€์ถœ ๊ฑด์ˆ˜
                   FROM 
                       LoanRecords
                   GROUP BY 
                       user_id) AS average_loans  -- ์ด์ค‘ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์‚ฌ์šฉ์ž๋ณ„ ๋Œ€์ถœ ๊ฑด์ˆ˜๋ฅผ ๋จผ์ € ๊ณ„์‚ฐํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ‰๊ท ์„ ๊ณ„์‚ฐ
          );
    



INSERT ์ ˆ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- LoanRecords ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ๋Œ€์ถœ ๊ธฐ๋ก์„ ์‚ฝ์ž…
INSERT INTO LoanRecords (user_id, book_id, loan_date)
SELECT 
    user_id, 
    -- Books ํ…Œ์ด๋ธ”์—์„œ ์ž„์˜๋กœ ์„ ํƒ๋œ ํ•œ ๊ถŒ์˜ ์ฑ…์˜ book_id๋ฅผ ๊ฐ€์ ธ์˜ด
    (SELECT book_id FROM Books ORDER BY RAND() LIMIT 1), 
    CURDATE() -- ๋Œ€์ถœ ๋‚ ์งœ๋ฅผ ํ˜„์žฌ ๋‚ ์งœ๋กœ ์„ค์ •
FROM 
    Users
WHERE 
    -- ํ˜„์žฌ ๋ฐ˜๋‚ฉ๋˜์ง€ ์•Š์€ ์ฑ…์„ ๊ฐ€์ง„ ๋Œ€์ถœ ๊ธฐ๋ก์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋งŒ ์„ ํƒ
    NOT EXISTS (
        SELECT * 
        FROM LoanRecords 
        WHERE user_id = Users.user_id AND return_date IS NULL
    );
  
  1. ์„œ๋ธŒ์ฟผ๋ฆฌ (SELECT book_id FROM Books...):
    • ์ด ๋ถ€๋ถ„์€ Books ํ…Œ์ด๋ธ”์—์„œ ์ž„์˜์˜ ์ฑ… ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค.
    • ORDER BY RAND() ๊ตฌ๋ฌธ์€ ๋ชจ๋“  ์ฑ… ์ค‘์—์„œ ๋ฌด์ž‘์œ„๋กœ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ฒŒ ํ•˜๊ณ ,
    • LIMIT 1์€ ๋‹จ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ œํ•œ
    • ์ด๋ ‡๊ฒŒ ์„ ํƒ๋œ ์ฑ…์˜ book_id๋Š” ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ์‚ฝ์ž… ๊ณผ์ •์— ์‚ฌ์šฉ๋œ๋‹ค.
  2. ์™ธ๋ถ€ SELECT ์ฟผ๋ฆฌ:
    • Users ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ์„ ํƒ
    • ์ด๋•Œ, WHERE ์ ˆ์— ํฌํ•จ๋œ NOT EXISTS ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ
    • ํ˜„์žฌ ๋Œ€์ถœ ์ค‘์ธ ์ฑ…์ด ์—†๋Š”(์ฆ‰, return_date๊ฐ€ NULL์ธ ๋Œ€์ถœ ๊ธฐ๋ก์ด ์—†๋Š”) ์‚ฌ์šฉ์ž๋งŒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค.
    • ๊ฒฐ๊ตญ ๋ฐ˜๋‚ฉ๋˜์ง€ ์•Š์€ ์ฑ…์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋Š” ์ƒˆ๋กœ์šด ์ฑ…์„ ๋Œ€์ถœ๋ฐ›์ง€ ๋ชปํ•˜๊ฒŒ ํ•œ๋‹ค.
  3. INSERT INTO LoanRecords:
    • ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•˜์—ฌ LoanRecords ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ๋Œ€์ถœ ๊ธฐ๋ก์„ ์ถ”๊ฐ€ํ•œ๋‹ค..
    • ๊ฐ ๊ธฐ๋ก์—๋Š” ์‚ฌ์šฉ์ž ID(user_id), ๋ฌด์ž‘์œ„๋กœ ์„ ํƒ๋œ ์ฑ…์˜ ID(book_id), ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ๋‚ ์งœ(CURDATE())๊ฐ€ ๋Œ€์ถœ ๋‚ ์งœ๋กœ ์„ค์ •๋œ๋‹ค
  4. WHERE EXIST / WHERE NOT EXIST
    • EXIST๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์— 1๊ฑด์ด๋ผ๋„ ์กด์žฌํ•˜๋ฉด TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋œ๋‹ค.
    • NOT EXISTS๋Š” EXISTS์™€ ๋ฐ˜๋Œ€๋กœ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋œ๋‹ค.
    • NOT EXISTS๋„ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ 1๊ฑด์ด๋ผ๋„ ์ฐพ์œผ๋ฉด ๊ฒ€์ƒ‰์„ ๋ฉˆ์ถ”๊ณ  TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • NOT์ด ๋ถ™์—ˆ๊ธฐ ๋•Œ๋ฌธ์— (TRUE โ†’ FALSE, FALSE โ†’ TRUE) ๋ฐ˜ํ™˜ ๊ฐ’์ด ๋ฐ˜๋Œ€๋กœ ๋ฐ”๋€Œ์–ด์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒ
  5. ์‹คํ–‰๊ฒฐ๊ณผ

    ๋‹ค๋“ค ๋ฐ˜๋‚ฉ์„ ์ž˜ํ•ด์„œ ์ƒˆ๋กœ์šด ์ฑ…์„ ๋Œ€์ถœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.


UPDATE ์ ˆ

1
2
3
4
5
6
7
8
9
-- LoanRecords ํ…Œ์ด๋ธ”์˜ return_date๋ฅผ ์—…๋ฐ์ดํŠธ
UPDATE LoanRecords
SET return_date = CURDATE()  -- ๋ฐ˜๋‚ฉ ๋‚ ์งœ๋ฅผ ํ˜„์žฌ ๋‚ ์งœ๋กœ ์„ค์ •
WHERE loan_date = (
    -- ์‚ฌ์šฉ์ž๋ณ„๋กœ ๊ฐ€์žฅ ์ด๋ฅธ ๋Œ€์ถœ ๋‚ ์งœ๋ฅผ ์ฐพ๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ
    SELECT MIN(loan_date)
    FROM LoanRecords
    WHERE user_id = LoanRecords.user_id  -- ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ์‚ฌ์šฉ์ž ID์™€ ์ผ์น˜ํ•˜๋Š” ์‚ฌ์šฉ์ž ID๋ฅผ ๊ฐ€์ง„ ๋Œ€์ถœ ๊ธฐ๋ก ์ค‘์—์„œ
);


Comment

sql ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ƒ๊ฐ๋ณด๋‹ค ์‰ฌ์šด ๊ฒƒ๋งŒ ํ•ด์™”๋Š”์ง€ ์—ฌํƒœ๊ป ์ˆœํƒ„ํ•˜๊ฒŒ ์ž˜ ํ•ด์™”๋Š”๋ฐ ์„œ๋ธŒ์ฟผ๋ฆฌ, Having์ ˆ ๋“ฑ.. ๊ฐ‘์ž๊ธฐ ๊ธ‰ ์–ด๋ ค์›Œ์ง„ ๊ธฐ๋ถ„์ด๋‹ค ~~ ๊ทธ๋ž˜๋„ ๊ฒฐ๊ณผ๋ฅผ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋„ฃ๊ณ  ๊ฒฐ๊ณผ ๋ฐ”๋กœ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ดํ•ดํ•˜๋Š”๋ฐ ํฐ ๋„์›€์ด ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.







Database ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด ๋‹ค๋ฅธ ๊ธ€ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

Leave a comment