
- •1.1.Введение
- •1.1.1.Термины и определения
- •1.1.2. Основные функции субд
- •1.1.3. Классификация субд
- •1.1.4. Возможности субд
- •1.2. Обзор структуры субд
- •1.2.1.Источники управляющих инструкций
- •1.2.2.Обработка запросов
- •1.2.3. Менеджеры буферов и хранения данных
- •1.2.4. Обработка транзакций
- •1.2.5.Процессор запросов
- •2.2. Программирование приложений баз данных
- •2.3. Реализация систем баз данных
- •3.1.2.Домен
- •3.1.3. Схема отношения, схема базы данных
- •3.1.4. Кортеж, отношение
- •2.1. Проектирование баз данных
- •3.1.2.Домен
- •3.1.3. Схема отношения, схема базы данных
- •3.1.4. Кортеж, отношение
- •3.2. Фундаментальные свойства отношений
- •3.3. Реляционная модель данных
- •4.4. Специальные реляционные операции
- •5.2.Исчисление кортежей
- •5.2.1.Правильно построенные формулы
- •5.2.2. Кванторы, свободные и связанные переменные
- •5.2.3.Целевые списки и выражения реляционного исчисления
- •Лекция 6. Функциональные зависимости и декомпозиция без потерь Учебные вопросы
- •6.2. Замыкание множества функциональных зависимостей
- •6.3. Аксиомы Армстронга.
- •6.4.Замыкание множества атрибутов
- •6.5. Минимальное покрытие множества функциональных зависимостей
- •6.6.Декомпозиция без потерь и функциональные зависимости
- •6.7. Корректные и некорректные декомпозиции отношений. Теорема Хита
- •6.8. Диаграммы функциональных зависимостей
- •7.1. Введение
- •7.1. Введение
- •7.2. Минимальные функциональные зависимости и вторая нормальная форма
- •8.1. Введение
- •8.1. Введение
- •8.2. Многозначные зависимости и четвертая нормальная форма
- •8.2.1. Аномалии обновлений при наличии многозначных зависимостей и возможная декомпозиция
- •8.2.2. Многозначные зависимости. Теорема Фейджина. Четвертая нормальная форма
- •8.2.3. Лемма Фейджина
- •8.2.4. Теорема Фейджина
- •8.3. Зависимости проекции/соединения и пятая нормальная форма
- •8.3.2. Зависимость проекции/соединения
- •8.3.3. Аномалии, вызываемые наличием зависимости проекции/соединения
- •8.3.4. Устранение аномалий обновления в 3-декомпозиции
- •8.3.5. Пятая нормальная форма
- •Лекция 9. Sql язык структурированных запросов
- •9.1. Введение
- •9.2. Функции языка sql
- •9.3 История
- •9.4.Вопросы совместимости
- •9.5. Преимущества и недостатки
- •9.5.1. Преимущества
- •1. Независимость от конкретной субд
- •2. Наличие стандартов
- •3. Декларативность
- •9.5.2.Недостатки
- •1. Несоответствие реляционной модели данных
- •9.7. Проекция в sql
- •9.8. Выбор в sql
- •9.9. Сравнение строк
- •9.10. Запросы к нескольким отношениям9.10.1. Декартово произведение и соединение в sql
- •Дисциплина “Обработка информации баз данных и знаний” Лекция 10. Sql язык структурированных запросов
- •10.1.2. Объединение, пересечение и разность запросов
- •10.2. Подзапросы
- •10.2.1. Подзапросы для вычисления скалярных значений
- •10.2.2. Условия уровня отношения
- •10.2.3. Условия уровня кортежа
- •10.2.4. Коррелированные подзапросы
- •10.2.5. Подзапросы в предложениях from
- •10.2.6. Выражения соединения в sql
9.7. Проекция в sql
Для решения подобной задачи в предложении SELECT вместо символа звездочки (*) следует задать список атрибутов отношения, упомянутого в предложении FROM, которые подлежат включению в итоговое отношение.
Чтобы в итоговое отношение включались только наименования кинофильмов и значения длительности их воспроизведения, запрос можно записать так:
SELECT title, length
FROM Movie
WНERE studioName = 'Disney' AND year = 1990;
Чтобы обеспечить замену заголовков таблицы, получаемой в результате обработки запроса с title и length на name и duration, необходимо дополнить текст запроса следующим образом:
SELECT title AS name, length AS duration
FROM Movie
WНERE studioName = 'Disney' AND year = 1990;
Еще одна возможность, предусмотренная синтаксисом предложения SELECT, связана с использованием на месте имен атрибутов вычисляемых выражений.
Предположим, что при выполнении запроса необходимо обеспечить представление значения продолжительности воспроизведения кинофильмов не в минутах, а в часах. Для достижения цели предложение SELECT следует исправить, скажем, так:
SELECT title AS name, length*0.016667 AS lengthInHours
В качестве элементов списка предложения SELECT разрешается использовать даже постоянные величины.
SELECT tit1e AS nаmе, 1ength*0.016667 AS length, 'hrs.' AS inHours
FROM Movie
WНERE studioName = 'Disney' AND year = 1990;
9.8. Выбор в sql
Возможности оператора выбора ; используемого в реляционной алгебре, реализуются и значительно расширяются предложением WНERE SQL. Условные выражения, следующие за служебным словом WНERE, могут создаваться на основе шести общеупотребительных операторов сравнения: = ("равно"), <> ("не равно"), < ("меньше"), > ("больше"), <= ("меньше или равно", или "не больше") и >= ("больше или равно", или "не меньше").
В роли операндов, сопоставляемых посредством операторов сравнения, могут выступать константы и идентификаторы-имена атрибутов отношений, упомянутых в предложении FROM. Перед сравнением числовых значений допустимо применять к ним различные арифметические операторы, такие как +, * и т.д.
Следующий запрос предполагает поиск информации обо всех кинофильмах, вышедших на экран после 1970 года и снятых на черно-белой пленке:
SELECT title
FROM Movie
WНERE year > 1970 AND NOT inColor;
Еще одна конструкция SQL: Запрос предусматривает выбор названий таких кинофильмов, которые сняты киностудией "MGM" и либо выпущены после 1970 года, либо обладают продолжительностью воспроизведения, меньшей 90 минут.
SELECT title
FROM Movie
WНERE (year > 1970 OR length < 90) AND studioName = 'MGM';
9.9. Сравнение строк
При сравнении строк посредством любого из операторов - <, <=, > или >= - проверяется, должна ли одна строка предшествовать другой, если их поместить в список, отсортированный в лексикографическом (алфавитном) порядке. Как и при сопоставлении строк с помощью оператора равенства, предполагается, что перед сравнением строки различных типов приводятся к одному типу на основании строгих правил преобразования.
Язык SQL предлагает также возможность сравнения строк с образцом. В этом случае выражение сравнения выглядит как
s LIKE р,
где s - это тестируемая строка, а р - образец, т.е. строка, которая может содержать необязательные символы-шаблоны - % и _.
Обычные символы в р сопоставляются с аналогичными символами в s, но символ % в р отвечает нулевому или большему количеству любых символов в s, а символ _ - в точности одному произвольному символу в s. Значением выражения служит TRUE, если и только если строка s удовлетворяет образцу р. Напротив, выражение s NOT LIKE p обращается в TRUE, если и только если строка s не совпадает с образцом р.
Чтобы извлечь из базы данных названия фильмов, часть названия которых "Star", а следующее слово состоит из четырех букв, достаточно выполнить запрос
SELECT title
FROM Movie
WНERE title LIKE ‘Star_ _ _ _’;