Презентация на тему: Базы данных (часть 1)

Базы данных (часть 1)
Содержание
Базы данных
Проблемы файловых систем
Модель ANSI / SPARC
Системы управления базами данных
Поколения СУБД
Виды моделей данных
Иерархическая модель данных
Сетевая модель данных
Реляционная модель данных
Реляционная модель
Реляционная модель
Ключи
Реляционная алгебра
Операции реляционной алгебры (традиционные)
Операции реляционной алгебры (специальные)
Базы данных (часть 1)
Реляционное исчисление
Целостность БД
Целостность БД
Правила Кодда для реляционных БД
Правила Кодда для реляционных БД
Проектирование БД
Нормализация
Аномалии в ненормализованной таблице
Нормализация, функциональные зависимости
Нормализация, функциональные зависимости
Нормализация, функциональные зависимости
Нормализация
Нормализация
Нормализация (пример)
Нормализация, декомпозиция
3НФ и НФБК
3НФ и НФБК (по Заниоло)
Семантическое моделирование. Модель “Entity Relationship“ ( Чен, 1976 )
Модель «Сущность-связь»
Преобразование ER -модели в реляционную модель.
Реализация связи «многие-ко-многим»
Язык SQL
SQL: операторы DDL
SQL: оператор выборки SELECT
SQL: оператор выборки SELECT
SQL: оператор выборки SELECT
SQL: оператор выборки SELECT : группировка, агрегатные функции
SQL: оператор выборки SELECT : группировка, агрегатные функции
SQL: оператор выборки SELECT : запрос к нескольким таблицам
SQL: оператор выборки SELECT : запрос к нескольким таблицам
SQL: оператор выборки SELECT
SQL: оператор выборки SELECT : некоррелированные подзапросы
SQL: оператор выборки SELECT : коррелированные подзапросы
SQL: оператор выборки SELECT
SQL: операторы INSERT, UPDATE
SQL: операторы DELETE, TRUNCATE
Объекты БД: представления
Объекты БД: процедуры и функции
Объекты БД: триггеры
Транзакции
Проблемы параллельной обработки
Транзакции
Уровни изоляции транзакций
Уровни изоляции транзакций
Блокировки
Блокировки
1/64
Средняя оценка: 4.7/5 (всего оценок: 55)
Код скопирован в буфер обмена
Скачать (380 Кб)
1

Первый слайд презентации: Базы данных (часть 1)

Киселев Денис Викторович

Изображение слайда
2

Слайд 2: Содержание

Работа с данными. Модели данных. Реляционная модель. Проектирование БД. Нормализация. Нормальные формы. Семантическое моделирование. Модель «сущность-связь». Целостность данных. Язык SQL. DDL. DML. Оператор выборки SELECT. Выборка данных из нескольких таблиц. Подзапросы. Операторы вставки, обновления, удаления. Представления, хранимые процедуры, функции, триггеры. Транзакции. Блокировки.

Изображение слайда
3

Слайд 3: Базы данных

Отличие задач хранения и обработки данных от вычислительных задач – необходимость надежного внешнего хранения больших объемов данных сложной структуры независимо от электропитания. Информационная система – это система, обеспечивающая сбор, хранение и выдачу данных. БД – ядро информационной системы. БД – именованная совокупность данных, отображающая состояние объектов и их отношений в рассматриваемой предметной области (части реального мира). Особенности БД: Данные должны иметь известный формат (метаданные). Данные должны храниться, извлекаться и модифицироваться с помощью специального программного обеспечения (СУБД). Данные подчиняются набору принципов и правил (целостность).

Изображение слайда
4

Слайд 4: Проблемы файловых систем

Структура хранимых данных описывается в обрабатывающих программах. Меняется структура – меняется все программное обеспечение. Данные дублируются. Трудно обеспечить параллельное изменение данных. Безопасность. Главное в переходе к БД – устранение избыточности и противоречивости!

Изображение слайда
5

Слайд 5: Модель ANSI / SPARC

Внешний уровень Концептуальный уровень Физический уровень Логическая независимость Физическая независимость

Изображение слайда
6

Слайд 6: Системы управления базами данных

СУБД – совокупность языковых и программных средств, предназначенных для создания и использования БД. Язык описания данных. Язык манипулирования данными. Инструментальная среда создания и использования БД.

Изображение слайда
7

Слайд 7: Поколения СУБД

Поколение 1. Большие центральные ЭВМ. СУБД IMS фирмы IBM (1968). Стандарт CODASYL (1975). ЭВМ IBM 360/370, PDP-11. БД – во внешней памяти ЦЭВМ. Доступ – через консольные терминалы без собственных вычислительных ресурсов. Управление ресурсами – средствами операционной системы. Поколение 2. Персональные ЭВМ. Настольные БД. Массовое распространение. Преимущественно локальный монопольный доступ. При сетевом доступе – копирование файлов. Обеспечение целостности с помощью приложений. DBase, FoxPro, Clipper, Paradox, Clarion. Поколение 3. Серверы БД. Сетевая работа с данными. Распределенный многопользовательский параллельный доступ. Обеспечение целостности сервером БД. Мощные средства администрирования. Поддержка многоплатформенности.

