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

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

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ внСсСны Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… для нахоТдСния Π½ΡƒΠΆΠ½Ρ‹Ρ… Π²Π°ΠΌ свСдСний. Об этом ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

2.5. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†

Для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ запросы – SQL-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова SELECT. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ со структурой запросов.

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ запросы

Знакомство с запросами Π½Π°Ρ‡Π½Π΅ΠΌ с Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всС Π΄Π°Π½Π½Ρ‹Π΅, содСрТащиСся Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

SELECT * FROM <Имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹>;

НапримСр, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния запроса

SELECT * FROM Customers;

Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… (см. рис. 2.2 ΠΈ 2.4).

...

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ изобраТСниями ΠΎΠΊΠΎΠ½ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ запроса, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΊΠ½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ запроса Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ΠœΡ‹ с Π²Π°ΠΌΠΈ ограничимся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ запросом Π΄Π°Π½Π½Ρ‹Π΅.

ВмСсто Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ список столбцов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя, Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ ΠΈ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ запрос

SELECT name,phone,rating FROM Customers;

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

ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запроса ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния столбцов, Π½ΠΎ ΠΈ значСния, вычислСнныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

НапримСр, запрос

SELECT name,phone,rating/1000 FROM CUSTOMERS;

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° 1000 (Ρ‚Π°Π±Π». 2.5). Π’Π°Π±Π»ΠΈΡ†Π° 2.5. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

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

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запросов ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ значСния Π±Π΅Π· обращСния ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

НапримСр, запрос

SELECT 2*2;

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 4 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ строки. НапримСр, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ, поэтому запрос

SELECT rating FROM Customers;

Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ строки (Ρ‚Π°Π±Π». 2.6). Π’Π°Π±Π»ΠΈΡ†Π° 2.6. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ повторСния ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² тСкст запроса ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово DISTINCT. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π½Π΅ содСрТащий Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ запрос

SELECT DISTINCT rating FROM Customers;

ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (Ρ‚Π°Π±Π». 2.7). Π’Π°Π±Π»ΠΈΡ†Π° 2.7. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ строки, Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ запросом, ΠΏΠΎ значСниям ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· столбцов, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² тСкст запроса Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

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

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ASC ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сортировка выполняСтся ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ, DESC – ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Если Π½ΠΈ Ρ‚ΠΎ, Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ слово Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, выполняСтся сортировка ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для сортировки ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сразу нСсколько столбцов, Ρ‚ΠΎΠ³Π΄Π° строки Π±ΡƒΠ΄ΡƒΡ‚ отсортированы ΠΏΠΎ значСниям ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ· столбцов, строки с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ столбцС Π±ΡƒΠ΄ΡƒΡ‚ отсортированы ΠΏΠΎ значСниям Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ· столбцов ΠΈ Ρ‚. Π΄. НапримСр, запрос

SELECT name,phone,rating FROM Customers ORDER BY rating DESC, name;

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (Ρ‚Π°Π±Π». 2.8). Π’Π°Π±Π»ΠΈΡ†Π° 2.8. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запроса Π²Π½Π°Ρ‡Π°Π»Π΅ располагаСтся строка с наибольшим Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΎΠΌ, Π° строки с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΎΠΌ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС ΠΈΠΌΠ΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

ВмСсто ΠΈΠΌΠ΅Π½ столбцов Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ORDER BY ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… порядковыС ΠΈΠΌΠ΅Π½Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запроса. НапримСр, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ запрос Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ запросу

SELECT name,phone,rating FROM Customers ORDER BY 3 DESC, 1;

Запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Π² этом ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· всСх ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ строк. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ запросы для ΠΎΡ‚Π±ΠΎΡ€Π° строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Условия ΠΎΡ‚Π±ΠΎΡ€Π°

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ строки, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² тСкст запроса Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

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

НапримСр, запрос

SELECT name,phone,rating FROM Customers WHERE rating = 1000;

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Π° Ρ€Π°Π²Π½ΠΎ 1000 (Ρ‚Π°Π±Π». 2.9). Π’Π°Π±Π»ΠΈΡ†Π° 2.9. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

Π’ условии ΠΎΡ‚Π±ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка SQL (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ Π½ΠΈΡ… Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π² Π³Π»Π°Π²Π΅ 3), Π² Ρ‚ΠΎΠΌ числС логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ AND ΠΈ OR для создания составных условий ΠΎΡ‚Π±ΠΎΡ€Π°.

НапримСр, запрос

SELECT name,phone,rating FROM Customers

WHERE name LIKE \'ООО%\' OR rating>1000

ORDER BY rating DESC;

Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ…, Ρ‡ΡŒΠ΅ имя начинаСтся с «ООО», Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Ρ‚Π΅Ρ…, Ρ‡Π΅ΠΉ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ прСвосходит 1000, упорядочивая строки Π² порядкС убывания значСния Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Π° (Ρ‚Π°Π±Π». 2.10). Π’Π°Π±Π»ΠΈΡ†Π° 2.10. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

