Сортировка
Для упорядочения данных по какому-то полю необходимо выполнить команду
ORDERBY<имя поля>
Записи можно упорядочивать в восходящем (параметр сортировки ASC) или в нисходящем (параметр сортировки DESC) порядке. Параметр сортировки ASC используется по умолчанию.
Задание: Выбрать все сведения о книгах из таблицы Books и отсортировать результат по коду книги (поле Code_book).
SELECT*
FROM Books
ORDERBYCode_book
Самостоятельно:
· Выбрать из таблицы Books коды книг, названия и количество страниц (поля Code_book, Title_book и Pages), отсортировать результат по названиям книг (поле Title_book по возрастанию) и по полю Pages (по убыванию).
· Выбрать из таблицы Deliveries список поставщиков (поля Name_delivery, Phone и INN), отсортировать результат по полю INN (по убыванию).
Изменение порядка следования полей
Задание: Выбрать все поля из таблицы Deliveries таким образом, чтобы в результате порядок столбцов был следующим: Name_delivery, INN, Phone, Address, Code_delivery.
SELECT Name_delivery, Phone, INN, Address_del, Code_delivery
FROM Deliveries
ORDERBY INN DESC
Самостоятельно:
· Выбрать все поля из таблицы Publishing_house таким образом, чтобы в результате порядок столбцов был следующим: Publish, City, Code_publish.
Часть 2. Выбор некоторых полей из двух таблиц
Когда нужно выбрать данные, находящиеся в разных таблицах, применяют объединение таблиц. Пусть, например, необходимо выбрать данные, находящиеся в таблицах Books и Authors.
Простейший шаблон объединения двух таблиц выглядит следующим образом:
SELECT*
FROM<таблица1><тип объединения><таблица2>
ON<таблица1>.<столбец1>=<таблица2>.<столбец2>
Есть 4 типа объединения:
Внутреннее объединение (INNER JOIN)
При внутреннем объединении в таблицах А и В соединяются только те строки, для которых найдено совпадение, указанное в критерии объединения (после ключевого слова ON). Это наиболее подходящий в нашем случае вариант. Следующий запрос объединяет две таблицы Books и Authors, связанные по полю Code_author.
SELECT*
FROM Books INNERJOIN Authors
ON Books.Code_author = Authors.Code_author
Левое внешнее объединение (LEFT OUTER JOIN)
Левое внешнее объединение таблиц А и В включает в себя все строки из левой таблицы А и те строки из правой таблицы В, для которых обнаружено совпадение, указанное в критерии объединения (после ключевого слова ON). Для строк из таблицы А, для которых не найдено соответствия в таблице В, в столбцы, извлекаемые из таблицы В, заносятся значения NULL.
Примерзапроса: (ВЫПОЛНИТЬ)
SELECT*
FROM Books LEFTOUTERJOIN Authors
ON Books.Code_author = Authors.Code_author
Правое внешнее объединение (RIGHT OUTER JOIN)
Правое внешнее объединение таблиц А и В включает в себя все строки из правой таблицы В и те строки из левой таблицы А, для которых обнаружено совпадение, указанное в критерии объединения (после ключевого слова ON). Для строк из таблицы В, для которых не найдено соответствия в таблице А, в столбцы, извлекаемые из таблицы А заносятся значения NULL.
Примерзапроса: (ВЫПОЛНИТЬ)
SELECT*
FROM Books RIGHTOUTERJOIN Authors
ON Books.Code_author = Authors.Code_author
Полное объединение (FULL JOIN)
Это комбинация левого и правого объединений. В полное объединение таблиц включаются все строки из обеих таблиц. Для совпадающих строк поля заполняются реальными значениями, для несовпадающих строк поля заполняются в соответствии с правилами левого и правого соединений.
Примерзапроса: (ВЫПОЛНИТЬ)
SELECT*
FROM Books FULLJOIN Authors
ON Books.Code_author = Authors.Code_author
Если необходимо вывести не все столбцы, например, два столбца из таблицы Books (Title_book и Authors) и один столбец из таблицы Authors. Для этого нужные столбцы надо явно указать (с учетом идентификатора таблицы, к которой они принадлежат): (ВЫПОЛНИТЬ)
SELECT Books.Title_book, Books.Pages, Authors.Name_author
FROM Books INNERJOIN Authors
ON Books.Code_author = Authors.Code_author
Самостоятельно:
· Выбрать из таблицы Books названия книг и количество страниц (поля Title_book и Pages), а из таблицы Deliveries выбрать имя соответствующего поставщика книги (поле Name_delivery).
· Выбрать из таблицы Books названия книг и количество страниц (поля Title_book и Pages), а из таблицы Publishing_house выбрать название соответствующего издательства и места издания (поля Publish и City).