Изображение слайда
8

Слайд 8: Виды моделей данных

Модель данных – абстракция, описывающая структуру (организацию) данных и отношения между ними. Инфологическая (семантическая) модель данных – описание объектов предметной области, их свойств и взаимосвязей. Данные представлены в виде, независимом от СУБД. Даталогическиая модель – описание структуры данных с учетом конкретной СУБД. Физическая модель – описывание методов размещения данных на носителях информации.

Изображение слайда
9

Слайд 9: Иерархическая модель данных

СУБД IMS (Information Management System) компании IBM, язык DL/1, 1968. Схема иерархической БД – совокупность деревьев. Поле – минимальная неделимая единица данных. Сегмент – набор полей. Сегменты связаны в ориентированный древовидный граф. Ребра отображают иерархические связи между сегментами. Дерево – физическая БД. В каждой физической БД существует один корневой сегмент. Каждый исходный сегмент может быть связан с произвольным числом подчиненных сегментов. Каждый подчиненный сегмент связан только с одним исходным сегментом.

Изображение слайда
10

Слайд 10: Сетевая модель данных

Чарльз Бахман. СУБД IDS (Integrated Data Store) компании General Electric. Стандарт CODASYL (1975). Расширение иерархической модели. Элемент данных – минимальная неделимая единица данных. Агрегат данных – обобщение элементов данных. Запись – совокупность агрегатов или элементов данных, моделирующая класс объектов реального мира. Набор данных – иерархическая связь между двумя типами записей. Для любых двух типов записей может быть задано любое количество наборов. Один тип записи не может быть одновременно и владельцем и членом набора. Нет корневой записи.

Изображение слайда
11

Слайд 11: Реляционная модель данных

Кодд, 1970. Переход от работы с элементами данных к работе с объектами. Реляционная БД – набор плоских таблиц. Серьезная теоретическая математическая основа (реляционная алгебра и реляционное исчисление). Работа с множествами, а не с единичными записями (операторами, делающими новые таблицы из исходных таблиц). Более абстрактно, чем навигационные модели. Описывается логическая структура данных, без дополнительных машинных структур (физических указателей). Навигация автоматическая. Наглядность и гибкость.

Изображение слайда
12

Слайд 12: Реляционная модель

Отношение R  D1  D2  …  D N Ф И О Иванов Иван Петрович Петров Сергей Сергеевич Петров Сергей Иванович Иванов Петров Иван Сергей Иванович Сергеевич Петрович Ф И О Иванов Иван Иванович Иванов Иван Сергеевич Иванов Иван Петрович … … … Петров Сергей Сергеевич Петров Сергей Петрович Х Х =

Изображение слайда
13

Слайд 13: Реляционная модель

БД – множество взаимосвязанных отношений. Кортеж – строка отношения. Атрибут – вхождение домена в отношение. Ранг (степень) отношения – количество атрибутов. Кардинальное число отношения – количество кортежей. Ключи – средство идентификации кортежей и связи отношений. Отношение не может содержать одинаковых кортежей. Кортежи не упорядочены. Атрибуты не упорядочены.

Изображение слайда
14

Слайд 14: Ключи

Номер Имя Группа 111111 Иванов МП-21 … … … 999999 Петров ЭТМО-47 Номер Код_предмета Оценка 111111 1 5 111111 2 3 … … … 999999 1 4 999999 2 4 Код_предмета Предмет 1 Мат. Анализ 2 Физика … …

Изображение слайда
15

Слайд 15: Реляционная алгебра

Реляционная алгебра основана на теории множеств. Операции производятся над отношениями. Результат любой операции – отношение (Свойство замкнутости): результат одной операции может использоваться в качестве исходных данных для другой (можно работать с вложенными выражениями). Язык реляционно полный, если содержит все операции реляционной алгебры.

Изображение слайда
16

Слайд 16: Операции реляционной алгебры (традиционные)

Объединение – отношение, содержащее множество кортежей, принадлежащих одному или обоим исходным отношениям. R 1  R 2 = { r | r  R 1  r  R 2}. Пересечение – отношение, содержащее множество кортежей, принадлежащих обоим исходным отношениям. R 1  R 2 = { r | r  R 1  r  R 2}. Разность – отношение, содержащее множество кортежей, принадлежащих первому и не принадлежащих второму отношению. R 1 \ R 2 = { r | r  R 1  r  R 2}. Расширенное декартово произведение (сочетание исходных кортежей) – отношение, содержащее множество кортежей, полученных сцеплением каждого кортежа первого отношения с каждым кортежем второго отношения. R 1  R 2 = {( r, q ) | r  R 1  q  R 2}.

Изображение слайда
17

Слайд 17: Операции реляционной алгебры (специальные)

Горизонтальный выбор (фильтрация) – отношение, включающее кортежи, для которых истинно заданное условие. Проекция (вертикальный выбор) – отношение, содержащее часть атрибутов исходного отношения. Кортежи не дублируются. Условное соединение – отношение, содержащее сочетание исходных кортежей, удовлетворяющих условию – общему значению для одного или нескольких общих атрибутов. Деление – отношение, содержащее кортежи, включающие значения первого подмножества атрибутов кортежей первого отношения, такие, что множество значений второго подмножества атрибутов совпадает с множеством значений второго отношения.

Изображение слайда
18

Слайд 18

Номер Предмет 111111 МА 111111 ЛА 111111 ОФ 111112 МА 111112 ЛА 111112 ОФ 111113 ОФ Предмет МА ЛА ОФ Номер 111111 111112 / = Номер Имя 111111 А 111112 Б 111113 В JOIN = Номер Имя Предмет 111111 А МА 111111 А ЛА 111111 А ОФ 111112 Б МА 111112 Б ЛА 111112 Б ОФ 111113 В ОФ

Изображение слайда
19

Слайд 19: Реляционное исчисление

Реляционное исчисление основано на разделе математической логики – исчислении предикатов. Предикат – логическая функция, возвращающая значения «Истина» или «Ложь». Формулировка правил записи выражений, определяющих новые отношения на основе исходных (без указания способов их получения). Исчисление кортежей. Переменная кортежа – переменная, область допустимых значений которой кортежи данного отношения. Языки ALPHA, QUEL. Исчисление доменов. Переменная домена – переменная, область допустимых значений которой домен. Языки FQL, DEDUCE, QBE. Язык реляционно полный, если содержит все возможности реляционного исчисления.

Изображение слайда
20

Слайд 20: Целостность БД

Целостность – соответствие данных, хранимых в БД (их точность и корректность), объектам реального мира и их взаимосвязям в каждый момент времени. Целостность – набор не нарушаемых правил (ограничений). Целостность, обеспечивающая реляционный подход. Структурная целостность (работа с однородными структурами – реляционными отношениями). Языковая целостность (язык должен поддерживать реляционный подход). Целостность первичных ключей (отсутствие неопределенных значений). Ссылочная целостность (непротиворечивость первичных и внешних ключей).

Изображение слайда
21

Слайд 21: Целостность БД

Целостность состояния данных о предметной области (декларативные, немедленно проверяемые ограничения). Целостность атрибута (значение по умолчанию, допустимость неопределенных значений, условия на допустимость значений, уникальность значений и т.д.). Целостность домена (домен содержит допустимые значения для многих атрибутов). Целостность отношения (согласованность разных атрибутов и кортежей внутри одного отношения). Целостность базы данных (согласованность данных в разных отношениях). Целостность переходов (откладываемые ограничения).

Изображение слайда
22

Слайд 22: Правила Кодда для реляционных БД

Данные представляются в виде таблиц. Данные доступны логически. NULL трактуется как неизвестное значение. БД включает в себя метаданные. Для взаимодействия с СУБД используется единый язык. СУБД обеспечивает альтернативные виды отображения данных.

Изображение слайда
23

Слайд 23: Правила Кодда для реляционных БД

Данные поддерживают операции реляционной алгебры. Обеспечивается независимость от физической организации данных. Обеспечивается независимость от логической организации данных. За целостность данных отвечает СУБД. Целостность данных не может быть нарушена. Поддерживаются распределенные операции.

Изображение слайда
24

Слайд 24: Проектирование БД

Проектирование БД – создание структуры БД. Концептуальное (семантическое). Анализ предметной области. Логическое. Физическое. Эффективное размещение БД на внешних носителях.

Изображение слайда
25

Слайд 25: Нормализация

Результат логического проектирования реляционной БД – набор взаимосвязанных отношений, в которых определены все атрибуты, ключи и правила целостности. Нормализация – преобразование исходного отношения к приемлемому набору отношений методом последовательных приближений. Цели нормализации: Уменьшение избыточности. Уменьшение числа аномалий. Проектирование понятного макета БД. Упрощение наложения ограничений целостности. Нормализация проводится методом декомпозиции – разбиения отношений на другие отношения

Изображение слайда
26

Слайд 26: Аномалии в ненормализованной таблице

Номер Фамилия Имя Группа Предмет Оценка 111111 Иванов Иван ЭКТ-11 МА 3 111111 Иванов Иван ЭКТ-21 ОФ 4 111112 Петров Петр ЭКТ-11 111112 Петров Петр ЭКТ-11 МА 5

Изображение слайда
27

Слайд 27: Нормализация, функциональные зависимости

