Я не ставлю за мету заглиблюватися у вивчення мови sql, про це ви можете прочитати в будь-якому керівництві по sql server, mysql в основному підтримує всі основні команди стандарту ansi 92, але команда select заслуговує того, щоб присвятити їй окрему главу. Команда select використовується для запитів до бази даних з метою вилучення з неї інформаціі.Сінтаксіс команди наступний:
Як видно з вищенаведеного, разом з командою select використовуються ключові слова, використання яких дуже впливає на відповідь сервера.Рассмотрім кожне з них.
Пропускає рядки, в яких всі вибрані поля ідентичні, тобто усуває дублювання даних.
Пропозиція команди select, яке дозволяє встановлювати предикати, умова яких може бути вірним або невірним для будь-якого рядка табліци.Ізвлекаются тільки ті рядки, для яких таке твердження верно.Напрімер:
Виводить колонки u_id і lname з таблиці publishers для яких значення в стовпці city-new york.Ето дає можливість зробити запит більш конкретним.
Реляційні оператори.
Реляційний оператор - математичний символ який вказує на певний тип порівняння між двома значеннями. Реляційні оператори які має mysql:
= Равнo
> Більше
<Меньше
> = Більше або дорівнює
<= Меньше или равно
<> Не дорівнює
Ці оператори мають стандартні значення для числових значень.
Припустимо що ви хочете побачити всіх замовників з оцінкою (rating) вище 200. Оскільки 200 - це скалярний значення, як і значення в стовпці оцінки, для їх порівняння ви можете використовувати реляційний оператор.
Булеві оператори.
Основні Булеві оператори також розпізнаються в mysql. Вирази Буля - є або вірними або невірними, подібно до предикатів. Булеві оператори пов'язують одне або більш вірних / невірних значень і виробляють єдине вірне або невірне значення. Стандартними операторами Буля розпізнаваними в sql є: and, or і not.
Припустимо ви хочете бачити всіх замовників в Далласі, які мають рейтинг вище 200:
При використанні оператора and, повинні бути виконані обидві умови, тобто повинні бути вибрані всі замовники з Далласа, рейтинг яких більше 200.
При використанні оператора or, має виконатися одне з условій.Напрімер:
В даному випадку будуть вибрані всі замовники з Далласа і всі мають рейтинг більше 200, навіть якщо вони і не з Далласа.
not може використовуватися для інвертування значень Буля.Прімер запиту з not:
При такому запиті будуть вибрані всі замовники з Далласа і всі замовники, рейтинг яких менше 200.В цьому запиті оператор not застосовується тільки до виразу rating> 200.Можно зробити більш складний запит:
У цьому запиті not застосований до обох виразів в скобках.В даному випадку, сервер читає вирази в дужках, визначає, чи відповідає істині рівність city = 'dallas' або рівність rating> 200.Еслі будь-яка умова вірно, вираз Буля усередині круглих дужок вірно. Однак, якщо вираз Буля усередині круглих дужок вірно, предикат як єдине ціле невірний, тому що not перетворить вірно в невірно і наоборот.То є, будуть вибрані всі замовники що не знаходяться в Далласі і рейтинг яких менше 200.
in.
Оператор in визначає набір значень в яке дане значення може або не може бути включено.Напрімер, запит
може бути переписаний більш просто:
in визначає набір значень за допомогою імен членів набору увязнених в круглі дужки і відокремлених запятимі.Затем він перевіряє різні значення вказаного, намагаючись знайти збіг із значеннями з набору. Якщо це трапляється, то предикат вірний. Коли набір містить значення номерів а не символів, одиночні лапки опускаються.
Оператор between схожий на оператор in. На відміну від визначення по номерах з набору, як це робить in, between визначає діапазон, значення якого повинні зменшуватися що робить предикат вірним. Ви повинні ввести ключове слово between з початковим значенням, ключове and і кінцеве значення. На відміну від in, between чутливий до порядку, і перше значення в пропозиції повинне бути першим по алфавітному або числовому порядку.Напрімер:
like застосовується тільки до полів типу char або varchar, з якими він використовується щоб знаходити підрядки. Тобто він шукає поле символу щоб бачити, чи співпадає з умовою частина його строкі.В як умову він використовує групові символи (wildkards) - спеціальні символи які можуть відповідати чого-небудь. Є два типи групових символів використовуваних з like:
символ підкреслення (_) заміщає будь-який одиночний символ.
знак '%', що заміщає будь-яку кількість символів.
Якщо ми поставимо такі умови:
то будуть вибрані всі замовники, чиї імена починаються на j: john, jerry, james і т.д.
Агрегатна функція, робить підрахунок значень в стовпці або числа рядків в табліце.Прі роботі зі стовпцем використовує distinct як аргумент:
При підрахунку рядків має синтаксис:
Пропозиція group by дозволяє визначати підмножина значень в особливому полі в термінах іншого поля, і застосовувати функцію агрегату до підмножини. Це дає можливість об'єднувати поля і агрегатні функції в єдиній пропозиції select. Наприклад, припустимо що ви хочете знайти найбільшу суму придбань отриману кожним продавцем. Ви можете зробити роздільний запит для кожного з них, вибравши max () з таблиці для кожного значення поля. group by дозволить Вам помістити їх все в одну команду:
having визначає критерії використовуються щоб видаляти певні групи з виводу, точно також як пропозиція where робить це для індивідуальних строк.Напрімер:
having діє подібно з where, але з where не можна використовувати агрегатні функції.
Ця команда впорядковує висновок запиту згідно значень в тій або іншій кількості обраних стовпців. Численні стовпці упорядковуються один всередині іншого, також як з group by.
Використовується в підзапит.
Він бере підзапит як аргумент і оцінює його як вірний якщо той виробляє будь-висновок або як невірний якщо той не робить етого.Етім він відрізняється від інших операторів предиката, в яких він не може бути невідомим. Наприклад, ми можемо вирішити, витягувати нам деякі дані з таблиці Замовників якщо, і тільки якщо, один або більше замовників в цій таблиці знаходяться в san jose.
union відрізняється від підзапитів тим що в ньому ні один з двох (або більше) запитів не справляються іншим запитом. Всі запити виконуються незалежно один від одного, а вже передача управління ними - об'едіняется.Напрімер:
Пропозиція union об'єднує виведення двох або більше sql запитів в єдиний набір рядків і стовпців.
desc-descedent, висновок даних в зворотному порядку (за алфавітом і чисельним значенням) .По замовчуванням використовується asc.
Ну ось коротко і все.mysql підтримує майже всі основні команди sql server, так що більш докладно про команду select ви можете прочитати в будь-якому підручнику з мови sql.