Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структурована мова запитів SQL.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
663.04 Кб
Скачать

Синтаксис оператора select

Запити - це найбільше часто використовуваний момент в SQL, адже ця мова для них і була створена. Запит являє собою якусь команду, що звертається до БД і повідомляє їй, щоб вона відобразила певну інформацію з таблиць на згадку. Ця інформація звичайно виводиться безпосередньо на екран комп'ютера, термінал, посилає принтеру, зберігається у файлі або служить вихідними даними для іншої команди або запиту.

Всі запити в SQL складаються з одиночної команди SELECT з досить простою структурою, однак шляхом її використання можна виконати складну обробку даних. У найпростішій формі, команда SELECT просто звертається до БД, щоб витягти інформацію з таблиці. Наприклад, можна вивести таблицю студентів, давши наступний запит:

SELECT SNUM, SFAM, SIMA, SOTCH, STIP

FROM STUDENTS;

Результат цього запиту показаний нижче:

SNUM SEAM SIMA. SOTCH STIP

----------------------------------------------------------------------------------

  1. Поляков Анатолій Олексійович 25.50

  2. Огарьова Любов Михайлівна 17.00

  3. Гриценко Володимир Миколайович 0.00

  4. Котенко Анатолій Миколайович 0.00

  5. Нагорний Євген Васильович 25.50

Інакше кажучи, ця команда просто виводить всі дані з таблиці. Більшість програм, що працюють із мовою 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

-------------------------------------------

  1. Поляков 25.50

  2. Огарьова 17.00

  3. Гриценко 0.00

  4. Котенко 0.00

  5. Нагорний 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

--------

3412

3413

3414

3412

3416

Для одержання списку результатів без дублікатів у цьому випадку доцільно скористатися наступним:

SELECT DISTINCT SNUM

FROM USP;

у результаті чого буде отримано:

SNUM

--------

3412

3413

3414

3416

Інакше кажучи, DISTINCT переглядає значення, які були виведені раніше, і не дає їм дублюватися в списку. Це - корисний спосіб уникнути надмірності даних, однак варто уважно стежити за його застосуванням, тому що можна сховати деяку потрібну інформацію. Наприклад, якщо в таблиці студентів з'являться однофамільці, то використання DISTINCT може призвести до того, що про існування однофамільців користувач знати не буде.

Варто мати на увазі, що DISTINCT може вказуватися тільки один раз у даній процедурі SELECT. Якщо процедура вибирає численні поля, DISTINCT опускає записи, де всі обрані поля ідентичні. Якщо замість DISTINCT указати ALL, то це буде мати протилежний ефект і дублювання рядків виводу збережеться.