Тривиальная ФЗ – ФЗ, которая не может не выполняться. ФЗ тривиальная, когда Y – подмножество X. ( X → Y, Y  X ) Номер, Фамилия → Фамилия. Каждое отношение обязательно удовлетворяет некоторой тривиальной ФЗ (ключ Y и все атрибуты отношения X ). Тривиальные ФЗ в расчет не берутся. Пусть R – отношение, X, Y – произвольные подмножества множества атрибутов отношения R. Y функционально зависимо от X ( X → Y ) тогда и только тогда, когда для любого допустимого значения R любое значение X связано с одним значением Y. Если 2 кортежа совпадают по X, они совпадают и по Y. X – детерминант, Y – зависимая часть.

Изображение слайда
28

Слайд 28: Нормализация, функциональные зависимости

Правила вывода Армстронга (аксиомы Армстронга). Если B  A, то A → B. Если A → B, то AC → BC. Если A → B, B → C, то A → C. A → A. Если A → BC, то A → B, A → C. Если A → B, A → C, то A → BC. Если A → B, C → D, то AC → BD. ФЗ бесконечно много. Одно и то же состояние предметной области может быть отображено разными множествами ФЗ. Пусть S – множество ФЗ. Замыкание S + – множество всех ФЗ, подразумеваемых S (выводимых из S ). S – подмножество S +. Два множества ФЗ S 1 и S 2 эквивалентны, когда S 1+= S 2+. Пусть S 1, S 2 – множества ФЗ. Если любая ФЗ из S 1 является ФЗ S 2, то S 2 – покрытие для S 1.

Изображение слайда
29

Слайд 29: Нормализация, функциональные зависимости

Множество ФЗ неприводимое, когда: Зависимая часть содержит один атрибут. Детерминант – неприводим, т.е. ни один атрибут не может быть опущен без изменения замыкания множества. Ни одна ФЗ не может быть опущена без изменения замыкания множества. Каждое множество эквивалентно хотя бы одному неприводимому множеству (их замыкания совпадают). Неприводимое множество ФЗ, эквивалентное некоторому множеству ФЗ S – неприводимое покрытие множества S. Неприводимое покрытие используется при нормализации. Нормализованное отношение: Если X – потенциальный ключ, то все атрибуты функционально зависят от X. Если существует X → Y, X – не потенциальный ключ, отношение R содержит избыточные данные. Надо выделить такие ФЗ и преобразовать структуру так, чтобы избавится от них (провести нормализацию).

Изображение слайда
30

Слайд 30: Нормализация

Нормализация – сокращение числа ФЗ. Нормализация – постепенный процесс улучшения логической структуры БД. Шаг нормализации – переход к следующей нормальной форме (НФ). Разделение отношения на два и более новых отношения. При этом утрачивается одна ФЗ. Каждая следующая НФ лучше предыдущей. При переходе к следующей НФ свойства предыдущих НФ сохраняются. Переходы между НФ обратимы (информация не утрачивается). 1НФ, 2НФ, 3НФ – Кодд, НФБК – Бойс и Кодд, 4НФ, 5НФ – Фейджин. Теорема Хеза. Пусть существует отношение R ( A, B, C ). Если A → B, то R эквивалентно соединению проекций ( A, B ) и ( A, C ). R(A,B,C)=R1(A,B) JOIN R2(A,C).

Изображение слайда
31

Слайд 31: Нормализация

Хороший результат – БД в 3НФ. Отношение в 3НФ, когда любой кортеж состоит из значения первичного ключа, который идентифицирует некоторую сущность и набора взаимно независимых атрибутов, описывающих эту сущность. 1НФ – отношение содержит только логически неделимые (скалярные) значения. 2НФ = 1НФ + каждый неключевой атрибут полностью (неприводимо) зависит от первичного ключа. 3НФ = 2НФ + неключевые атрибуты взаимно независимы (не транзитивно зависят от первичного ключа).

Изображение слайда
32

Слайд 32: Нормализация (пример)

1НФ 2НФ 3НФ Ф И О Номер Группа Факультет Специальность Предмет Семестр Оценка Ф И О Номер Группа Факультет Специальность Номер Предмет Семестр Оценка Номер Ф И О Группа Группа Факультет Специальность Номер Предмет Семестр Оценка Ф, И, О, Номер, Группа, Факультет, Специальность, Предмет, Семестр, Оценка

Изображение слайда
33

Слайд 33: Нормализация, декомпозиция

При выборе варианта декомпозиции предпочтительнее декомпозиция с независимыми проекциями. Проекции R 1, R 2 отношения R независимы, когда: любая ФЗ в R является логическим следствием ФЗ в R 1 и R 2, общие атрибуты R 1 и R 2 образуют потенциальный ключ по крайней мере в одной из них. Проекции независимы, если их обновление может быть выполнено независимо. Номер Группа Факультет Номер Группа Номер Факультет Номер Группа Группа Факультет 2НФ 3НФ

