Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«MySQL 5.0. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор Π’ΠΈΠΊΡ‚ΠΎΡ€ Π“ΠΎΠ»ΡŒΡ†ΠΌΠ°Π½

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ рассмотрим возмоТности комбинирования запросов.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ запроса являСтся массив Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ запросС. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ запросами ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†. НапримСр, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список ΠΈΠΌΠ΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π·Π°ΠΊΠ°Π·Ρ‹Π²Π°Π²ΡˆΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ β„– 5, ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса:

SELECT name FROM Customers

WHERE id IN

(SELECT DISTINCT customer_id FROM Orders

WHERE product_id = 5);

Π—Π΄Π΅ΡΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Orders (Π—Π°ΠΊΠ°Π·Ρ‹) Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π·Π°ΠΊΠ°Π·Π°Π²ΡˆΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ β„– 5. Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² подзапроса ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ IN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истинноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (TRUE), Ссли элСмСнт слСва ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° совпадаСт с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· элСмСнтов списка справа ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ IN провСряСт, содСрТится Π»ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца id) Π² спискС Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ², Π²Ρ‹Π΄Π°Π½Π½Ρ‹Ρ… подзапросом. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, внСшний запрос Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠΌΠ΅Π½Π° Ρ‚Π΅Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ подзапроса (Ρ‚Π°Π±Π». 2.14). Π’Π°Π±Π»ΠΈΡ†Π° 2.14. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ с использованиСм объСдинСния Ρ‚Π°Π±Π»ΠΈΡ†:

SELECT DISTINCT name FROM Customers, Orders WHERE Customers.id = customer_id AND product_id = 5;

Однако Π½Π΅ всСгда Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы ΠΈ объСдинСния Ρ‚Π°Π±Π»ΠΈΡ† взаимозамСняСмы. Π’ частности, запросы с объСдинСниями ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· всСх ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² запросС Ρ‚Π°Π±Π»ΠΈΡ†, Π° запросы с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ запросами, β€“ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²ΠΎ внСшнСм запросС. А с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запросов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Π΅ (Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Π΅) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² подзапросах, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π½Π΅ достиТимый Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ способами. НапримСр, вывСсти Π·Π°ΠΊΠ°Π· с наибольшСй суммой ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса, ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ сумму Π·Π°ΠΊΠ°Π·Π°:

SELECT * FROM Orders WHERE amount = (SELECT MAX(amount) FROM Orders);

Π’ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ запросС групповая функция MAX Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ наибольшСС ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца amount (сумма) Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Orders (Π—Π°ΠΊΠ°Π·Ρ‹) β€“ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 22 000. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ запрос, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Orders, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца amount Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π²Ρ‹Π΄Π°Π½Π½ΠΎΠΌΡƒ подзапросом, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 22 000 (Ρ‚Π°Π±Π». 2.15). Π’Π°Π±Π»ΠΈΡ†Π° 2.15. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

О Π΄Ρ€ΡƒΠ³ΠΈΡ… Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Ρ… функциях, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² подзапроса, Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π² Π³Π»Π°Π²Π΅ 3.

ΠžΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² запрос ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ подзапросы, ΠΈ объСдинСния Ρ‚Π°Π±Π»ΠΈΡ†. Π’Π΅ΠΌ самым Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ возмоТности для поиска ΠΈ ΠΎΡ‚Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ….

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ совмСстного использования запросов – объСдинСниС запросов.

ОбъСдинСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запросов

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько запросов Π² ΠΎΠ΄Π½Ρƒ SQL-ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ, соотвСтствСнно, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запросов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово UNION. Запросы, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ UNION, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ количСство столбцов, ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… столбцов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ совмСстимы. ΠŸΡ€ΠΈ объСдинСнии Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² автоматичСски ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ строки; Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ строк, вмСсто слова UNION Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ UNION ALL. НаконСц, строки объСдинСнного запроса ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния ORDER BY. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим запрос, выводящий ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°ΠΊΠ°Π·Π°Ρ… с наибольшСй ΠΈ наимСньшСй суммой Π·Π°ΠΊΠ°Π·Π°:

SELECT * FROM Orders

WHERE amount = (SELECT MAX(amount) FROM Orders)

UNION

SELECT * FROM Orders

WHERE amount = (SELECT MIN(amount) FROM Orders)

ORDER BY 1;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния этого запроса Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‚Π°Π±Π». 2.16). Π’Π°Π±Π»ΠΈΡ†Π° 2.16. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ запрос Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Orders, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля amount максимально (это строка с id = 1013), Π²Ρ‚ΠΎΡ€ΠΎΠΉ – строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля amount минимально (это строка с id = 1012), ΠΈ ΠΏΡ€ΠΈ упорядочСнии ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ столбца id строки ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ рассмотрСли основныС возмоТности поиска ΠΈ ΠΎΡ‚Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, прСдоставляСмыС ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ SELECT. Π”Π°Π»Π΅Π΅ рассмотрим, ΠΊΠ°ΠΊ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса Π² Ρ„Π°ΠΉΠ».

Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса Π±Ρ‹Π» сохранСн Π² Ρ„Π°ΠΉΠ», Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ SELECT Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

