- •Лабораторных работ
- •Основные термины
- •Синтаксис команды select
- •Создание таблиц
- •4. Команды манипулирования данными
- •4.1 Вставка в таблицу новой строки
- •4.2 Удаление строк из таблицы
- •4.3 Команда update
- •5.1 Выбор по критерию
- •5.2 Исключение дублирующих значений.
- •Формирование запросов (команда select).
- •5.3 Операторы в сравнениях
- •5.3.1 Операторы сравнения.
- •5.3.2 Булевы операторы
- •5.3.3 Специальные операторы в условиях.
- •5.4 Подведение итогов с помощью функций агрегирования
- •5.5 Упорядочение выходных полей
- •Соединение таблиц
- •Объединение таблицы по принципу «сама с собой»
- •7.1 Вложение запросов
- •7.2 Использование агрегатных функций в подзапросе
- •7.3 Связанные подзапросы в having
5.5 Упорядочение выходных полей
Для вывода результатов в запросе в требуемой последовательности применяется команда
ORDER BY. Сортировку можно задавать по значению одного или нескольких выбранных полей. Последовательность сортировки для каждого из столбцов задается ASC(по возрастанию) или DESC (по убыванию). Столбец, по значениям которого упорядочиваются возвращаемые строки, можно указывать именем столбца или его относительным порядковым номером.
Пример. Рассортировать все записи в таблице Spisok по алфавиту студентов:
SELECT*
FROM Spisok
ORDER BY fio ASC;
Выходные столбцы формируются в запросе, а не извлекаются непосредственно из базовой таблицы (их нет в таблице базы данных); они не имеют имен. Для ссылки на выходные столбцы в предложении ORDER BY используется порядковый номер выходного столбца из предложения SELECT. В этом случае в SELECT используются не имена столбцов для указания полей, а номера в выходных данных (это не номера в таблице базы данных).
Пример. Подсчитать количество отличников (по размеру стипендии-15000руб.) на каждом курсе и вывести результат в порядке возрастания курса:
SELECT kurs, COUNT(DISTINCT 15000)
FROM Spisok
GROUP BY kurs
ORDER BY 2 ASC;
Соединение таблиц
Запрос может быть сформулирован (получен) на основе данных из нескольких таблиц. Между элементами таблиц устанавливаются связи; имена соединяемых таблиц перечисляются через запятую в запросе в предложении FROM. Предикат запроса может ссылаться на любой столбец любой соединяемой таблицы. Полное имя столбца соединяемых таблиц составляют:
< имя_ таблицы>. <имя_ столбца>
примеры записи столбцов.
Spisok fio
Sport. Gymnast
Kultura. Pevec
Пример соединения таблиц. Установить связь между таблицами Sport и
Kultura для выбора студентов, которые играют в футбол и занимаются сольным пением:
SELECT Sport. Fio
Sport. gymnast
Kultura. Pevec
Пример соединения таблиц. Установить связь между таблицами Sport и
Kultura для выбора студентов, которые играют в футбол и занимаются сольным пением:
SELECT Sport. Fio, Kultura. Pevec
FROM Sport, Kultura
WHERE Sport. Fio= Kultura. Fio;
Команда SELECT в данном примере берет первую запись из таблицы Sport, в которой перечислены студенты, увлекающиеся футболом, и ищет в таблице Kultura, в которой перечислены студенты, занимающиеся сольным пением, фамилию этого же студента.
В операциях соединения таблиц кроме равенства (эквисоединения) можно использовать любые операции сравнения в предложении WHERE.
Объединение таблицы по принципу «сама с собой»
Смысл этой операции в том, что любую одну строку (запись) таблицы можно комбинировать (соединить) с любой другой строкой этой же таблицы и с копией этой строки. В одной таблице устанавливаются связи между различными записями, например поиск и выбор пар строк с общим значением поля.
Для указания имен столбцов SELECT в предложении FROM применяются временные имена полей-алиясы (псевдонимы), которые позволяют рассматривать одну таблицу в команде SELECT как две независимые таблицы: первая (first) и вторая (second). Алиясы определяются в предложении FROM. Записываются имя таблицы, пробел и имя алияса для данной таблицы, например FROM Spisok first, Spisok second
Соединение таблицы по принципу «сама с собой» покажем на примере соединения всех пар одинаковых фамилий в разных группах:
SELECT first. Fio, second. Fio, first grup
FROM Spisok first, Spisok second;