Изображение слайда
34

Слайд 34: 3НФ и НФБК

3НФ не подходит для следующих отношений: Отношение имеет 2 или более потенциальных ключей. Два потенциальных ключа являются сложными (составными). Они перекрываются (имеют общие атрибуты). Без этих условий 3НФ эквивалентно НФБК. Отношение в НФБК, когда каждая нетривиальная и неприводимая слева ФЗ обладает потенциальным ключом в качестве детерминанта. Паспорт Номер Предмет Семестр Оценка Номер Предмет Оценка Паспорт Номер НФБК 3НФ

Изображение слайда
35

Слайд 35: 3НФ и НФБК (по Заниоло)

Пусть существует отношение R. X – некоторое множество атрибутов, A – некоторый атрибут. R находится в 3НФ, если для любой ФЗ X → A истинно по крайней мере одно из ниже перечисленного: A – подмножество X (ФЗ - тривиальна). X содержит потенциальный ключ ( X – суперключ). A – часть потенциального ключа. R находится в НФБК, если для любой ФЗ X → A истинно по крайней мере одно из ниже перечисленного: A – подмножество X (ФЗ - тривиальна). X содержит потенциальный ключ ( X – суперключ).

Изображение слайда
36

Слайд 36: Семантическое моделирование. Модель “Entity Relationship“ ( Чен, 1976 )

Недостатки проектирования с помощью нормализации: В модели недостаточно представлен смысл предметной области. Трудно обсуждать со специалистами предметной области. Нет средств для представления ФЗ. Трудно проектировать, начиная с одной большой таблицы. Сущность – класс однотипных объектов. Сущность имеет уникальное имя. Существует множество экземпляров сущности. Каждый экземпляр сущности должен быть отличим от всех других экземпляров. Сущность имеет свои характеристики – атрибуты. Атрибут уточняет, идентифицирует, классифицирует, характеризует или выражает состояние сущности. Набор атрибутов должен быть таким, чтобы экземпляры сущностей различались. Между сущностями существуют связи – бинарные ассоциации, показывающие, каким образом сущности соотносятся и взаимодействуют между собой. Возможны связи, связывающие одну сущность – рекурсивные связи (иерархии).

Изображение слайда
37

Слайд 37: Модель «Сущность-связь»

Связи бывают: Один к одному (1:1). Один ко многим (1: M ). Многие ко многим (M: M ). Связи бывают обязательные и необязательные (полные и частичные). Обязательная связь – должны участвовать все экземпляры сущности. Сильная сущность – это сущность, экземпляры которой могут существовать самостоятельно вне зависимости от существования экземпляров других сущностей. Слабая сущность – зависимая сущность. Экземпляр слабой сущности не может существовать самостоятельно, без существования связанного экземпляра сильной сущности. Супертип – сущность, которая может быть представлена в виде набора сущностей-подтипов. Каждый из подтипов имеет общие атрибуты, которые определяются на уровне супертипа. Подтип содержит атрибуты супертипа и свои атрибуты.

Изображение слайда
38

Слайд 38: Преобразование ER -модели в реляционную модель

Каждой сущности ставится в соответствие отношение. Каждый атрибут сущности становится атрибутом соответствующего отношения. Первичный ключ сущности становится первичным ключом отношения. В каждое отношение, соответствующее подчиненной сущности, добавляются атрибуты – первичные ключи основных сущностей. Для моделирования необязательных связей у атрибутов, соответствующих внешнему ключу, устанавливается свойство допустимости неопределенных значений. Для обязательных связей – атрибуты получают свойство недопустимости неопределенных значений. Для отображения категоризации сущностей возможны разные подходы: Создается одно отношение для всех подтипов одного супертипа. Создаются отдельные отношения для каждого подтипа и супертипа. Для возможности переходов к подтипам от супертипа в супертип включается идентификатор связи. Для связей типа «многие-ко-многим» создаются специальные связующие отношения, связанные с исходными отношениями «один-ко-многим».

Изображение слайда
39

Слайд 39: Реализация связи «многие-ко-многим»

Код специальности Специальность Факультет Идентификатор предмета Предмет Кафедра Код специальности Идентификатор предмета

Изображение слайда
40

Слайд 40: Язык SQL

SQL основывается на реляционной алгебре. Язык SQL делится на четыре части: операторы определения данных ( Data Definition Language, DDL ) операторы манипуляции данными ( Data Manipulation Language, DML ) операторы определения доступа к данным ( Data Control Language, DCL ) операторы управления транзакциями ( Transaction Control Language, TCL ) СУБД Язык InterBase / Firebird PSQL IBM DB2 SQL PL MS SQL Server/ Sybase ASE Transact-SQL MySQL SQL/PSM Oracle PL/SQL PostgreSQL PL/pgSQL Язык SQL разработан в 70-х в компании IBM Research. СУБД System R. SEQUEL - Structured English QUEry Language С 1986 существуют стандарты ( SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2006, SQL:2008 )