INTO OUTFILE \'ΠŸΡƒΡ‚ΡŒ ΠΈ имя Ρ„Π°ΠΉΠ»Π°\' [FILEDS …] [LINES …]

Π’ этой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ (этот Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΌ, Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ). ΠŸΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊΠΎΡΡƒΡŽ Ρ‡Π΅Ρ€Ρ‚Ρƒ вмСсто принятой Π² Windows ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ косой Ρ‡Π΅Ρ€Ρ‚Ρ‹. Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» создаСтся Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сСрвСр MySQL. Π”Π°Π½Π½Ρ‹Π΅ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ хранятся Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ FILEDS ΠΈ LINES, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ смысл, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ FILEDS ΠΈ LINES ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ LOAD DATA (см. ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π°Β»). Если впослСдствии Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… MySQL с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ LOAD DATA, Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ LOAD DATA Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ самыС значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² FILEDS ΠΈ LINES, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ SELECT… INTO OUTFILE ΠΈ LOAD DATA ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ для пСрСноса Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСр MySQL. НапримСр, Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Customers (ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹), сохранСнныС Π² Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

SELECT * from Customers INTO OUTFILE \'C:/data/Customers.txt\

ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Customers_copy (ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ структуру, Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° Customers) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

LOAD DATA INFILE \'C:/data/Customers.txt\' INTO TABLE Customers_copy;

...

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!

Π’ случаС Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ количСством Π±Π°ΠΉΡ‚ΠΎΠ² Π½Π° символ Π² этой ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅. Если Π²Ρ‹ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ UTF-8, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ. НапримСр, ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚ (ΠŸΡƒΡΠΊ β†’ ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β†’ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ β†’ Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚), Π² мСню Π€Π°ΠΉΠ» Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ, Π° Π·Π°Ρ‚Π΅ΠΌ Π² стандартном ΠΎΠΊΠ½Π΅ Windows Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π² ΠΏΠΎΠ»Π΅ ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«ANSIΒ» ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ LOAD DATA ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ CHARACTER SET cp1251 (см. ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» «Вставка ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк»).

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ освоили ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ SELECT, которая прСдоставляСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности поиска ΠΈ ΠΎΡ‚Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. ПослСдняя опСрация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ обсудим Π² этой Π³Π»Π°Π²Π΅, β€“ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ….

2.6. ИзмСнСниС Π΄Π°Π½Π½Ρ‹Ρ…

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ измСнСния, замСщСния ΠΈ удалСния строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. НачнСм с рассмотрСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ UPDATE, которая позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ значСния Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

UPDATE <Имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹>

SET <Имя столбца 1> = <Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1>,

…,

<Имя столбца N> = <Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ N>

[WHERE <УсловиС ΠΎΡ‚Π±ΠΎΡ€Π°>]

[ORDER BY <Имя столбца> [ASC ΠΈΠ»ΠΈ DESC]]

[LIMIT <ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк>];

НапримСр, Ссли Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠšΡ€Ρ‹Π»ΠΎΠ² измСнился Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

UPDATE Customers SET phone = \'444-25-27\' WHERE id = 536;

Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ UPDATE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

β€’ ΠΈΠΌΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹;

β€’ SET <Имя столбца 1> = <Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1>, … , <Имя столбца N> = <Π—Π½aΡ‡Π΅Π½ΠΈΠ΅ N> β€“ список столбцов ΠΈ Π½ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для этих столбцов. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вставкС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… взаимодСйствия с сСрвСром MySQL Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ «Вставка ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк». Π—Π°Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠ΅ значСния Π² строкС. НапримСр, ΡƒΠ΄Π²ΠΎΠΈΡ‚ΡŒ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ для всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

UPDATE Customers SET rating = rating*2;

β€’ WHERE <УсловиС ΠΎΡ‚Π±ΠΎΡ€Π°> β€“ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ условиС ΠΎΡ‚Π±ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ измСнСния Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ‚Π΅ΠΌ строкам Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ этому ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. Если условиС ΠΎΡ‚Π±ΠΎΡ€Π° Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊΠΎ всСм строкам Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Условия ΠΎΡ‚Π±ΠΎΡ€Π° ΠΌΡ‹ рассматривали Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ «Условия ΠΎΡ‚Π±ΠΎΡ€Π°Β». Π’ условиях ΠΎΡ‚Π±ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос (см. ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» Β«Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы»), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ самой ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

β€’ ORDER BY <Имя столбца> [ASC ΠΈΠ»ΠΈ DESC] – ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ измСнСния ΠΊ строкам Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ порядок примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ влияСт Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π°ΠΆΠ½Π°. НапримСр, Ссли Π²Ρ‹ установили ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство измСняСмых строк (см. ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚), Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ строки, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΎΡ‚Π±ΠΎΡ€Π°, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ это Π±ΡƒΠ΄ΡƒΡ‚ строки – зависит ΠΎΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π”Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ случаСм являСтся ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΈΠ»ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ»ΠΈ отсутствиС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² столбцС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ порядка примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.