πŸ“œ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ SQL-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ запросы с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ

Π’ нСбольшом ΠΎΠ±Π·ΠΎΡ€Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ языка запросов SQL ΠΈ сдСлаСм шаг Π² сторону Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ³ΠΎ изучСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠ± SQL

Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π”) – обычная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° для срСднСго ΠΈ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ бизнСса. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΏΡ€ΠΈ нСобходимости Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½ΡƒΠΆΠ½Ρ‹ΠΌ свСдСниям. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ SQL β€” структурированный язык запросов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для извлСчСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ хранящСйся ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Запросы языка ΠΈ нСпосрСдствСнно сам SQL ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° нСсколько ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ.

1. Π―Π·Ρ‹ΠΊ опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ…

Π―Π·Ρ‹ΠΊ опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ DDL позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π‘Π”, ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… структуру, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° размСщСния Π² Π½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ DDL:

  1. ALTER β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ столбцы.
  2. COLLATE β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сопоставлСния.
  3. CREATE β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  4. DROP β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ удалСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  5. DISABLE TRIGGER β€” ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€.
  6. ENABLE TRIGGER β€” Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€.
  7. RENAME β€” ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ.
  8. UPDATE STATISTICS β€” ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ статистику.

2. Π―Π·Ρ‹ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… DML

Π―Π·Ρ‹ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… DML позволяСт ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π‘Π”, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡƒΠΆΠ΅ Π²Π½Π΅ΡΠ΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Под Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°Π΅Ρ‚ основная Ρ‡Π°ΡΡ‚ΡŒ всСх SQL ΠΊΠΎΠΌΠ°Π½Π΄.

Запросы DML:

  1. BULK INSERT β€” для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.
  2. SELECT β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ запроса, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ свСдСния.
  3. DELETE β€” удаляСт строки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†.
  4. UPDATE β€” измСняСт Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.
  5. INSERT β€” вставляСт Π½ΠΎΠ²Ρ‹Π΅ записи.
  6. UPDATETEXT β€” обновляСт тСкст.
  7. MERGE β€” смСсь ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² UPDATE ΠΈ INSERT.
  8. WRITETEXT β€” запись тСкста.
  9. READTEXT β€” Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ тСкста.

3. Π―Π·Ρ‹ΠΊ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ DCL

Π―Π·Ρ‹ΠΊ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ DCL позволяСт Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΌ установки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€Π°Π² Π‘Π£Π‘Π”.

DCL -запросы:

  1. GRANT β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….
  2. REVOKE β€” ΠΎΡ‚ΠΌΠ΅Π½Π° Π²Ρ‹Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.
  3. DENY β€” ΠΎΡ‚Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствия.

4. Π―Π·Ρ‹ΠΊ управлСния транзакциями TCL

Π―Π·Ρ‹ΠΊ управлСния транзакциями TCL слуТит для управлСния измСнСниями, происходящими Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ DML-запросов, ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ эти DML-запросы Π² Π½Π°Π±ΠΎΡ€Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

TCL ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

  1. BEGIN β€” опрСдСляСм Π½Π°Ρ‡Π°Π»ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  2. COMMIT β€” фиксируСм измСнСния.
  3. ROLLBACK β€” ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС измСнСния.
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста»

5. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SQL: Select

Π‘ΡƒΠ΄Π΅Ρ‚ слоТно ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΉ малСнькой ΡΡ‚Π°Ρ‚ΡŒΠ΅ всС особСнности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с SQL. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π²ΠΈΠ΄Ρ‹ SQL-запросов с использованиСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова SELECT. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, нСобходимая для извлСчСния (чтСния) Π½ΡƒΠΆΠ½ΠΎΠΉ Π½Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ практичСскиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния Ρ‚Π°ΠΊΠΈΡ… запросов Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ созданной Π½Π°ΠΌΠΈ Π² Π‘Π” Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Clients с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ покупатСлях условного ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°.

