КАТЕГОРИИ: Архитектура-(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. 10.1. Оператор выбора SELECT Все запросы пользователей реализуются с помощью оператора SELECT. Структура оператора: SELECT [ALL/DISTINСТ] <список полей> (| или *) FROM<список таблиц> [WHERE<предикат - условия выборки или соединения>] [GROUP BY<список полей результата>] [HAVING<предикат - для группировки>] [ORDER BY<список полей упорядочивания>] | - в результирующий набор включаются значения всех перечисленных атрибутов исходных отношений. * - в результирующий набор включаются значения всех атрибутов исходных отношений. 10.2. Составляющие оператора: 10.2.1. SELECT - ключевое слово начала запроса. ALL - означает, что в результирующий набор включаются все кортежи, удовлетворяющие условию запроса. DISTING - в результирующий набор включаются только разные кортежи. <список полей> (| или *) - либо мы можем указать список полей, которые должны быть в результирующей таблице, либо все атрибуты отношений удовлетворяют запросу. 10.2.2. FROM - является обязательным, задаёт перечень исходных отношений запроса. 10.2.3. WHERE - содержит условия отбора кортежей или условия соединения кортежей, задается с помощью предиката. Предикат - это выражение с неопределенными переменными; если этим переменным придать конкретные значения, то предикат принимает значение "истина" или "ложь". С помощью предиката мы задаем условия выборки, например, Если а = в то: а = 3, в = 3 – истина, а = 3, в = 4 – ложь. В этом разделе могут быть использованы шесть групп предикатов: 1) предикат сравнения (>,<,<=,>=): оценка = "отлично". 2) Between A and B - предикат-диапазон, принимает значения "истина", когда сравнимое значение попадает в сравниваемый диапазон, включает границы диапазона: Года рождения: Between 1980 and 1990. 3) Предикат отношения к множеству: 3.1) In (множество) - предикат вхождения во множество: Оценка IN ("отлично", "хорошо"). Истина - если атрибут принимает значение "отлично" или "хорошо". 3.2) NOT IN (множество) - предикат непопадания во множество. 4) IS NULL - предикат сравнения с неопределенным значением. Истина - если значение атрибута не определено. 4.1) логическое сложение: NOT NULL = NULL; TRUE U NULL = TRUE; NULL U NULL = NULL. 4.2) логическое умножение: TRUE ∩ NULL = NULL. 5) предикат сравнения с образцами: 5.1) LIKE (образец) Истина - если значение сравниваемого атрибута совпадает с заданным образцом. 5.2) NOT LIKE (образец) Истина - если значение сравниваемого атрибута не совпадает с заданным образцом. 6) EXIST - предикат существования. Итак, с помощью WHERE мы формируем выборку данных с большим набором условий. 10.2.3. GROUP BY - раздел задает список полей для группировки. Кортежи будут группироваться по значениям какого-либо атрибута (нескольких). Кроме того, с помощью этого раздела можно задать дополнительные условия. 10.2.4. HAVING - раздел содержит предикат условий для каждой группы. 10.2.5. ORDER BY - позволяет упорядочить последовательность вывода кортежей по какому-то атрибуту. ORDER BY <"Фамилия">- кортежи "Фамилия" будут располагаться по алфавиту. 10.3. Вложенные запросы Внутри оператора SELECT может осуществляться ещё (не один) запрос: Пусть требуется узнать поставщиков помидоров, являющихся поставляемым продуктом с каким-то номером. Для этого можно дать запрос: SELECT Название, Статус FROM Поставщики WHERE ПС IN (SELECT ПС FROM Поставки WHERE ПР IN (SELECT ПР FROM Продукты WHERE Продукт = 'Помидоры')); В данном случае результатом самого внутреннего подзапроса является только одно значение. Подзапрос следующего уровня в свою очередь дает в результате множество. Последний, самый внешний SELECT, вычисляет окончательный результат. Вообще допускается любая глубина вложенности подзапросов. Тот же результат можно получить с помощью соединения: SELECT Название, Статус FROM Поставщики, Поставки, Продукты WHERE Поставщики.ПС = Поставки.ПС AND Поставки.ПР = Продукты.ПР AND Продукт = 'Помидоры'; Однако при выполнении этого компактного запроса система должна одновременно обрабатывать данные из трёх таблиц, тогда как в предыдущем примере эти таблицы обрабатываются поочередно. Естественно, что для их реализации требуются различные ресурсы памяти и времени, однако этого практически невозможно ощутить при работе с ограниченным объемом данных.
Лекция 11. Модель бинарных ассоциаций.
Дата добавления: 2014-01-05; Просмотров: 336; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |