Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Расчет результирующих столбцов на основе арифметических выражений

Использование псевдонимов таблиц.

В приведенном выше примере оператора 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
  Иванов Петр Иванович     ДГУ, каф. ЭВТ Ассистент blob
  Ильин Иван Петрович     ДГУ, каф. физики Доцент blob
  Коршунова Наталья Юрьевна     ДГУ, каф.гео-информа-тики Ассистент blob
  Носенко Олег Владими-рович     ДГУ, ИКК Инженер blob
  Суренко Дмитрий Павлович     ДГУ, каф. геофизики Ст. преподава-тель blob
  Федорец Ирина Олеговна     ДГУ, АХЧ Вахтер blob

 

Сравните таблицу 8.4 с таблицей 8.1.

КОНТРОЛЬНЫЕ ВОПРОСЫ:

 

1. Какие формы реляционного исчисления Вы знаете?

2. Какова задача реляционного исчисления кортежей?

3. Какова задача реляционного исчисления доменов?

 

Арифметические выражения используются для расчета значений вычисляемых столбцов результирующего набора данных. При их формировании следует придерживаться общих правил формирования арифметических выражений, принятых в алгоритмических языках, например Object Pascal для Delphi. При этом в списке возвращаемых столбцов после слова SELECT вместо имени вычисляемого столбца указывается выражение:

 

SELECT [DISTINCT ALL] {* | <столбец1> [, <выражение1>]}

FROM <таблица1> [,<таблица2> …]

 

ПРИМЕР

 

Для каждой книги из таблицы 4.9 определим произведение ее цены на сумму значений кода книги и фонда книги.

SELECT Code, InventaryNumber, (BookCode + FundCode) * Cost

FROM BookInventaryNumbers

 

Результат выполнения запроса приведен в таблице 11.1.

Таблица 11.1

Code InventaryNumber Column3
    15,56
    66,99
    136,04
    64,95
    397,46
    80,80

 

Как видно из таблицы 11.1, результат вычисления выражения (BookCode + FundCode) * Cost для каждой записи из таблицы BookInventaryNumbers записан в сгенерированный столбец, которому по умолчанию присвоено имя Column3. В случае, если нужно присвоить имя столбцу, содержащему результаты вычисления выражения, это имя можно указать после выражения вслед за ключевым словом AS:

 

SELECT... {* | <значение1> [, <выражение1 [AS <имя столбца>]>...]}

 

ПРИМЕР

 

Выдаваемому в предыдущем примере вычисляемому столбцу присвоим имя EXAMPLE.

 

SELECT Code, InventaryNumber,

(BookCode + FundCode) * Cost AS Example

FROM BookInventaryNumbers

 

Результат выполнения запроса приведен в таблице 11.2.

Таблица 11.2

Code InventaryNumber Example
    15,56
    66,99
    136,04
    64,95
    397,46
    80,80
<== предыдущая лекция | следующая лекция ==>
Использование предложения WHERE | Агрегатные функции
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 396; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.