Cousomer_id First_name Last_name Age Country
1 Абрам Π Π°Π±ΠΈΠ½ΠΎΠ²ΠΈΡ‡ 31 Россия
2 ДСнис ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² 22 Россия
3 Иван Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² 22 Латвия
4 ДСнис ΠšΡƒΠ·Π½Π΅Ρ†ΠΎΠ² 25 Латвия
5 Π‘Π°Ρ€Π° Π Π°Π±ΠΈΠ½ΠΎΠ²ΠΈΡ‡ 28 Π‘Π΅Π»Π°Ρ€ΡƒΡΡŒ

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² Π±Π°Π·Ρƒ свСдСниями ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ рассматриваСмой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹?

1. Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅Π½Π° всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ FROM Π² этой конструкции ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΈΠ· ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π΅ (эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ) Π²Π·ΡΡ‚ΡŒ.

НапримСр:

SELECT first_name, last_name
FROM Clients;

2. Для Π²Ρ‹Π±ΠΎΡ€Π° всСх столбцов ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ символ *.

SELECT *
FROM Clients;

3. Команда SELECT ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ WHERE, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ записи, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ условиям. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ Π Π°Π±ΠΈΠ½ΠΎΠ²ΠΈΡ‡:

SELECT *
FROM Clients;
WHERE last_name = 'Π Π°Π±ΠΈΠ½ΠΎΠ²ΠΈΡ‡';

4. Π—Π΄Π΅ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Select ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ· России:

SELECT age
FROM Clients;
WHERE country = 'Россия';
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
Π’ SQL ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.

5. Π’Π°ΠΊΠΆΠ΅ для поиска достаточно часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², возраст ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 25 Π»Π΅Ρ‚:

SELECT *
FROM Clients;
WHERE age > 25;

6. А Ρ‚ΡƒΡ‚ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ Π Π°Π±ΠΈΠ½ΠΎΠ²ΠΈΡ‡ ΠΏΡ€ΠΎΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π² России.

SELECT *
FROM Clients;
WHERE last_name = 'Π Π°Π±ΠΈΠ½ΠΎΠ²ΠΈΡ‡' AND country = 'Россия';

7. Π—Π΄Π΅ΡΡŒ SELECT Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ссли всС условия, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ AND, Π±ΡƒΠ΄ΡƒΡ‚ истинны. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π° всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ· России:

SELECT first_name
FROM Clients;
WHERE country = 'Россия' AND last_name = 'ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²';

По Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ OR (ΠΈΠ»ΠΈ), c Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Π² этом случаС систСма Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ элСмСнты Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ хотя Π±Ρ‹ с ΠΎΠ΄Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ условия.

8. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SQL NOT Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ строку, Ссли Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ условиС Ρ€Π°Π²Π½ΠΎ FALSE. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΠΌΠ΅Π½Π° ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π²ΠΎ всСх странах, ΠΊΡ€ΠΎΠΌΠ΅ Π›Π°Ρ‚Π²ΠΈΠΈ.

SELECT first_name, last_name
FROM Clients;
WHERE NOT country = 'Латвия

9. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² AND, OR ΠΈ NOT Π² ΠΎΠ΄Π½ΠΎΠΌ запросС. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ· России ΠΈΠ»ΠΈ БСларуси, возраст ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСньшС 26 .

SELECT *
FROM Clients;
WHERE (country = 'Россия' OR country = 'Π‘Π΅Π»Π°Ρ€ΡƒΡΡŒ') AND age < 26;

10. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SQL SELECT DISTINCT Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…, строки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π΅ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ страны проТивания ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

SELECT DISTINCT country
FROM Clients;

11. А здСсь ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½Π΅ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² страна + имя.

SELECT DISTINCT country, first_name
FROM Clients;

12. Если Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… строк, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ COUNT() Π² совокупности с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ DISTINCT. Π—Π΄Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° SELECT Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… стран:

SELECT COUNT(DISTINCT country)
FROM Clients;

13. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово AS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для присвоСния столбцам ΠΈΠ»ΠΈ всСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π΅Π³ΠΎ ΠΈΠ»ΠΈ Π΅Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ соотвСтствСнно. Π—Π΄Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ столбСц first_name Π½Π° name.

SELECT first_name AS name
FROM Clients;

14. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ TOP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π±ΠΎΡ€Π° фиксированного количСства строк ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 2 строки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

