Навчальний комплекс основи програмування і бд

29. Маніпуляція даними. Мова запитів SQL.

Примітка. x, y, z - числа або вирази, що мають числовий результат. l, l1, l2 - логічні константи (1 або 0) або логічні вирази. s - рядок або вираз, що має результат у вигляді рядка. v, v1, v2 - змінні або вирази.
зразок - константа у вигляді рядка символів, можливо, містить метасимволи "%" і "_". У зразок метасимвол "_" можна порівняти з будь-яким поодиноким символом рядка s, метасимвол "%" - з будь-якої ланцюжком символів будь-якої (в тому числі нульовою) довжини.
4. У загальному випадку в_вираженіе допускає використання агрегативного (званих також груповими) функцій, що приймають як свого єдиного аргументу значення всіх осередків зазначеного стовпця результуючої таблиці.
SUM (x) сума значень стовпця x результуючої таблиці
MAX (x) найбільше значення з усіх значень комірок стовпчика x
MIN (x) найменше значення з усіх значень комірок стовпчика x
AVG (x) середнє значення для всіх значень комірок стовпчика x
COUNT (x) загальна кількість осередків в стовпці x
приклад:
Наступний оператор SELECT дозволяє визначити загальну кількість записів в таблиці:
SELECT COUNT (*) FROM elements;
Опис критерію вибірки вмісту рядків результуючої матриці
Як критерій вибору інформації з таблиць списку FROM оператора SELECT виступає сложн_условіе, що записується після ключового слова WHERE і має такий вигляд:
прост_условіе
або
прост_условіе AND сложн_условіе
або
прост_условіе OR сложн_условіе
Типовими варіантами прост_условіе є наступні.
порівняння
полн_імя_столбца @ полн_імя_столбца_ілі_константа
де @ - один з операторів порівняння:> ( "більше"), <("меньше"),>= ( «Не менше"), <= ("не больше"), = ("равно"), <> ( "Не дорівнює"), а полное_імя_столбца - ім'я стовпця, конкретизоване при необхідності ім'ям або синонімом імені таблиці, як це було описано вище.
Упорядкування та групування рядків результуючої таблиці
Для забезпечення структурованості в розташуванні рядків результуючої таблиці в операторі SELECT використовуються конструкції GROUP BY і ORDER BY.
Впорядкування рядків досягається перерахуванням повних імен стовпців, по яких в зростаючому (ASC) чи спадному (DESC) порядку упорядковано рядки результуючої таблиці. При цьому рядки упорядковуються в першу чергу по стовпчику, вказаною першим в списку ORDER BY. Потім, якщо серед значень осередків першого стовпчика є повторювані, проводиться упорядкування по дві колонки і так далі.
приклад
Нехай необхідно вивести інформацію про кінцевих елементах, упорядкувавши її;
в першу чергу по ідентифікаторів вузлів, які є першою вершиною кінцевого елемента;
в другу чергу по ідентифікаторів вузлів, які є другою вершиною кінцевого елемента;
Для вирішення цього завдання можна використовувати наступний оператор
SELECT * FROM elements ORDER BY n1, n2;
Конструкція HAVING сложн_условіе, як необов'язкова складова частина пропозиції GROUP BY, дозволяє визначати додатковий (до WHERE сложн_условіе) критерій вибірки рядків в групи. Цей додатковий критерій застосовується в режимі постпроцессорной обробки до таблиці, отриманої в результаті використання критерію з конструкції WHERE.
TOP n [PERCENT]. При використанні цього аргументу оператор SELECT повертає тільки перші n рядків з набору результатів. Якщо задано ключове слово PERCENT, то будуть повертатися перші рядки, складові n відсотків від загальної кількості рядків. При використанні ключового слова PERCENT, число n має бути в межах від 0 до 100. Якщо в запиті є пропозиція ORDER BY, то рядки виведення спочатку сортуються, а потім з відсортованого набору результатів видаються перші n рядків або n відсотків від загальної кількості рядків. (Про пропозицію ORDER BY см. Розділ "Пропозиція ORDER BY" далі.)

Нижче дані три приклади запуску оператора SELECT з різними аргументами. У першому з них при запуску використовується аргумент DISTINCT, у другому - аргумент TOP 50 PERCENT, а в третьому - аргумент TOP 5:
SELECT DISTINCT au_fname, au_lname
FROM authors
GO
SELECT TOP 50 PERCENT au_fname, au_lname
FROM authors
GO
SELECT TOP 5 au_fname, au_lname
FROM authors
GO

Перший запит поверне 23 рядки, кожна з яких буде унікальною. Другий запит поверне 12 рядків (приблизно 50%, з округленням до більшого числа), а третій запит поверне 5 рядків.

Крім розглянутої команди SELECT, в SQL є інструкції проекції, з'єднання, об'єднання, створення і зміни структури таблиць БД, які в рамках даного курсу не розглядаються.