Запити до бази даних (команда select), sql

Я не ставлю за мету заглиблюватися у вивчення мови 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.

Схожі статті