IT’s Portfolio

[Lecture] DataBase - Day 7 λ³Έλ¬Έ

Development Study

[Lecture] DataBase - Day 7

f1r3_r41n 2023. 5. 8. 14:36
728x90
λ°˜μ‘ν˜•

πŸ–₯ DataBase - Day 7

  • 3.2 λ°μ΄ν„°μ˜ 검색 : SELECT

    • μ—¬λŸ¬ ν…Œμ΄λΈ”μ— λŒ€ν•œ 쑰인 검색

      • 쑰인 검색 : μ—¬λŸ¬ 개의 ν…Œμ΄λΈ”μ„ μ—°κ²°ν•˜μ—¬ 데이터λ₯Ό κ²€μƒ‰ν•˜λŠ” 것
      • 쑰인 속성 : 쑰인 검색을 μœ„ν•΄ ν…Œμ΄λΈ”μ„ μ—°κ²°ν•΄μ£ΌλŠ” 속성
        • ν…Œμ΄λΈ”μ„ μ—°κ²°ν•˜λ €λ©΄, 쑰인 μ†μ„±μ˜ 이름은 달라도 λ˜μ§€λ§Œ 도메인은 λ°˜λ“œμ‹œ κ°™μ•„μ•Ό 함
        • ν…Œμ΄λΈ”μ˜ 관계λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ™Έλž˜ν‚€λ₯Ό 쑰인 μ†μ„±μœΌλ‘œ 이용
      • FROM μ ˆμ— 검색에 ν•„μš”ν•œ λͺ¨λ“  ν…Œμ΄λΈ”μ„ λ‚˜μ—΄
      • WHERE μ ˆμ—λŠ” 쑰인 μ†μ„±μ˜ 값이 κ°™μ•„μ•Ό 함을 μ˜λ―Έν•˜λŠ” 쑰인 쑰건을 μ œμ‹œ
      • 이름이 같은 속성이 μ„œλ‘œ λ‹€λ₯Έ ν…Œμ΄λΈ”μ— μ‘΄μž¬ν•  μˆ˜λ„ μžˆκΈ°μ— μ†μ„±μ˜ 이름 μ•žμ— ν•΄λ‹Ή 속성이 μ†Œμ†λœ ν…Œμ΄λΈ”μ˜ 이름을 ν‘œμ‹œν•΄μ£ΌλŠ” 것이 μ’‹μŒ
      • FROM μ ˆμ—μ„œ ν…Œμ΄λΈ”μ˜ 이름을 λŒ€μ‹ ν•˜λŠ” λ‹¨μˆœν•œ 별λͺ…을 μ œμ‹œν•˜μ—¬ μ§ˆμ˜λ¬Έμ„ μž‘μ„±ν•˜λŠ” 것도 μ’‹μŒ
      SELECT 속성_리슀트
      FROM ν…Œμ΄λΈ”1 INNER JOIN ν…Œμ΄λΈ”2 ON 쑰인쑰건
      [ WHERE 검색쑰건 ]
      • 동등 쑰인 검색
        • μ•žμ„œ μ„€λͺ…ν•œ 쑰인 검색은 쑰인 μ†μ„±μ˜ 값이 같은 νŠœν”Œμ— λŒ€ν•΄μ„œλ§Œ 검색을 μˆ˜ν–‰ν•˜λ―€λ‘œ 동등 쑰인에 해당함
        • ν‘œμ€€ SQLμ—μ„œλŠ” INNER JOIN κ³Ό ON ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•΄ μž‘μ„±ν•˜λŠ” 방법도 μ œκ³΅ν•¨
      SELECT 속성_리슀트
      FROM ν…Œμ΄λΈ”1 LEFT | RIGHT | FULL OUTER JOIN ν…Œμ΄λΈ”2 ON 쑰인 쑰건
      [ WHERE 검색쑰건 ];
      • μ™ΈλΆ€ 쑰인 검색
        • 쑰인 쑰건을 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” νŠœν”Œμ— λŒ€ν•΄μ„œλ„ 검색을 μˆ˜ν–‰
        • OUTER JOIN κ³Ό ON ν‚€μ›Œλ“œλ₯Ό 이용
        • λͺ¨λ“  νŠœν”Œμ„ 검색 λŒ€μƒμœΌλ‘œ ν•˜λŠ” ν…Œμ΄λΈ”μ΄ 무엇이냐에 따라 μ™Όμͺ½ μ™ΈλΆ€ 쑰인, 였λ₯Έμͺ½ μ™ΈλΆ€ 쑰인, μ™„μ „ μ™ΈλΆ€ 쑰인으둜 λΆ„λ₯˜
    • 뢀속 μ§ˆμ˜λ¬Έμ„ μ΄μš©ν•œ 검색

      • SELECT λ¬Έ μ•ˆμ— 또 λ‹€λ₯Έ SELECT 문을 ν¬ν•¨ν•˜λŠ” 질의
        • μƒμœ„ 질의문 | μ£Ό 질의문 (main query) : λ‹€λ₯Έ SELECT 문을 ν¬ν•¨ν•˜λŠ” SELECT λ¬Έ
        • 뢀속 질의문 | μ„œλΈŒ 질의문 (sub query) : λ‹€λ₯Έ SELECT λ¬Έ μ•ˆμ— λ“€μ–΄ μžˆλŠ” SELECT λ¬Έ
          • κ΄„ν˜Έλ‘œ λ¬Άμ–΄ μž‘μ„±
          • ORDER BY 절 μ‚¬μš©ν•  수 μ—†μŒ
          • 단일 ν–‰ 뢀속 질의문 : ν•˜λ‚˜μ˜ 행을 결과둜 λ°˜ν™˜
          • 닀쀑 ν–‰ 뢀속 질의문 : ν•˜λ‚˜ μ΄μƒμ˜ 행을 결과둜 λ°˜ν™˜
        • 뢀속 질의문 λ¨Όμ € μˆ˜ν–‰ ν›„, κ·Έ κ²°κ³Όλ₯Ό μ΄μš©ν•΄ μƒμœ„ 질의문 μˆ˜ν–‰
        • 뢀속 질의문과 μƒμœ„ μ§ˆμ˜λ¬Έμ„ μ—°κ²°ν•˜λŠ” μ—°μ‚°μž ν•„μš”
          • 단일 ν–‰ 뢀속 질의문 : 일반 비ꡐ μ—°μ‚°μž μ‚¬μš© κ°€λŠ₯
            • $=, <>, >, <, >=, <=$
          • 닀쀑 ν–‰ 뢀속 질의문 : 일반 비ꡐ μ—°μ‚°μž μ‚¬μš© λΆˆκ°€λŠ₯
            • IN : 뢀속 질의문의 κ²°κ³Ό κ°’ 쀑 μΌμΉ˜ν•˜λŠ” 것이 있으면 검색 쑰건이 μ°Έ
            • NOT IN : 뢀속 질의문의 κ²°κ³Ό κ°’ 쀑 μΌμΉ˜ν•˜λŠ” 것이 μ—†μœΌλ©΄ 검색 쑰건이 μ°Έ
            • EXISTS : 뢀속 질의문의 κ²°κ³Ό 값이 ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•˜λ©΄ 검색 쑰건이 μ°Έ
            • NOT EXISTS : 뢀속 질의문의 κ²°κ³Ό 값이 ν•˜λ‚˜λ„ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ 검색 쑰건이 μ°Έ
            • ALL : 뢀속 질의문의 κ²°κ³Ό κ°’ λͺ¨λ‘μ™€ λΉ„κ΅ν•œ κ²°κ³Όκ°€ 참이면 검색 쑰건을 만쑱(비ꡐ μ—°μ‚°μžμ™€ ν•¨κ»˜ μ‚¬μš©)
            • ANY or SOME : 뢀속 질의문의 κ²°κ³Ό κ°’ 쀑 ν•˜λ‚˜λΌλ„ λΉ„κ΅ν•œ κ²°κ³Όκ°€ 참이면 검색 쑰건을 만쑱(비ꡐ μ—°μ‚°μžμ™€ ν•¨κ»˜ μ‚¬μš©)
  • 3.3 λ°μ΄ν„°μ˜ μ‚½μž… : INSERT

    • 데이터 직접 μ‚½μž…
      INSERT
      INTO ν…Œμ΄λΈ”_이름[(속성_리슀트)]
      VALUES (속성값_리슀트);
      • ν…Œμ΄λΈ”μ— νŠœν”Œμ„ 직접 μ‚½μž…
      • INTO 절의 속성 이름과 VALUES 절의 속성 값은 μˆœμ„œλŒ€λ‘œ μΌλŒ€μΌ λŒ€μ‘λ˜κ³  κ°œμˆ˜λ„ κ°™μ•„μ•Ό 함
      • 속성 μ΄λ¦„μ˜ λ¦¬μŠ€νŠΈλŠ” μƒλž΅ν•  수 μžˆλŠ”λ°, μƒλž΅ν•œ κ²½μš°μ—λŠ” ν…Œμ΄λΈ”μ„ μ •μ˜ν•  λ•Œ μ§€μ •ν•œ μ†μ„±μ˜ μˆœμ„œλŒ€λ‘œ VALUES 절의 속성 값이 μ‚½μž…λ¨
    • 뢀속 μ§ˆμ˜λ¬Έμ„ μ΄μš©ν•œ 데이터 μ‚½μž…
      INSERT
      INTO ν…Œμ΄λΈ”_이름[(속성_리슀트)]
      SELECT λ¬Έ;
      • SELECT 문을 μ΄μš©ν•΄ λ‹€λ₯Έ ν…Œμ΄λΈ”μ—μ„œ κ²€μƒ‰ν•œ 데이터λ₯Ό νŠœν”Œλ‘œ μ‚½μž…
  • 3.4 λ°μ΄ν„°μ˜ μˆ˜μ • : UPDATE

      UPDATE ν…Œμ΄λΈ”_이름
      SET 속성_이름1 = κ°’1, 속성_이름2 = κ°’2, ...
      [WHERE 쑰건];
    • ν…Œμ΄λΈ”μ— μ €μž₯된 νŠœν”Œμ—μ„œ νŠΉμ • μ†μ„±μ˜ 값을 μˆ˜μ •
    • SET ν‚€μ›Œλ“œ λ‹€μŒμ— 값을 μ–΄λ–»κ²Œ μˆ˜μ •ν•  것인지 지정
    • WHERE μ ˆμ— μ œμ‹œλœ 쑰건을 λ§Œμ‘±ν•˜λŠ” νŠœν”Œλ§Œ 속성 값을 μˆ˜μ •
      • μƒλž΅ μ‹œ ν…Œμ΄λΈ”μ— μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  νŠœν”Œμ„ λŒ€μƒμœΌλ‘œ ν•˜μ—¬ μˆ˜μ •
    • 뢀속 질의문 포함 κ°€λŠ₯
  • 3.5 λ°μ΄ν„°μ˜ μ‚­μ œ : DELETE

      DELETE
      FROM ν…Œμ΄λΈ”_이름
      [WHERE 쑰건];
    • ν…Œμ΄λΈ”μ— μ €μž₯된 데이터 μ‚­μ œ
    • WHERE μ ˆμ— μ œμ‹œν•œ 쑰건을 λ§Œμ‘±ν•˜λŠ” νŠœν”Œλ§Œ μ‚­μ œ
      • μƒλž΅ μ‹œ ν…Œμ΄λΈ”μ— μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  νŠœν”Œμ„ μ‚­μ œν•˜μ—¬ 빈 ν…Œμ΄λΈ”μ΄ 됨
        • DROP TABLE 문으둜 ν…Œμ΄λΈ” 자체λ₯Ό μ œκ±°ν•˜λŠ” κ²ƒκ³ΌλŠ” 닀름
    • 뢀속 질의문 포함 κ°€λŠ₯

