Запити - це найбільше часто використовуваний момент в SQL, адже ця мова для них і була створена. Запит являє собою якусь команду, що звертається до БД і повідомляє їй, щоб вона відобразила певну інформацію з таблиць на згадку. Ця інформація звичайно виводиться безпосередньо на екран комп'ютера, термінал, посилає принтеру, зберігається у файлі або служить вихідними даними для іншої команди або запиту.
Всі запити в SQL складаються з одиночної команди SELECT з досить простою структурою, однак шляхом її використання можна виконати складну обробку даних. У найпростішій формі, команда SELECT просто звертається до БД, щоб витягти інформацію з таблиці. Наприклад, можна вивести таблицю студентів, давши наступний запит:
Інакше кажучи, ця команда просто виводить всі дані з таблиці. Більшість програм, що працюють із мовою SQL, видають заголовки полів, тому надалі результати будуть приводитися саме в такій формі.
Детально пояснимо кожну частину цієї команди:
SELECT - ключове слово, що повідомляє БД, що ця команда є запитом, тобто всі запити починаються цим словом.
SNUM, SFAM, SIMA, SOTCH, STIP - список полів з таблиці, які вибираються запитом. Поля, не перераховані тут, не будуть включені у висновок команди, але це, зрозуміло, не означає, що вони будуть вилучені або інформація в них буде стерта з таблиць. Запит не впливає на інформацію в таблицях; він тільки показує дані.
FROM STUDENTS - ключове слово, подібно SELECT, що повинне бути представлене в кожному запиті. Воно супроводжується пробілом і потім ім'ям таблиці використовуваної як джерело інформації. У цьому випадку - це таблиця студентів STUDENTS.
Крапка з комою (;) використається у всіх інтерактивних командах SQL для повідомлення БД, що команда заповнена й готова виконатися, а в деяких системах похила риса (\) у рядку є індикатором кінця команди.
Очевидно, запит такого характеру не обов'язково буде впорядковувати висновок будь-яким зазначеним способом. Та ж сама команда, виконана з тими ж самими даними, але в різний час не зможе вивести результат в однаковому порядку. Звичайно рядки виявляються в тім порядку, у якому вони знайдені в таблиці, а оскільки він довільний, те зовсім не обов'язково буде зберігатися той порядок, у якому дані вводилися або зберігалися. Допускається впорядковувати висновок командами SQL за допомогою спеціальної пропозиції, про яке піде мова нижче, а зараз необхідно мати у виді, що під час відсутності явного впорядкування немає ніякого певного порядку у висновку результатів запиту.
Якщо необхідно вибрати всі поля таблиці, є необов'язкове скорочення у вигляді символу "зірочка" (*), якє можна використати для виводу повного списку полів у такий спосіб:
SELECT * FROM STUDENTS;
що приведе до того ж результату, що й попередня команда.
У загальному випадку запит починається із ключового слова SELECT, супроводжуваного пробілом. Після цього повинен випливати список розділених комами імен полів, які необхідно вивести.
Ключове слово FROM, що розміщено далі, супроводжується пробілом й ім'ям таблиці, запит до якої робиться. На закінченні, крапка з комою повинна використатися для того, щоб закінчити запит і вказати що команда готова до виконання.
Команда SELECT здатна витягти строго певну інформацію з таблиці. Наприклад, при необхідності висновку тільки певних полів таблиці, просто зі списку виключаються не потрібні поля. Наприклад, запит
SELECT SNUM, SEAM, STIP
FROM STUDENTS;
буде виводити наступну таблицю:
SNUM SFAM STIP
-------------------------------------------
3412 Поляков 25.50
3413 Огарьова 17.00
3414 Гриценко 0.00
3415 Котенко 0.00
3416 Нагорний 25.50
Цей спосіб дозволяє працювати з таблицями, які мають велику кількість полів, що містять дані, не потрібні в цей момент користувачеві.
Незважаючи на те, що поля таблиці, по визначенню, упорядковані, це зовсім не означає, що їхній висновок повинен бути тільки в тім же порядку. Звичайно, зірочка (*) покаже всі поля в їхньому природному порядку, але, якщо вказати поля окремо, можна одержати їх у необхідній послідовності.
Наприклад, запит
SELECT SFAM, SNUM, STIP
FROM STUDENTS;
буде робити в новій послідовності висновок, показаний нижче:
SFAN SNUM STIP
--------------------------------------------
Старова 3413 17.00
Гриценко 3414 0.00
Котенко 3415 0.00
Нагорний 3416 25.50
При роботі з даними дуже часто виникає потреба у видаленні надлишкових даних. Це реалізується з використанням DISTINCT - аргумент, що забезпечує можливість усувати повторювані значення із процедури SELECT.
Припустимо, що необхідно довідатися, які студенти в цей час здавали навчальні предмети, причому не потрібне уточнення отриманої оцінки й здаваного предмета. Запит
SELECT SNUM
FROM USP;
Видасть наступну таблицю, однак у ній є записи - дублікати:
SNUM
--------
Для одержання списку результатів без дублікатів у цьому випадку доцільно скористатися наступним:
SELECT DISTINCT SNUM
FROM USP;
у результаті чого буде отримано:
SNUM
--------
Інакше кажучи, DISTINCT переглядає значення, які були виведені раніше, і не дає їм дублюватися в списку. Це - корисний спосіб уникнути надмірності даних, однак варто уважно стежити за його застосуванням, тому що можна сховати деяку потрібну інформацію. Наприклад, якщо в таблиці студентів з'являться однофамільці, то використання DISTINCT може призвести до того, що про існування однофамільців користувач знати не буде.
Варто мати на увазі, що DISTINCT може вказуватися тільки один раз у даній процедурі SELECT. Якщо процедура вибирає численні поля, DISTINCT опускає записи, де всі обрані поля ідентичні. Якщо замість DISTINCT указати ALL, то це буде мати протилежний ефект і дублювання рядків виводу збережеться.