Изображение слайда
41

Слайд 41: SQL: операторы DDL

CREATE – создание объекта ALTER – изменение структуры объекта DROP – уничтожение объекта CREATE TABLE имя _1 ( столбец _1 тип _1, столбец _2 тип _2…) ; ALTER TABLE имя_1 ADD столбец_3 тип_3 ; ALTER TABLE имя_1 MODIFY столбец_3 тип_3A ; DROP TABLE имя _1 ; CREATE / ALTER / DROP Table / View / Function / Procedure / Login / User / Role /…

Изображение слайда
42

Слайд 42: SQL: оператор выборки SELECT

SELECT поля FROM таблицы WHERE условие; SELECT Фамилия, Имя FROM Студенты WHERE Группа = ‘ МП-21 ’; SELECT * FROM Студенты WHERE Группа = ‘ МП-21 ’ And Группа = ‘ МП-2 2’; SELECT * FROM Студенты WHERE Группа = ‘ МП-21 ’ Or Группа = ‘ МП-2 2’; SELECT * FROM Студенты WHERE Not Группа = ‘ МП-21 ’; SELECT * FROM Студенты WHERE Группа In (‘ МП-21 ’, ‘ МП-2 2’); SELECT * FROM Студенты WHERE Группа BETWEEN ‘ МП-21 ’ And ‘ МП-2 9’; SELECT * FROM Студенты WHERE Группа Like ‘ МП-2 %’; SELECT * FROM Студенты WHERE Группа Like ‘ МП-2 _’;

Изображение слайда
43

Слайд 43: SQL: оператор выборки SELECT

SELECT поля FROM таблицы WHERE условие ORDER BY поля; SELECT * FROM Студенты ORDER BY Фамилия, Имя SELECT * FROM Студенты ORDER BY Фамилия DESC, Имя DESC SELECT * FROM Студенты ORDER BY Фамилия ASC, Имя ASC SELECT * FROM Студенты ORDER BY Фамилия, Имя DESC SELECT Distinct / All поля FROM таблицы WHERE условие; SELECT Группа FROM Студенты; SELECT Distinct Группа FROM Студенты;

Изображение слайда
44

Слайд 44: SQL: оператор выборки SELECT

SELECT поле1, поле2 As псевдоним _ поля FROM таблица1 As псевдоним_таблицы; SELECT фамилия As Ф 1, Студенты.Фамилия As Ф2, С.Фамилия As Ф3 FROM Студенты As С; SELECT (Стипендия*10 + 1 000 000)/5 As Новая_стипендия FROM Студенты; SELECT Year(Getdate())-Year( Дата_рождения ) FROM Студенты; SELECT DateDiff(Year, Дата_рождения, Getdate()) FROM Студенты; SELECT Фамилия, IsNull( Дата_рождения, Getdate()), Left( Имя,1 ) + ’.’ As Имя FROM Студенты;

Изображение слайда
45

Слайд 45: SQL: оператор выборки SELECT : группировка, агрегатные функции

SELECT поля, агрегатные функции FROM таблица GROUP BY поля; Агрегатные функции : Count(); Max(); Min(); Sum(); Avg(); … SELECT Группа, Count(*) FROM Студенты GROUP BY Группа; SELECT Группа, Sum( Стипендия ) FROM Студенты GROUP BY Группа; SELECT Count(*) FROM Студенты; SELECT Группа, Предмет, Avg( Оценка ) FROM Студенты GROUP BY Группа, Предмет;

Изображение слайда
46

Слайд 46: SQL: оператор выборки SELECT : группировка, агрегатные функции

SELECT поля, агрегатные функции FROM таблица WHERE условие1 GROUP BY поля HAVING условие2; SELECT Группа, Avg( возраст ) FROM Студенты WHERE Факультет = ‘ МПиТК ’ GROUP BY Группа HAVING Count(*)>25 ;

Изображение слайда
47

Слайд 47: SQL: оператор выборки SELECT : запрос к нескольким таблицам

SELECT * FROM Студенты С, Оценки О Номер Фамилия Имя Группа Номер Предмет Семестр Оценка 111 Иванов Иван МП-11 111 ОМА 1 3 111 Иванов Иван МП-11 111 ОФ 1 3 111 Иванов Иван МП-11 112 ОФ 1 4 112 Сидоров Сидор МП-11 111 ОМА 1 3 112 Сидоров Сидор МП-11 111 ОФ 1 3 112 Сидоров Сидор МП-11 112 ОФ 1 4 113 Петров Петр МП-12 111 ОМА 1 3 113 Петров Петр МП-12 111 ОФ 1 3 113 Петров Петр МП-12 112 ОФ 1 4 Номер Предмет Семестр Оценка 111 ОМА 1 3 111 ОФ 1 3 112 ОФ 1 4 Номер Фамилия Имя Группа 111 Иванов Иван МП-11 112 Сидоров Сидор МП-11 113 Петров Петр МП-12 WHERE С.Номер=О.Номер

