- •Содержание
- •8.1. Реляционное исчисление.
- •8.1.1. Введение.
- •8.1.2. Реляционное исчисление кортежей.
- •8.1.3. Реляционное исчисление доменов.
- •8.2. Знакомство с оператором select.
- •8.2.1. Запись sql-операторов.
- •8.2.2. Формат оператора select.
- •8.2.3. Простейший вид оператора select (select…from).
- •8.2.4. Использование предложения where.
- •8.2.5. Использование псевдонимов таблиц.
- •8.2.6. Предложение order by – определение сортировки.
- •Контрольные вопросы:
8.2.5. Использование псевдонимов таблиц.
В приведенном выше примере оператора SELECT
SELECT ReaderCode, FamilyName, Name, BookGiveOutRecord.Code, InventoryCode
FROM BookGiveOutRecord, Readers
WHERE Readers.Code = BookGiveOutRecord. ReaderCode
в перечне возвращаемых столбцов после слова SELECT и в условии поиска после слова WHERE перед именем столбца через точку пишется название таблицы:
WHERE Readers.Code = BookGiveOutRecord. ReaderCode
Указание имени таблицы перед именем столбца является совершенно необходимым, поскольку в разных таблицах могут оказаться одноименные столбцы (как в нашем примере), и SQL-сервер должен знать, со столбцом какой таблицы он имеет дело.
Использование общих имен таблиц для идентификации столбцов неудобно из-за своей громоздкости. Намного лучше присвоить каждой таблице какое-нибудь краткое обозначение, псевдоним. Такие псевдонимы называются псевдонимами таблиц. Они определяются после имени каждой таблицы в указании списка таблиц-источников после слова FROM:
SELECT ...
FROM <таблица1 псевдоним1> [, < таблица2 псевдоним2> ...]
WHERE ...
Например, приведенный выше запрос
SELECT ReaderCode, FamilyName, Name, BookGiveOutRecord.Code, InventoryCode
FROM BookGiveOutRecord, Readers
WHERE Readers.Code = BookGiveOutRecord. ReaderCode
после введения в него псевдонимов таблиц выглядит намного компактнее:
SELECT ReaderCode, FamilyName, Name, B.Code, InventoryCode
FROM BookGiveOutRecord B, Readers R
WHERE R.Code = B.ReaderCode
8.2.6. Предложение order by – определение сортировки.
Набор данных, выдаваемый в результате выполнения оператора SELECT, в общем случае возвращается в неотсортированном виде. Это удобно далеко не всегда. Определить, по каким полям необходимо отсортировать записи в результирующем НД, можно, указав после предложения, следующего за словом WHERE, предложение
ORDER BY <список_столбцов>
Список столбцов должен содержать имена столбцов, по которым будет производиться сортировка.
В случае указания имен нескольких столбцов, разделенных через запятую, столбец, указанный первым, будет использован для глобальной сортировки, второй столбец - для сортировки внутри группы, определяемой единым значением первого столбца, и т.д.
ПРИМЕР
Выдать список читателей библиотеки в алфавитном порядке
SELECT *
FROM Readers
ORDER BY FamilyNamе, Name, Patronymic
Результат выполнения запроса приведен в таблице 8.4.
Таблица 8.4.
Результат выполнения запроса SELECT * FROM Readers ORDER BY….
Code |
FamilyNamе |
Name |
Patronymic |
ReaderCardNumber |
PasportCode |
Job |
Post |
Note |
1 |
Иванов |
Петр |
Иванович |
317 |
4 |
ДГУ, каф. ЭВТ |
Ассистент |
blob |
3 |
Ильин |
Иван |
Петрович |
1345 |
11 |
ДГУ, каф. физики |
Доцент |
blob |
5 |
Коршунова |
Наталья |
Юрьевна |
128 |
8 |
ДГУ, каф.гео-информа-тики |
Ассистент |
blob |
6 |
Носенко |
Олег |
Владими-рович |
5672 |
5 |
ДГУ, ИКК |
Инженер |
blob |
4 |
Суренко |
Дмитрий |
Павлович |
543 |
6 |
ДГУ, каф. геофизики |
Ст. преподава-тель |
blob |
2 |
Федорец |
Ирина |
Олеговна |
28 |
1 |
ДГУ, АХЧ |
Вахтер |
blob |
Сравните таблицу 8.4 с таблицей 8.1.