[04] λ·°

  • 4.1 λ·°(view) 의 κ°œλ…
    • λ‹€λ₯Έ ν…Œμ΄λΈ”μ„ 기반으둜 λ§Œλ“€μ–΄μ§„ 가상 ν…Œμ΄λΈ”(virtual table)
      • 데이터λ₯Ό μ‹€μ œλ‘œ μ €μž₯ν•˜κ³  μžˆμ§€ μ•Šκ³  λ…Όλ¦¬μ μœΌλ‘œ μ‘΄μž¬ν•¨
    • 일반 ν…Œμ΄λΈ”κ³Ό λ™μΌν•œ λ°©λ²•μœΌλ‘œ μ‚¬μš©
    • λ·°λ₯Ό 톡해 κΈ°λ³Έ ν…Œμ΄λΈ”μ˜ λ‚΄μš©μ„ μ‰½κ²Œ 검색할 μˆ˜λŠ” μžˆμ§€λ§Œ κΈ°λ³Έ ν…Œμ΄λΈ”μ˜ λ‚΄μš©μ„ λ°”κΎΈλŠ” μž‘μ—…μ€ μ œν•œμ μœΌλ‘œ 이루어짐
      • κΈ°λ³Έ ν…Œμ΄λΈ”(base table) : λ·°λ₯Ό λ§Œλ“œλŠ” 데 기반이 λ˜λŠ” 물리적인 ν…Œμ΄λΈ”
    • λ‹€λ₯Έ λ·°λ₯Ό 기반으둜 μƒˆλ‘œμš΄ λ·°λ₯Ό λ§Œλ“€ 수 있음
  • 4.2 뷰의 생성
      CREATE VIEW λ·°_이름[(속성_리슀트)]
      AS SELECT λ¬Έ
      [WITH CHECK OPTION];
    • CREATE VIEW λͺ…령어와 ν•¨κ»˜ μƒˆλ‘œ 생성할 뷰의 이름을 μ œμ‹œν•œ ν›„, λ·°λ₯Ό κ΅¬μ„±ν•˜λŠ” μ†μ„±μ˜ 이름을 κ΄„ν˜Έ μ•ˆμ— λ‚˜μ—΄
      • 속성 리슀트 μƒλž΅ μ‹œ SELECT μ ˆμ— λ‚˜μ—΄λœ μ†μ„±μ˜ 이름을 λ·°μ—μ„œλ„ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•¨
    • AS ν‚€μ›Œλ“œμ™€ ν•¨κ»˜ κΈ°λ³Έ ν…Œμ΄λΈ”μ— λŒ€ν•œ SELECT 문을 μ œμ‹œ
      • SELECT 문은 μƒμ„±ν•˜κ³ μž ν•˜λŠ” 뷰의 μ •μ˜λ₯Ό λ‹΄κ³  μžˆλŠ”λ°, ORDER BY λ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€λŠ” 점만 μ œμ™Έν•˜λ©΄ 일반 SELECT λ¬Έκ³Ό 동일
      • 였라클과 같은 일뢀 DBMSμ—μ„œλŠ” ORDER BY μ‚¬μš©μ„ ν—ˆκ°€ν•˜κΈ°λ„ 함
    • WITH CHECK OPTION : 뷰에 μ‚½μž…μ΄λ‚˜ μˆ˜μ • 연산을 ν•  λ•Œ SELECT λ¬Έμ—μ„œ WHERE ν‚€μ›Œλ“œμ™€ ν•¨κ»˜ μ œμ‹œν•œ 뷰의 μ •μ˜ 쑰건을 μœ„λ°˜ν•˜λ©΄ μˆ˜ν–‰λ˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” μ œμ•½μ‘°κ±΄ 의미
  • 4.3 뷰의 ν™œμš©
    • SELECT
      • 일반 ν…Œμ΄λΈ”μ²˜λŸΌ μ›ν•˜λŠ” 데이터λ₯Ό 검색할 수 있음
        • 뷰에 λŒ€ν•œ SELECT 문이 λ‚΄λΆ€μ μœΌλ‘œλŠ” κΈ°λ³Έ ν…Œμ΄λΈ”μ— λŒ€ν•œ SELECT 문으둜 λ³€ν™˜λ˜μ–΄ μˆ˜ν–‰λ¨
      • 검색 연산은 λͺ¨λ“  뷰에 μˆ˜ν–‰ κ°€λŠ₯
    • INSERT, UPDATE, DELETE
      • 뷰에 λŒ€ν•œ μ‚½μž…, μˆ˜μ •, μ‚­μ œ μ—°μ‚° κ°€λŠ₯
        • κΈ°λ³Έ ν…Œμ΄λΈ”μ— μˆ˜ν–‰λ˜κΈ° λ•Œλ¬Έμ— 결과적으둜 κΈ°λ³Έ ν…Œμ΄λΈ”μ΄ 변함
      • 뷰에 λŒ€ν•œ 연산이 μ œν•œμ μž„
        • λ³€κ²½ κ°€λŠ₯ν•œ λ·° vs λ³€κ²½ λΆˆκ°€λŠ₯ν•œ λ·°
      • λ³€κ²½ λΆˆκ°€λŠ₯ν•œ 뷰의 νŠΉμ§•
        • κΈ°λ³Έ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성이 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•Šμ€ λ·°
        • κΈ°λ³Έ ν…Œμ΄λΈ”μ—μ„œ NOT NULL 둜 μ§€μ •λœ 속성이 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠλŠ” λ·°
        • κΈ°λ³Έ ν…Œμ΄λΈ”μ— 있던 λ‚΄μš©μ΄ μ•„λ‹ˆλΌ 집계 ν•¨μˆ˜λ‘œ μƒˆλ‘œ κ³„μ‚°λœ λ‚΄μš©μ„ ν¬ν•¨ν•˜κ³  μžˆλŠ” λ·°
        • DISTINCT ν‚€μ›Œλ“œλ₯Ό ν¬ν•¨ν•˜μ—¬ μ •μ˜ν•œ λ·°
        • GROUP BY μ ˆμ„ ν¬ν•¨ν•˜μ—¬ μ •μ˜ν•œ λ·°
        • μ—¬λŸ¬ 개의 ν…Œμ΄λΈ”μ„ μ‘°μΈν•˜μ—¬ μ •μ˜ν•œ λ·°
    • 뷰의 μž₯점
      • μ§ˆμ˜λ¬Έμ„ μ’€ 더 μ‰½κ²Œ μž‘μ„±ν•  수 있음
        • GROUP BY, 집계 ν•¨μˆ˜, 쑰인 등을 μ΄μš©ν•΄ 미리 λ·°λ₯Ό λ§Œλ“€μ–΄λ†“μœΌλ©΄, λ³΅μž‘ν•œ SQL 문을 μž‘μ„±ν•˜μ§€ μ•Šμ•„λ„ SELECT 절과 FROM 절만으둜 μ›ν•˜λŠ” 데이터λ₯Ό 검색할 수 있음
      • λ°μ΄ν„°μ˜ λ³΄μ•ˆ μœ μ§€μ— 도움이 됨
        • μžμ‹ μ—κ²Œ 제곡된 λ·°λ₯Ό ν†΅ν•΄μ„œλ§Œ 데이터에 μ ‘κ·Όν•˜λ„λ‘ κΆŒν•œ μ„€μ • κ°€λŠ₯
      • 데이터λ₯Ό μ’€ 더 νŽΈλ¦¬ν•˜κ²Œ 관리할 수 있음
        • 제곡된 뷰에 ν¬ν•¨λ˜μ§€ μ•Šμ€ κΈ°λ³Έ ν…Œμ΄λΈ”μ˜ λ‹€λ₯Έ 뢀뢄은 μ‚¬μš©μžκ°€ μ‹ κ²½ μ“Έ ν•„μš” μ—†μŒ
  • 4.4 뷰의 μ‚­μ œ
      DROP VIEW λ·°_이름;
    • λ·°λ₯Ό μ‚­μ œν•˜λ”λΌλ„ κΈ°λ³Έ ν…Œμ΄λΈ”μ€ 영ν–₯을 받지 μ•ŠμŒ
    • μ‚­μ œν•  λ·°λ₯Ό μ°Έμ‘°ν•˜λŠ” μ œμ•½μ‘°κ±΄μ΄ 쑴재
      • λ·° μ‚­μ œκ°€ μˆ˜ν–‰λ˜μ§€ μ•ŠμŒ
      • κ΄€λ ¨λœ μ œμ•½μ‘°κ±΄ λ¨Όμ € μ‚­μ œ