Пока ΠΌΡ‹ рассматривали запросы, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ запросах, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ сразу ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†.

ОбъСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅, ΡƒΠΊΠ°Π·Π°Π² Π² запросС список столбцов ΠΈ список Ρ‚Π°Π±Π»ΠΈΡ†, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ:

SELECT <Бписок столбцов> FROM <Бписок Ρ‚Π°Π±Π»ΠΈΡ†> WHERE <УсловиС ΠΎΡ‚Π±ΠΎΡ€Π°>;

НапримСр, Ссли трСбуСтся вывСсти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ всСх Π·Π°ΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π΄Π°Ρ‚Ρƒ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ ΠΈ адрСсов Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

SELECT name,address,product_id,qty

FROM Customers, Orders

WHERE Customers.id = customer_id AND date = \'2007-12-12\

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

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого запроса ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· столбцов name (имя) ΠΈ address (адрСс) Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Customers (ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹) ΠΈ столбцов product_id (Ρ‚ΠΎΠ²Π°Ρ€) ΠΈ qty (ΠΊΠΎΠ»-Π²ΠΎ) Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Orders (Π—Π°ΠΊΠ°Π·Ρ‹). Π£ΠΊΠ°Π·Π°Π² условиС WHERE Customers. id = customer_id, ΠΌΡ‹ сообщили ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ MySQL, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ свСдСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Π·Π°ΠΊΠ°Π·Π°Ρ… этого ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π˜Π½Π°Ρ‡Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π±Ρ‹ бСссмыслСнный Π½Π°Π±ΠΎΡ€ всСвозмоТных ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Customers с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Orders. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ столбСц с ΠΈΠΌΠ΅Π½Π΅ΠΌ id Π΅ΡΡ‚ΡŒ ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Customers, ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Orders, поэтому ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Customers Π² Π²ΠΈΠ΄Π΅ прСфикса ΠΊ ΠΈΠΌΠ΅Π½ΠΈ столбца.

По Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π² запросС ΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… Ρ‚Π°Π±Π»ΠΈΡ†, ΠΈ Π΄Π°ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с самой собой. ОбъСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с собой ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС ΠΊΠ°ΠΊ объСдинСниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ эти Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ псСвдонимы. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° объСдинСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с самой собой рассмотрим запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всСвозмоТныС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΎΠΌ:

SELECT L.name,R.name FROM Customers L, Customers R WHERE L.rating = R.rating;

Боздавая этот запрос, ΠΌΡ‹ присвоили Β«ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ экзСмпляру» Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Customers псСвдоним L, Β«Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ экзСмпляру» – псСвдоним R. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ объСдинСния Β«Ρ‚Π°Π±Π»ΠΈΡ†Β» ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всСвозмоТныС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Π΅ – это строка ΠΈΠ· Β«Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹Β» L, Π²Ρ‚ΠΎΡ€ΠΎΠΉ – строка ΠΈΠ· Β«Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹Β» R. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ условия WHERE L.rating = R.rating ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Ρ‚Π΅ ΠΏΠ°Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ L (L.rating) Ρ€Π°Π²Π΅Π½ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ R (R.rating). Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ столбцов ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ прСфикса ΠΈΠΌΠ΅Π½Π° Β«Ρ‚Π°Π±Π»ΠΈΡ†Β» (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС – псСвдонимы), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΈΠ· экзСмпляров Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ относится ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· столбцов.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, запрос Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ ΠΈΠΌΠ΅Π½ (Ρ‚Π°Π±Π». 2.12).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°Π±ΠΎΡ€Ρ‹ строк Π² Β«Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…Β» L ΠΈ R ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запроса появилось ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈΡˆΠ½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…: ΠΏΠ°Ρ€Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠ΅Π½ (ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΈ сравнСнии строки Β«Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹Β» L с Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ этой строки Π² Β«Ρ‚Π°Π±Π»ΠΈΡ†Π΅Β» R), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ΠΏΠ°Ρ€Π° ΠΈΠΌΠ΅Π½ сначала Π² прямом, Π·Π°Ρ‚Π΅ΠΌ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ условиС ΠΎΡ‚Π±ΠΎΡ€Π°.

Π’Π°Π±Π»ΠΈΡ†Π° 2.12. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

SELECT L.name,R.name FROM Customers L, Customers R WHERE L.rating = R.rating AND L.name<R.name;

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠšΡ€Ρ‹Π»ΠΎΠ² ΠΈ ООО Β«ΠšΡƒΡΠΊΡƒΡΒ», Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этого запроса являСтся СдинствСнная строка (Ρ‚Π°Π±Π». 2.13). Π’Π°Π±Π»ΠΈΡ†Π° 2.13. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния запроса

Запросы, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с самой собой, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π² частности, для поиска ошибок дублирования Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для поиска ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, адрСсами ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌΠΈ.

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

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

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