Изображение слайда
48

Слайд 48: SQL: оператор выборки SELECT : запрос к нескольким таблицам

SELECT * FROM Студенты С, Оценки О WHERE С.Номер = О.Номер ; SELECT * FROM Студенты С Inner Join Оценки О On С.Номер = О.Номер ; SELECT * FROM Студенты С Left Outer Join Оценки О On С.Номер = О.Номер ; Номер Фамилия Имя Группа Номер Предмет Семестр Оценка 111 Иванов Иван МП-11 111 ОМА 1 3 111 Иванов Иван МП-11 111 ОФ 1 3 112 Сидоров Сидор МП-11 112 ОФ 1 4 113 Петров Петр МП-12 NULL NULL NULL NULL SELECT * FROM Студенты С Right Outer Join Оценки О On С.Номер = О.Номер ; SELECT * FROM Студенты С Full Outer Join Оценки О On С.Номер = О.Номер ;

Изображение слайда
49

Слайд 49: SQL: оператор выборки SELECT

Номер Имя Старший_номер 1 А 0 2 Б 1 3 В 1 4 Г 1 5 Д 2 6 Е 2 Б А В А Г А Д Б Е Б SELECT Т1.Имя, Т2.Имя FROM Таблица Т1 Inner Join Таблица Т2 On Т2.Номер = Т1.Старший_номер;

Изображение слайда
50

Слайд 50: SQL: оператор выборки SELECT : некоррелированные подзапросы

SELECT Фамилия, Имя, ( SELECT Count(*) FROM Студенты) FROM Студенты WHERE Группа = ‘ МП-21 ’ ; SELECT Фамилия, Имя, Оценка FROM Студенты С Left Join ( SELECT * FROM Оценки WHERE Предмет = ‘ ОМА ’ ) О On С.Номер = О.Номер WHERE Группа = ‘ МП-21 ’ ; SELECT Фамилия, Имя FROM Студенты WHERE Дата_рождения = ( SELECT Min ( Дата_рождения ) FROM Студенты); SELECT Фамилия, Имя FROM Студенты WHERE Номер In ( SELECT Номер FROM Оценки WHERE Предмет = ‘ ОМА ’ And Оценка = 5); SELECT Фамилия, Имя, СБ FROM Студенты С Left Join ( SELECT Номер, Avg (Оценка ) As СБ FROM Оценки GROUP BY Номер) О On С.Номер = О.Номер WHERE Группа = ‘ МП-21 ’ ;

Изображение слайда
51

Слайд 51: SQL: оператор выборки SELECT : коррелированные подзапросы

SELECT Фамилия, Имя, ( SELECT Count(*) FROM Студенты WHERE Группа = С.Группа) FROM Студенты С WHERE Группа = ‘ МП-21 ’ ; SELECT Номер, Предмет, Оценка FROM Оценки О WHERE Дата = ( SELECT Max ( Дата ) FROM Оценки WHERE Номер = О.Номер And Предмет = О.Предмет) Номер Предмет Дата Оценка 111 ОМА 05.01.10 2 111 ОМА 20.01.10 2 111 ОМА 07.02.10 3 SELECT * FROM Оценки О WHERE EXISTS ( SELECT * FROM Оценки WHERE Дата < О.Дата And Номер = О.Номер And Предмет = О.Предмет)

Изображение слайда
52

Слайд 52: SQL: оператор выборки SELECT

Объединение: SELECT Фамилия, Имя, Отчество FROM Студенты UNION ALL SELECT Фамилия, Имя, Отчество FROM Сотрудники; Пересечение: SELECT Фамилия, Имя, Отчество FROM Студенты INTERSECT SELECT Фамилия, Имя, Отчество FROM Сотрудники; Исключение: SELECT Фамилия, Имя, Отчество FROM Студенты EXCEPT SELECT Фамилия, Имя, Отчество FROM Сотрудники;

Изображение слайда
53

Слайд 53: SQL: операторы INSERT, UPDATE

INSERT INTO Table_1 (ID, Ф, И, О ) VALUES (999999, ‘ Иванов ’, ‘ Иван ’, ‘ Иванович ’) ; INSERT INTO Table_1 (ID, Ф, И, О ) SELECT Номер, Фамилия, Имя, Отчество FROM Студенты WHERE Группа = ‘ МП-21 ’ ; UPDATE Table_1 SET Ф= ‘ Петров ’ WHERE Ф= ‘ Иванов ’; UPDATE Table_1 SET Ф= ‘ Петров ’ FROM Table_1 T inner Join Студенты С On T.ID = С.Номер WHERE Группа = ‘ МП-21 ’;

Изображение слайда
54