SELECT TOP 2 *
FROM Clients;

15. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово LIMIT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ систСмами Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: MySQL, PostgreSQL, SQLite. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ возраста ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° двумя ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ строками Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

SELECT first_name, age
FROM Clients;
LIMIT 2;

16. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ IN ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ WHERE для сопоставлСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² спискС. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΠΌΠ΅Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π»ΠΈΠ±ΠΎ Π² России, Π»ΠΈΠ±ΠΎ Π² Π›Π°Ρ‚Π²ΠΈΠΈ.

SELECT first_name, country
FROM Clients;
WHERE country IN ('Россия', 'Латвия');

17. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ IN Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π±ΠΎΡ€Π° строк с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π—Π΄Π΅ΡΡŒ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ строки со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Россия Π² ΠΏΠΎΠ»Π΅ country.

SELECT first_name, country
FROM Clients;
WHERE 'Россия' in (country);

18. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ORDER BY ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сортировки Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² порядкС возрастания ΠΈΠ»ΠΈ убывания. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π° Π·Π°Ρ‚Π΅ΠΌ сортируСм ΠΈΡ… Π² порядкС возрастания ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ (Ρ‚. Π΅. ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ).

SELECT *
FROM Clients;
ORDER BY first_name;

19. Π§Ρ‚ΠΎΠ±Ρ‹ явно ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ записи Π² порядкС возрастания, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ASC. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π° Π·Π°Ρ‚Π΅ΠΌ сортируСм ΠΈΡ… Π² порядкС возрастания ΠΏΠΎ возрасту.

SELECT *
FROM Clients;
ORDER BY age ASC;

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово DESC примСняСтся для Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ сортировки, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² порядкС убывания.

20. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ORDER BY ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с нСсколькими столбцами. Π’ конструкции Π½ΠΈΠΆΠ΅ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ всС записи, Π° Π·Π°Ρ‚Π΅ΠΌ сортируСм ΠΈΡ… ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Если имя повторяСтся Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, SQL сортируСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ возрасту.

SELECT *
FROM Clients;
ORDER BY first_name, age;

21. МоТСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ORDER BY вмСстС с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом WHERE. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ сначала Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΈ возрастС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ ΠΈΠ· России. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ записи сортируСм Π² порядкС убывания ΠΏΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ:

SELECT last_name, age
FROM Clients;
WHERE NOT country = 'UK'
ORDER BY last_name DESC;

22. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅ΠΌ строки ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ country ΠΈ подсчитываСм количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ стран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ COUNT().

SELECT country, COUNT(*) AS number
FROM Clients;
GROUP BY country;
***

Π­Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SELECT ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ довольно ΠΌΠ½ΠΎΠ³ΠΎ. Однако, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ написания Ρ‚Π°ΠΊΠΈΡ… запросов. По Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ счСту, язык запросов Π½Π΅ Ρ‚Π°ΠΊ слоТСн ΠΈ основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ усидчивости ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π° нСдСлю. Ну Π° дальшС – ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Π° практичСский ΠΎΠΏΡ‹Ρ‚ накапливаСтся Π΄ΠΎΠ»Π³ΠΎ. Π£Π΄Π°Ρ‡ΠΈ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ.

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

eFusion
08 января 2020

11 Ρ‚ΠΈΠΏΠΎΠ² соврСмСнных Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ описания, схСмы ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π‘Π”

Π›ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π³Π΄Π΅-Ρ‚ΠΎ хранятся. Π‘ΡƒΠ΄ΡŒ это ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π²Π΅Ρ‰Π΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π² *nix. По...
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
29 июня 2017

5 сайтов для оттачивания Π½Π°Π²Ρ‹ΠΊΠΎΠ² написания SQL-запросов

Одним ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… являСтся ΡƒΠΌΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ...
admin
23 фСвраля 2017

SQL Π·Π° 20 ΠΌΠΈΠ½ΡƒΡ‚

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΡΡ‚Π°Ρ‚ΡŒΡŽ с ΠΊΡ€ΠΈΡ‡Π°Ρ‰ΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "SQL Π·Π° 20 ΠΌΠΈΠ½ΡƒΡ‚". К...