[05] μ‚½μž… SQL

  • 5.1 μ‚½μž… SQL의 κ°œλ…κ³Ό νŠΉμ§•

    • μ‚½μž… SQL(ESQL; Embedded SQL)
      • ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ μž‘μ„±λˆ μ‘μš© ν”„λ‘œκ·Έλž¨ μ•ˆμ— μ‚½μž…ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” SQL λ¬Έ
    • μ£Όμš” νŠΉμ§•
      • μ‚½μž… SQL 문은 ν”„λ‘œκ·Έλž¨ μ•ˆμ—μ„œ 일반 λͺ…령문이 μœ„μΉ˜ν•  수 μžˆλŠ” 곳이면 μ–΄λ””λ“  μ‚½μž…ν•  수 있음
      • ν”„λ‘œκ·Έλž¨ μ•ˆμ˜ 일반 λͺ…λ Ήλ¬Έκ³Ό κ΅¬λ³„ν•˜κΈ° μœ„ν•΄ μ‚½μž… SQL λ¬Έ μ•žμ— EXEC SQL을 λΆ™μž„
      • ν”„λ‘œκ·Έλž¨μ— μ„ μ–Έλœ 일반 λ³€μˆ˜λ₯Ό μ‚½μž… SQL λ¬Έμ—μ„œ μ‚¬μš© κ°€λŠ₯
        • 단, SQL λ¬Έμ—μ„œ 일반 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” μ•žμ— : 을 λΆ™μ—¬ ν…Œμ΄λΈ” μ΄λ¦„μ΄λ‚˜ μ†μ„±μ˜ 이름과 ꡬ뢄함
    • μ»€μ„œ(cursor)
      • μˆ˜ν–‰ 결과둜 λ°˜ν™˜λœ μ—¬λŸ¬ 행을 ν•œ λ²ˆμ— ν•˜λ‚˜μ”© κ°€λ¦¬ν‚€λŠ” 포인터
      • μ—¬λŸ¬ 개의 행을 λ°˜ν™˜ν•˜λŠ” SELECT 문을 ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•  λ•Œ ν•„μš”
  • 5.2 μ»€μ„œκ°€ ν•„μš” μ—†λŠ” μ‚½μž… SQL

    • νŠΉλ³„νžˆ κ²°κ³Ό ν…Œμ΄λΈ”μ„ λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” CREATE TABLE λ¬Έ, INSERT λ¬Έ, DELETE λ¬Έ, UPDATE λ¬Έ, 결과둜 ν–‰ ν•˜λ‚˜λ§Œ λ°˜ν™˜ν•˜λŠ” SELETE 문은 μ»€μ„œκ°€ ν•„μš” μ—†μŒ
    int main() {
      exec sql begin declare section;
        char p_no[4], p_name[21];
        int price;
      exec sql end declare section;
    
      printf("μ œν’ˆλ²ˆν˜Έ μž…λ ₯: ");
      scanf("%s", p_no);
    
      exec sql select μ œν’ˆλͺ…, 단가 into :p_name, :price
        from μ œν’ˆ
        where μ œν’ˆλ²ˆν˜Έ = :p_no;
    
      printf("\n μ œν’ˆλͺ… = %s", p_name);
      printf("\n 단가 = %d", price);
    
      return 0;
    }
    • μž…λ ₯된 μ œν’ˆλ²ˆν˜Έμ— ν•΄λ‹Ήλ˜λŠ” μ œν’ˆλͺ…κ³Ό 단가λ₯Ό κ²€μƒ‰ν•˜λŠ” ν”„λ‘œκ·Έλž¨
    • BEGIN DECLARE SECTION λ¬Έμž₯κ³Ό END DECLARE SECTION λ¬Έμž₯ 사이에 μ‚½μž… SQL λ¬Έμ—μ„œ μ‚¬μš©ν•  λ³€μˆ˜ 미리 μ„ μ–Έ
    • μ‚½μž… SQL 문은 μ•žμ— EXEC SQL 을 λΆ™μ—¬μ„œ 일반 λͺ…령어와 ꡬ뢄함
  • 5.3 μ»€μ„œκ°€ ν•„μš”ν•œ μ‚½μž… SQL

    exec sql declare μ»€μ„œ_이름 cursor for select λ¬Έ;
    • μ»€μ„œλ₯Ό μ„ μ–Έν•˜λŠ” μ‚½μž… SQL λ¬Έ
      • μ»€μ„œλ₯Ό μ‚¬μš©ν•˜κΈ° 전에 μ»€μ„œμ˜ 이름과 μ»€μ„œκ°€ ν•„μš”ν•œ SELECT 문을 μ„ μ–Έ
    exec sql open μ»€μ„œ_이름;
    • μ»€μ„œμ— μ—°κ²°λœ SELECT 문을 μ‹€ν–‰ν•˜λŠ” μ‚½μž… SQL λ¬Έ
    exec sql fetch μ»€μ„œ_이름 into λ³€μˆ˜_리슀트;
    • μ»€μ„œλ₯Ό μ΄λ™μ‹œν‚€λŠ” μ‚½μž… SQL λ¬Έ
      • μ»€μ„œλ₯Ό μ΄λ™ν•˜μ—¬ μ²˜λ¦¬ν•  λ‹€μŒ 행을 가리킀도둝 ν•˜κ³ , μ»€μ„œκ°€ κ°€λ¦¬ν‚€λŠ” ν–‰μ—μ„œ 속성 값을 가져와 λ³€μˆ˜μ— μ €μž₯μ‹œν‚΄
      • κ²°κ³Ό ν…Œμ΄λΈ”μ—λŠ” μ—¬λŸ¬ 행이 μ‘΄μž¬ν•˜λ―€λ‘œ FETCH 문은 μ—¬λŸ¬ 번 μˆ˜ν–‰ν•΄μ•Ό 함
    exec sql close μ»€μ„œ_이름;
    • μ»€μ„œμ˜ μ‚¬μš©μ„ μ’…λ£Œν•˜λŠ” μ‚½μž… SQL λ¬Έ
728x90
λ°˜μ‘ν˜•

'Development Study' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Lecture] DataBase - Day 8  (0) 2023.05.15
[Lecture] Data Communication - Day 8  (0) 2023.05.14
[Lecture] Operating System - Mid Summary  (0) 2023.04.23
[Lecture] Operating System with Ubuntu - Day 6  (0) 2023.04.23
[Lecture] DataBase - Mid Summary  (0) 2023.04.22
Comments