Слайд 54: SQL: операторы DELETE, TRUNCATE

DELETE FROM Студенты; DELETE FROM Студенты WHERE Номер In (SELECT Номер FROM Оценки WHERE Оценка = 2 ) ; DELETE FROM Студенты WHERE Группа = ‘ МП-21 ’; TRUNCATE TABLE Студенты;

Изображение слайда
55

Слайд 55: Объекты БД: представления

Представление – именованная динамически поддерживаемая сервером выборка из одной или нескольких таблиц (виртуальная таблица) : CREATE VIEW MP AS SELECT * FROM Студенты WHERE Факультет = ‘ МПиТК ’; SELECT * FROM MP; Актуальные данные. Простой доступ к сложным данным. Способ обеспечения безопасности доступа и скрытия структуры. CREATE VIEW M_FM AS SELECT Пол, count(*) FROM Студенты GROUP BY Пол ;

Изображение слайда
56

Слайд 56: Объекты БД: процедуры и функции

Функция: CREATE Function Avg_Mark @Num char(10) AS RETURN ( SELECT Avg( Оценка ) FROM Оценки WHERE Номер = @Num ); SELECT Avg_mark (‘999999’); Процедура: CREATE Procedure Dep_List @Dep char(10) AS SELECT * FROM Студенты WHERE Факультет = @Dep; EXECUTE Dep_List ‘ МПиТК ’;

Изображение слайда
57

Слайд 57: Объекты БД: триггеры

Триггер – процедура, автоматически выполняемая при наступлении заданного события. For, Instead Of. CREATE TRIGGER Stud_Status ON Оценки FOR INSERT, UPDATE AS IF ( SELECT Оценка FROM Inserted ) = 2 THEN INSERT INTO Двоечники (Номер) SELECT Номер FROM inserted; CREATE TRIGGER spec_trigg ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT ‘ Не надо этого делать!!! ’ ROLLBACK;

Изображение слайда
58

Слайд 58: Транзакции

Транзакция – набор операций (изменений), который должная быть выполнен полностью или не выполнен совсем (единый логический блок). Механизм транзакций – основа обеспечения целостности БД. Свойства транзакции ( ACID ): Atomicity – атомарность, Consistency – согласованность, Isolation – изолированность, Durability – устойчивость.

Изображение слайда
59

Слайд 59: Проблемы параллельной обработки

SELECT Money FROM Bank WHERE Account = 565488; 1 000 INSERT INTO Pays VALUES (800); UPDATE Bank SET Money = 200 WHERE Account = 565488; SELECT Money FROM Bank WHERE Account = 565488; 1 000 INSERT INTO Pays VALUES (500); UPDATE Bank SET Money = 500 WHERE Account = 565488;

Изображение слайда
60

Слайд 60: Транзакции

Явные; Неявные. BEGIN TRANSACTION INSERT… UPDATE… … COMMIT / ROLLBACK BEGIN TRANSACTION INSERT… SAVE TRANSACTION T1 UPDATE… … ROLLBACK T1

Изображение слайда
61

Слайд 61: Уровни изоляции транзакций

Serializable – нельзя обращаться к данным, обрабатываемым другой транзакцией. Repeatable Read – нельзя обращаться к обновленным или удаленным данным, но можно к добавленным. Read Committed – можно обращаться к зафиксированным данным. Read Uncommitted – можно обращаться к любым обновленным и не зафиксированным данным. Snapshot – каждая транзакция работает со своей версией данных. SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE }

Изображение слайда
62

Слайд 62: Уровни изоляции транзакций

Dirty read Nonrepeatable read Phantom Serializable Repeatable Read Read Committed Read Uncommitted Snapshot

Изображение слайда
63

Слайд 63: Блокировки

Shared ( совмещаемая ) Update ( обновления ) Exclusive ( монопольная ) Intent ( намерения ) Schema ( схемы ) Bulk Update ( массового обновления ) Key-Range ( диапазона ключей )

Изображение слайда
64

Последний слайд презентации: Базы данных (часть 1): Блокировки

Shared (S) Операции чтения. Не совместима с X- блокировками. При Repeatable Read и выше удерживается все время выполнения транзакции. Exclusive (X) Модификация данных. Не совместима с другими блокировками. Update (U) Ожидается повышение от S -блокировки до X -блокировки. Может получить только одна транзакция. Intent (IS, IX, SIX) Повышение производительности и эффективности. Блокировка на объект высокого уровня (таблицу) перед установкой X / S -блокировки на объект низкого уровня (страницу). Schema (Sch-M, Sch-S) Блокирует все операции при модификации схемы ( Sch - M ) и компиляции или выполнении запросов ( Sch - S ) Bulk Update (BU) Массовая вставка. Запрещает доступ к таблицам другим процессам. Key - range Защита диапазона строк от фантомных вставок и удалений. Только на уровне SERIALIZABLE.

Изображение слайда