Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис SQL для систСмного Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ тСзисы

  • SQL β€” язык для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСляционными Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  • БистСмному Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΡƒ SQL Π½ΡƒΠΆΠ΅Π½ для ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³ΠΈΠΏΠΎΡ‚Π΅Π·, уточнСния Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠΊΠΈ.
  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ запросов: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… (DDL), ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (DML), ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями.
  • Для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ SELECT, JOIN ΠΈ подзапросы.
  • Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ JOIN ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ подзапросов ΠΈΠ·-Π·Π° Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

🎯 Π—Π°Ρ‡Π΅ΠΌ SQL систСмному Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΡƒ?

  • Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: построСниС запросов Π±Π΅Π· постоянного обращСния ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ.
  • ВСрификация ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³ΠΈΠΏΠΎΡ‚Π΅Π·: прямая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° коррСктности Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ бизнСс-ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½Π°Π»ΠΈΠ· цСлСсообразности скидки для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² с >10 Π·Π°ΠΊΠ°Π·ΠΎΠ²).
  • Π£Ρ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ тСхничСских Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ: ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ структуры хранСния Π΄Π°Π½Π½Ρ‹Ρ… для написания Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.
  • ВСстированиС ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠΊΠ°: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° коррСктности записи Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ расчётов послС Ρ€Π΅Π»ΠΈΠ·Π°.

πŸ“‚ ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ SQL-запросов

  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… (DDL): CREATE, ALTER, DROP. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания, измСнСния ΠΈ удалСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π‘Π” (Ρ‚Π°Π±Π»ΠΈΡ†, Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, индСксов ΠΈ Ρ‚.Π΄.).
  2. ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (DML): INSERT, UPDATE, DELETE, SELECT. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†.
  3. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом: GRANT (Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π°), REVOKE (Π·Π°Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π°).
  4. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями: COMMIT (Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ), ROLLBACK (ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ), SAVEPOINT (Ρ‚ΠΎΡ‡ΠΊΠ° сохранСния), SET TRANSACTION (установка характСристик).

πŸ› οΈ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ опрСдСлСния ΠΈ манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (DDL & DML)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ структуры (DDL)

  • CREATE: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
    CREATE TABLE applicants (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        last_name TEXT,
        name TEXT
    );
    
    AUTOINCREMENT β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля автоматичСски увСличиваСтся Π½Π° 1 с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ записСй.
  • ALTER: ИзмСнСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ столбца).
    ALTER TABLE applicants RENAME COLUMN name TO first_name;
    
  • DROP: Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.Π΄.).

Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (DML)

  • INSERT: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… записСй. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΈ количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ порядку ΠΈ количСству ΠΏΠΎΠ»Π΅ΠΉ.
    INSERT INTO applicants (last_name, first_name) VALUES ('Иванов', 'Иван');
    
  • UPDATE: ОбновлСниС Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… строках ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. Π‘Π΅Π· условия WHERE ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ всС строки.
    UPDATE applicants SET last_name = 'ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²' WHERE first_name = 'Иван';
    
  • DELETE vs TRUNCATE:
    • DELETE: УдаляСт строки ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, пСрСбирая ΠΈΡ… ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π²Π΅Π·Π΄Π΅.
    • TRUNCATE: УдаляСт всС записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сразу (Π½Π΅ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π½Π΅ Π²ΠΎ всСх Π‘Π£Π‘Π”.

πŸ” Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… (SELECT)

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ порядок выполнСния запроса

SELECT -- 5. Π§Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ (столбцы/вычислСния)?
FROM   -- 1. ΠžΡ‚ΠΊΡƒΠ΄Π° (Ρ‚Π°Π±Π»ΠΈΡ†Π°)?
WHERE  -- 2. УсловиС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ строк?
GROUP BY -- 3. Как ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?
HAVING -- 4. УсловиС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ послС Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ?
ORDER BY -- 6. Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚?

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ элСмСнты SELECT

  • ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ (AS): Для пСрСимСнования столбцов, Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² вычислСний Π² Π²Ρ‹Π²ΠΎΠ΄Π΅. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово AS часто ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.
  • WHERE β€” условия Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ:
    • IN β€” совпадСниС с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ списка.
    • BETWEEN ... AND ... β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅.
    • LIKE β€” поиск ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ (% β€” любоС количСство символов, _ β€” ΠΎΠ΄ΠΈΠ½ символ).
    • IS NULL β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° пустоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
  • GROUP BY ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° строк для вычислСний.
    • COUNT() β€” количСство строк.
    • SUM() β€” сумма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.
    • AVG() β€” срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
    • MIN() / MAX() β€” минимальноС/максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
    -- ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Бтатистика ΠΏΠΎ позициям
    SELECT
        position,
        COUNT(*) as applicant_count,
        AVG(experience) as avg_exp,
        MIN(salary_expectation) as min_salary,
        MAX(salary_expectation) as max_salary
    FROM applicants
    GROUP BY position;
    
  • HAVING: УсловиС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ для сгруппированных Π΄Π°Π½Π½Ρ‹Ρ… (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ послС GROUP BY). Аналогично WHERE, Π½ΠΎ для Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².
  • ORDER BY: Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². ASC β€” ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), DESC β€” ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ.

πŸ”— ОбъСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† (JOIN)

JOIN ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΠΎ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ JOIN

  • (INNER) JOIN: Π’Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ строки ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†.
  • LEFT (OUTER) JOIN: Π’Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ всС строки ΠΈΠ· Π»Π΅Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ· ΠΏΡ€Π°Π²ΠΎΠΉ. ΠΠ΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ значСния ΠΈΠ· ΠΏΡ€Π°Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ NULL.
    -- Найти соискатСлСй Π±Π΅Π· ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠΎΠ²
    SELECT a.*
    FROM applicants a
    LEFT JOIN applications ap ON a.id = ap.applicant_id
    WHERE ap.applicant_id IS NULL;
    
  • RIGHT JOIN: АналогичСн LEFT JOIN, Π½ΠΎ ΠΎΠΏΠΎΡ€Π½ΠΎΠΉ являСтся правая Ρ‚Π°Π±Π»ΠΈΡ†Π°.
  • FULL JOIN: Π’Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ всС записи ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅.
  • USING: Упрощённая запись ON ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ соСдиняСмыС столбцы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ имя Π² ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ….

πŸ“Œ ΠŸΠΎΠ΄Π·Π°ΠΏΡ€ΠΎΡΡ‹

ΠŸΠΎΠ΄Π·Π°ΠΏΡ€ΠΎΡ β€” это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SELECT, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ запрос.

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ подзапросов

  1. По Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ:
    • Бкалярный: Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠΎΠ΄Π½Π° строка, ΠΎΠ΄ΠΈΠ½ столбСц).
    -- БоискатСли с Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΌΠΈ оТиданиями Π²Ρ‹ΡˆΠ΅ срСднСго
    SELECT * FROM applicants
    WHERE salary_expectation > (SELECT AVG(salary_expectation) FROM applicants);
    
    • Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ: Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ).
  2. По способу выполнСния:
    • ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ: ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСзависимо ΠΎΡ‚ основного запроса.
    • Π‘Π»ΠΎΠΆΠ½Ρ‹ΠΉ (ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ): БсылаСтся Π½Π° столбцы внСшнСго запроса, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ EXISTS.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ подзапросами

  • IN: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° принадлСТности Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈΠ· мноТСства.
  • ANY/SOME: УсловиС истинно, Ссли выполняСтся хотя Π±Ρ‹ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния ΠΈΠ· подзапроса (фактичСски сравнСниС с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² подзапросС).
  • ALL: УсловиС истинно, Ссли выполняСтся для всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· подзапроса (фактичСски сравнСниС с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ).
  • EXISTS: Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ TRUE, Ссли подзапрос Π²Π΅Ρ€Π½ΡƒΠ» хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ строку.

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ подзапросам

  • ΠŸΠΎΠ΄Π·Π°ΠΏΡ€ΠΎΡ всСгда Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки.
  • ΠŸΠΎΠ΄Π·Π°ΠΏΡ€ΠΎΡ Π² условии SELECT ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ столбСц.
  • ΠœΠΈΠ½ΡƒΡΡ‹: ΠœΠΎΠ³ΡƒΡ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, особСнно с большими ΠΎΠ±ΡŠΡ‘ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  • РСкомСндация: По возмоТности Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ подзапросы Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ JOIN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ эффСктивнСС.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

  • Π’Π»Π°Π΄Π΅Π½ΠΈΠ΅ SQL критичСски Π²Π°ΠΆΠ½ΠΎ для систСмного Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° для Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
  • Основной фокус Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° β€” Π½Π° опСрациях Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ (SELECT, JOIN) ΠΈ манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (DML).
  • ПониманиС порядка выполнСния запроса (FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY) ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π² построСнии ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΈ эффСктивных запросов.
  • Для объСдинСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JOIN, Π° Π½Π΅ подзапросы, ΠΈΠ·-Π·Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.