Скачать 1.16 Mb.
|
ВСТАВКА ОДНОГО ЗАПРОСА ВНУТРЬ ДРУГОГОВ КОНЕЦЕ ГЛАВЫ 9, МЫ ГОВОРИЛИ ЧТО ЗАПРОСЫ могут управлять другими запросами. В этой главе, вы узнаете как это делается ( большей частью ), помещая запрос внутрь предиката другого запроса, и используя вывод внутреннего запроса в верном или неверном условии предиката. Вы сможете выяснить какие виды операторов могут использовать подзапросы и посмотреть как подзапросы работают со средствами SQL , такими как DISTINCT, с составными функциями и выводимыми выражения. Вы узнаете как использовать подзапросы с предложением HAVING и получите некоторые наставления как правильно использовать подзапросы. КАК РАБОТАЕТ ПОДЗАПРОС?С помощью SQL вы можете вкладывать запросы внутрь друга друга. Обычно, внутренний запрос генерирует значение которое проверяется в предикате внешнего запроса, определяющего верно оно или нет. Например, предположим что мы знаем им продавца: Motika, но не знаем значение его пол snum, и хотим извлечь все порядки из таблицы Порядков. Имеется один способ чтобы сделать это( вывод показывается в Рисунке 10.1 ): SELECT * FROM Orders WHERE snum = ( SELECT snum FROM Salespeople WHERE sname = 'Motika'); Чтобы оценить внешний( основной ) запрос, SQL сначала должен оценить внутренний запрос ( или подзапрос ) внутри предложения WHERE. Он делает это так как и должен делать запрос имеющий единственную цель - отыскать через таблицу Продавцов все строки, где поле sname равно значению Motika, и затем извлечь значения пол snum этих строк. Единственной найденной строкой естественно будет snum = 1004. Однако SQL, не просто выдает это значение, а помещает его в предикат основного запроса вместо самого подзапроса, так чтобы предиката прочитал что WHERE snum = 1004 =============== SQL Execution Log ============== | | | SELECT * | | FROM Orders | | WHERE snum = | | (SELECT snum | | FROM Salespeople | | WHERE sname = 'Motika'); | |=================================================| | onum amt odate cnum snum | | ----- ------- ---------- ----- ----- | | 3002 1900.10 10/03/1990 2007 1004 | | | ================================================= Рисунок 10.1: Использование подзапроса Основной запрос затем выполняется как обычно с вышеупомянутыми результатами. Конечно же, подзапрос должен выбрать один и только один столбец, а тип данных этого столбца должен совпадать с тем значением с которым он будет сравниваться в предикате. Часто, как показано выше, выбранное поле и его значение будут иметь одинаковые имена( в этом случае, snum ), но это необязательно. Конечно, если бы мы уже знали номер продавца Motika, мы могли бы просто напечатать WHERE snum = 1004 и выполнять далее с подзапросом в целом, но это было бы не так универсально. Это будет продолжать работать даже если номер Motika изменился, а, с помощью простого изменения имени в подзапросе, вы можете использовать его для чего угодно. Встроенный язык SQLЦель встроенного SQL состоит в соединении возможностей декларативного и процедурного языков. Следует выделять вложенный и встроенный языки SQL. В первом случае основным является язык SQL, в который вводятся операторы циклов и условных переходов. Нет резкого разделения на интерфейсный и вложенный языки. Операторы выборки (SELECT), обновления (DELETE, UPDATE, INSERT) относят к интерактивному языку SQL. Операторы CREATE, ALTER, DROP считаются принадлежащими к вложенному языку SQL. В качестве объектов выступают таблицы, поля, ограничения, индексы, домены, виды, генераторы, триггеры, хранимые процедуры. Во втором случае операторы языка SQL «встраиваются» в алгоритмические языки. Часто им является язык Pascal. Для этого команды SQL помещаются в исходный текст главной программы, которой предшествует фраза EXEC SQL (EXECute SQL). Когда встраиваются команды SQL в текст программы, написанной на другом языке, надо выполнить прекомпиляцию прежде, чем окончательно ее скомпилировать. Программа, называемая прекомпилятором (или препроцессором), будет просматривать текст программы и преобразовывать команды SQL в форму, удобную для использования базовым языком. Затем используется обычный транслятор, чтобы преобразовывать программу из исходного текста в выполняемый код. Основная программа вызывает процедуры SQL, которые выбирают параметры из главной программы и возвращают уже обработанные значения в основную программу. Модуль может содержать любое число процедур, каждая из которых состоит из одиночной команды SQL. |
Тема Архитектура предприятия Исторические аспекты архитектуры предприятия.... Ения. Комплекс проектов совершенствования деятельности. Пути развития архитектуры предприятия. Типичные пользователи. Архитектура... |
План лекции Язык sql в субд. Структура команды sql. Типы данных. Выражения База данных (БД) – это информационная модель объекта – именованная совокупность данных, отображающая состояние объектов, их свойства... |
||
Пер с англ. — М. Издательский Архитектура системы баз данных 65 Глава Введение в реляционные базы данных 92 |
Программа фиэб направление подготовки 230100 «Информатика и вычислительная... Архитектура баз данных. Модели данных. Иерархические, сетевые, реляционные модели данных. Модель «сущность-связь». Уровни проектирования:... |
||
Лекция I и проблема языка и сознания лекция II 31 слово и его семантическое... Монография представляет собой изложение курса лекций, про* читанных автором на факультете психологии Московского государственного... |
Лекция I и проблема языка и сознания лекция II 31 слово и его семантическое... Монография представляет собой изложение курса лекций, про* читанных автором на факультете психологии Московского государственного... |
||
Инструкция по переносу данных по «Луч» из бд ms access в бд ms sql server Москва, 2011 По «Луч») является техническим документом Небанковской кредитной организации закрытого акционерного общества «Национальный расчетный... |
1. Показать развитие и классификацию однопроцессорных архитектур... Архитектура общая функциональная и структурная организация машины, определяющая методы кодирования данных, состав, назначение, принципы... |
||
Содержание Введение Лекция Базы данных и файловые системы Файловые системы 1 Структуры файлов Лекция Ранние подходы к организации бд. Системы, основанные на инвертированных списках, иерархические и сетевые субд. Примеры. Сильные... |
Литература 58 Лекция №15 Понятия и сущность данных, информации, знаний.... Лекция № Поиск полных текстов научных документов в мировых издательских системах 33 |
||
Многоканальный цифровой комплекс регистрации сигналов «фантом» руководство по эксплуатации ... |
Управление ит-инфраструктурой Понятие «информационно-технологическая инфраструктура», связь с понятиями «архитектура предприятия», «архитектура информационной... |
||
Приказ о назначении ответственного лица в области обработки и защиты... Постановление Правительства Российской Федерации от 1 ноября 2012 г. №1119 «Об утверждении требований к защите персональных данных... |
Лекция Предмет, задачи и методы перевода Лекция Общая характеристика современной теории перевода. Лекция Переводческая эквивалентность |
||
Лекция Основы процесса тестирования по 3 Лекция Как протестировать неизвестную программу или наращиваемый подход к первичному функциональному тестированию по. 17 |
Пояснительная записка Студент Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между... |
Поиск |