Студопедия

КАТЕГОРИИ:


Архитектура-(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. Формирование запросов к базе данных

Язык SQL

VEDOM RASP

Квантор всеобщности

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

 

Ном_зач_кн Фамилия Назв_дисц Дата   Назв_дисц Дата
02-Э-01 Иванов Физика 10.01.03   Химия 14.01.03
02-Э-01 Иванов Химия 14.01.03   Физика 10.01.03
02-Э-02 Сидоров Физика 10-01.03  
02-Э-02 Сидоров Химия 14.01.03  
О2-Э-О5 Коровин Химия 14.01.03  

 

Требуется определить фамилии тех студентов, каждый из которых сдавал все экзамены, перечисленные в отношении RASP. Необходимо обратить внимание на то, что условие выбора студента содержит определение каждый. В результирующее отношение нключаются только те студенты, которые сдавали каждый экзамен. Если взглянуть на полученный результат, то можно увидеть, что условию запроса удовлетворяют только два студента.

Полное решение в реляционном исчислении с использованием квантора всеобщности FORALL таково:

{t.Фамилия | t in VEDOM and s in RASP and

FORALL s {t. Назв_дисц_на = s.Назв_дисц and t.Дата = s.Дата)},

где t — кортеж отношения VEDOM;

s — кортеж отношения RASP.

Результат выполнения запроса:

 

Фамилия
Иванов Сидоров

 

Имя студента из строки t таблицы VEDOM помещается в результирующее отношение, если определяющее выражение истинно для строки t, а определяющее выражение истинно, если для каждой строки s отношения RASP должна существовать строка t в отношении VEDOM, удовлетворяющая условию, то есть в данном случае для каждой строки s отношения RASP должна существовать строка t в отношении VEDOM с одной и то же фамилией:

§ Иванов присутствует в строках t (1) и t (2): t (1) соответствует s (2) и t (2) соответствует s (1);

§ Сидоров присутствует в строках t (3) и t (4): t (3) соответствует s (2) и t (4) соответствует s (1);

§ Коровин присутствует только в строке t (5): t (5) соответствует s (1), а для s (2) нет соответствующей строки t.

Полное соответствие всем строкам отношения RASP есть только у Иванова и Сидорова. Таким образом, они и вошли в результирующее отношение.

Назначение оператора select состоит в выборке и отображении данных одной или нескольких таблиц БД.

Синтаксис оператора select:

SELECT [DISTINCT| ALL] {* ÷ [<СПИСОК СТОЛБЦОВ>]} FROM <СПИСОК ТАБЛИЦ>

[WHERE <предикат-условие выборки или соединения;>] [GROUP BY <список полей результата>]

[HAVING <предикат-условие для группы>]

[ORDER BY <список полей, по которым требуется упорядочить вывод>]

Поясним каждую фразу данного оператора.

Фраза select:

· наличие ключевого слова all (по умолчанию) означает, что в результирующую таблицу включаются все строки, удовлетворяющие условиям запроса, что может привести к появлению в результирующей таблице одинаковых строк;

· ключевое слово distinct предназначено для приведения таблицы в соответствие с принципами теории отношений, где предполагается отсутствие дубликатов строк;

· символ "*" определяет очень часто встречаемую ситуацию, когда в результирующий набор включаются все столбцы из исходной таблицы

· запроса.

Во фразе from задается перечень исходных таблиц запроса.

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

· сравнения " =, <>, >, <, >=, <=" — для сравнения результатов вычисления двух выражений; более сложные выражения строятся с помощью логических операторов AND, OR, NOT;

· between А and В — предикат истинен, когда вычисленное значение выражения попадает в заданный диапазон;

· in — предикат истинен тогда, когда сравниваемое значение входит в множество заданных значений;

· like и not like — предикаты, смысл которых противоположен, требуют задания шаблона, с которым сравнивается заданное значение;

· is null — предикат, применяющийся для выявления равенства значения некоторого атрибута неопределенному значению:

· exist и not exist, используемые во встроенных подзапросах.

Во фразе group by задается список полей группировки.

Во фразе having задаются предикаты-условия, накладываемые на каждую группу.

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

<== предыдущая лекция | следующая лекция ==>
Квантор существования | Запрос 7
Поделиться с друзьями:


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


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



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




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