Задания для самостоятельной работы. Даны отношения, моделирующие работу банка (таблица 7.10) и его филиалов (таблица 7.11)

 

Даны отношения, моделирующие работу банка (таблица 7.10) и его филиалов (таблица 7.11). Клиент может иметь несколько счетов, при этом они могут быть размещены как в одном, так и в разных филиалах банка. В отношении R1 (таблица 7.10) содержится информация обо всех клиентах и их счетах в филиалах нашего банка. Каждый клиент, в соответствии со своим счетом, может рассчитывать на некоторый кредит от нашего банка, сумма допустимого кредита также зафиксирована.

 

Таблица 7.10 – Отношение R1

 

ФИО клиента № филиала № счета Остаток Кредит
         

 

Таблица 7.11 – Отношение R2

 

№ филиала Район
   

С использованием языка реляционной алгебры составить запросы, позволяющие выбрать:

1. Филиалы, клиенты которых имеют счета с остатком, превышающим $1000.

2. Клиентов, которые имеют счета во всех филиалах данного банка.

3. Клиентов, которые имеют только по одному счету в разных филиалах банка. То есть, в общем, у этих клиентов может быть несколько счетов, но в одном филиале не более одного счета.

4. Клиенты, которые имеют счета в нескольких филиалах банка расположенных только в одном районе.

5. Филиалы, которые не имеют ни одного клиента.

6. Филиалы, которые имеют клиентов с остатком на счету 0 (ноль).

7. Филиалы, у которых есть клиенты с кредитом, превышающим остаток на счету в 2 раза.

 

SELECT SQL. Использование подзапросов

Понятие подзапроса

Часто невозможно решить поставленную задачу путем одного запроса. Это особенно актуально, когда при использовании условия поиска в предложении WHERE значение, с которым надо сравнивать, заранее не определено и должно быть вычислено в момент выполнения оператора SELECT. В таком случае приходят на помощь законченные операторы SELECT, внедренные в тело другого оператора SELECT. Внутренний подзапрос представляет собой также оператор SELECT, а кодирование его предложений подчиняется тем же правилам, что и основного оператора SELECT. Внешний оператор SELECT использует результат выполнения внутреннего оператора для определения содержания окончательного результата всей операции. Внутренние запросы могут быть помещены непосредственно после оператора сравнения (=, <, >, <=, >=, <>) в предложения WHERE и HAVING внешнего оператора SELECT – они получают название подзапросов или вложенных запросов. Кроме того, внутренние операторы SELECT могут применяться в операторах INSERT, UPDATE и DELETE.

Подзапрос – это инструмент создания временной таблицы, содержимое которой извлекается и обрабатывается внешним оператором. Текст подзапроса должен быть заключен в скобки. К подзапросам применяются следующие правила и ограничения:

  • фраза ORDER BY не используется, хотя и может присутствовать во внешнем подзапросе;
  • список в предложении SELECT состоит из имен отдельных столбцов или составленных из них выражений – за исключением случая, когда в подзапросе присутствует ключевое слово EXISTS;
  • по умолчанию имена столбцов в подзапросе относятся к таблице, имя которой указано в предложении FROM. Однако допускается ссылка и на столбцы таблицы, указанной во фразе FROM внешнего запроса, для чего применяются квалифицированные имена столбцов (т.е. с указанием таблицы);
  • если подзапрос является одним из двух операндов, участвующих в операции сравнения, то запрос должен указываться в правой части этой операции.

Существует два типа подзапросов:

  • Скалярный подзапрос возвращает единственное значение. В принципе, он может использоваться везде, где требуется указать единственное значение.
  • Табличный подзапрос возвращает множество значений, т.е. значения одного или нескольких столбцов таблицы, размещенные в более чем одной строке. Он возможен везде, где допускается наличие таблицы.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: