Реферат: Математическая логика. Язык SQL

SELECT Room_Type, Length * Width AS

Living_Space

FROM Rooms

WHERE Room_Type = `Гостиная OR Room_Type =`Спальня`

В результирующей таблице не будет данных о длине и ширине, зато появится столбец с информацией о площади, которая была вычислена непосредственно при исполнении запроса

Второй вариант применения ключевого слова AS можно проиллюстрировать на примере о торговых агентах из предыдущей заметки, который теперь будет выглядеть так:

SELECT DISTINCT Name, Birth_Date

FROM Agents AS A1, Contracts AS C1

WHERE A1.Agent_id = C1.Agent_id AND C1.CDate

>`31.12.2004` AND C1.Gross_Income > 500000

Дав с помощью ключевого слова АS таблицам Agents и Contacts сокращенные имена, мы сделали текст более компактным. Запрос можно сделать многоступенчатым, тогда результат вложенного запроса станет исходными данными. Тот же самый пример с агентами можно выполнить в виде вложенного запроса:

SELECT Name, Birth_Day

FROM Agents

WHERE Agent_id IN (SELECT Agent_id

FROM Contracts

WHERE CDate >`31.12.2004` AND

Gross_Income >500000

В данном случае предикат IN последовательно проверяет, имеется ли среди результатов вложенного запроса по базе контрактов идентификатор каждого из агентов. Если он есть, то в результирующую таблицу головного запроса добавляются его данные (для противоположного результата можно использовать предикат NOT IN). В большинстве случаев предпочтительнее вместо вложенных запросов применять соединение таблиц по общим столбцам (...WHERE Agents.Ag_Num = Contracts.Ag_Num...), однако иногда бывает, что все-таки без вложений не обойтись.

Объединения и внешние соединения

Выше мы воспользовались оператором OR для выборки данных о спальнях и гостиных. Можно пойти другим путем и использовать оператор UNION для объединения двух запросов:

(SELECT Room_Type, Length1 * Width1 AS

Living_Space FROM Rooms WHERE Room_Type =

`Гостиная`) UNION (SELECT Room_Type, Length1 *

Width1 AS Living_Space FROM Rooms WHERE

Room_Type = `Спальня`)

Оператор UNION строит на основе двух таблиц третью, куда попадают строки, которые есть либо в первой исходной, либо во второй, либо в обеих вместе; строки-дубликаты при этом удаляются. Иногда для подобных целей удобнее пользоваться оператором OR, однако если условия объединяемых подзапросов сложные, UNION для их составления подходит больше. Суть такого инструмента как внешнее соединение можно пояснить на следующем примере. Допустим, нам необходимо сделать выборку по контрактам, заключенным агентами в июне 2005 года. Мы можем воспользоваться для этого таким запросом:

SELECT Name, CDate, Gross_Income

FROM Agents AS A1, Contracts AS C1

WHERE A1.Agent_id = C1.Agent_id AND C1.CDate

К-во Просмотров: 248
Бесплатно скачать Реферат: Математическая логика. Язык SQL