Лекция_3 (С.Д. Кузнецов - Презентации лекций), страница 2
Описание файла
Файл "Лекция_3" внутри архива находится в папке "С.Д. Кузнецов - Презентации лекций". PDF-файл из архива "С.Д. Кузнецов - Презентации лекций", который расположен в категории "". Всё это находится в предмете "модель данных sql" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM19Скалярные выражения (18) Наиболее общим видом выражения с переключателем являетсявыражение с поисковым переключателем (searched_case)searched_case ::= CASE searched_when_clause_list[ ELSE value_expression ] ENDsearched_when_clause ::= WHEN conditional_expression THENvalue_expressionПравила вычисления выражений этого вида состоят в следующемВычисляется логическое выражение, указанное в первом разделеWHEN списка (searched_when_clause_list)Если значение этого логического выражения равняется true, то значением всего выражения с поисковым переключателемявляется значение выражения, указанного в первом разделеWHEN после ключевого слова THENИначе аналогичные действия производятся для второго разделаWHEN и т.
д.20.05.2016Лекция 3. Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM20Скалярные выражения (19) searched_case ::= CASE searched_when_clause_list[ ELSE value_expression ] ENDsearched_when_clause ::= WHEN conditional_expression THENvalue_expression Если ни для одного раздела WHEN при вычислении логическоговыражения не было получено значение true, тозначением всего выражения с поисковым переключателемявляется значение выражения, указанного в разделе ELSE Типы всех выражений, значения которых могут являтьсярезультатом выражения с поисковым переключателем, должныбыть совместимыми, итипом результата является «наименьший общий» тип набора типоввыражений-кандидатов на выработку результата Если в выражении отсутствует раздел ELSE, предполагаетсяналичие раздела ELSE NULL20.05.2016Лекция 3. Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM21Скалярные выражения (20)simple_case ::= CASE value_expression simple_when_clause_list[ ELSE value_expression ] ENDsimple_when_clause ::= WHEN value_expression THENvalue_expression В выражении с простым переключателем(simple_case) тип данных операндапереключателявыражения, непосредственно следующего заключевым словом CASE, назовем его CO – CaseOperandдолжен быть совместим с типом данных операндакаждого варианта20.05.2016выражения, непосредственно следующего заключевым словом WHEN; назовем WO – WhenOperandЛекция 3.
Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM22Скалярные выражения (21) Выражение с простым переключателем эквивалентно выражению с поисковымпереключателем20.05.2016Лекция 3. Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM23Скалярные выражения (22) Выражение NULLIF (V1, V2) эквивалентноследующему выражению с переключателем:CASE WHEN V1 = V2 THEN NULL ELSE V1 END Выражение COALESCE (V1, V2) эквивалентноследующему выражению с переключателем:CASE WHEN V1 IS NOT NULL THEN V1 ELSE V2END Выражение COALESCE (V1, V2, . . .
Vn) для n ≥ 3эквивалентно следующему выражению спереключателем:CASE WHEN V1 IS NOT NULL THEN V1ELSE COALESCE (V2,... <i>n</i>) END20.05.2016Лекция 3. Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM24Общая структура операторавыборки в языке SQL (1) Для выборки данных в прямом SQL используется операторSELECT, возвращающий набор из одной или нескольких строк одинаковойструктурыи задаваемый в следующем синтаксисе:20.05.2016Лекция 3. Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM25Общая структура операторавыборки в языке SQL (2) Семантика оператора выборки Для начала опишем общую схемувыполнения оператора SELECT всоответствии с предписаниямистандарта Выполнение запроса состоит изнескольких шагов,соответствующих разделамоператора выборки На первом шаге выполняется раздел FROMЕсли список ссылок на таблицы (table_reference_commalist) этогораздела соответствует таблицам A, B, … C, то в результатевыполнения раздела FROM образуется таблица20.05.2016назовем ее T,являющаяся расширенным декартовым произведением таблиц A,B, …, CЕсли в разделе FROM указана только одна таблица, то она же иявляется результатом выполнения этого разделаЛекция 3.
Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM26Общая структура операторавыборки в языке SQL (3)В реляционной алгебре длякорректного выполненияоперации взятия расширенногодекартова произведенияотношений требуетсяприменение операциипереименования атрибутовСоответствующие возможности переименования столбцов таблиц,указанных в списке раздела FROM, поддерживаются и в SQLАльтернативный способ именования столбцов результирующей таблицы Tосновывается на использовании квалифицированных имен столбцовИдея этого подхода (более раннего в истории SQL) заключается в том, что слюбой таблицей, ссылка на которую содержится в списке раздела FROM,можно связать некоторое имя-псевдоним20.05.2016в стандарте оно называется correlation nameТогда если с такой таблицей A связан псевдоним Z, то в пределах операторавыборки можно ссылаться на любой столбец a таблицы A поквалифицированному имени Z.aПока же будем считать, что имена всех столбцов таблицы T определены иразличныЛекция 3.
Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM27Общая структура операторавыборки в языке SQL (4)На втором шаге выполняется разделWHEREУсловное выражение(conditional_expression) этогораздела применяется к каждойстроке таблицы T, и результатомявляется таблица T1, содержащаяте и только те строки таблицы T,для которых результатом вычисления условного выражения является trueЕсли раздел WHERE в операторе выборки отсутствует, то это трактуется как наличиераздела WHERE true,значения false и uknown не являются разрешающимиЛогическое выражение табличного ограничения целостности запрещает наличие строкив таблице в том и только в том случае, когда результатом вычисления логическоговыражения на данной строке является false20.05.2016т.
е. T1 содержит те и только те строки, которые содержатся в таблице TОбратите внимание на разницу в трактовке логических выражений в операторахвыборки и в табличных ограничениях целостностиЛогическое выражение раздела WHERE (и раздела HAVING) оператора выборкиразрешает выборку строки в том и только в том случае, когда результатом вычислениялогического выражения на данной строке является trueЗаголовки таблиц T и T1 совпадаютзначения true и uknown не являются запрещающимиЛекция 3.
Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM28Общая структура операторавыборки в языке SQL (5) Если в операторе выборкиприсутствует разделGROUP BY, то онвыполняется на третьемшагеКаждый элемент спискаимен столбцов (column_name_commalist), указываемого в этомразделе, должен быть одним из имен столбцов таблицы T1В результате выполнения раздела GROUP BY образуетсясгруппированная таблица T2, в которой строки таблицы T1расставлены в минимальное число групп, таких, что во всехстроках одной группы значения столбцов, указанных в списке именстолбцов раздела GROUP BYодинаковыСгруппированные таблицы не могут являться окончательнымрезультатом оператора выборки20.05.2016столбцов группировки,они существуют только на концептуальном уровне на стадиивыполнения запроса, содержащего раздел GROUP BYЛекция 3.
Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM29Общая структура операторавыборки в языке SQL (6) При наличии в запросераздела HAVING,которому непредшествует разделGROUP BY, таблица T1рассматривается как сгруппированная таблица, состоящая из одной группыстрок, без столбцов группирования В этом случае логическое выражение раздела HAVINGможет состоять только из предикатов с агрегатнымифункциями, а результат вычисления этого раздела T3 либосовпадает с таблицей T1, либо является пустым. Если в операторе выборки присутствует раздел GROUP BY,но отсутствует раздел HAVING, то это трактуется как наличие раздела HAVING true, т. е.
T3 содержит те итолько те группы строк, которые содержатся в таблицеT220.05.2016Лекция 3. Общая характеристика оператораSELECT и организация списка ссылок натаблицы в разделе FROM30Общая структура операторавыборки в языке SQL (7) Рассмотрим, каким образом формируются значениястолбцов в таблице T4 Элемент списка выборки может задаваться одним из двухспособов: Сначала обсудим первый вариант В этом случае каждый элемент списка элементов выборкисоответствует столбцу таблицы T4 Столбцу может быть явным образом приписано имя Порядок формирования значения этого столбца длявыделенных выше случаев (a) и (b) различается, и мырассмотрим подобные случаи по отдельности20.05.2016Лекция 3.