Основы SQL. Соединения и теоретико-множественные операции над отношениями

Содержание

Слайд 2

ОСНОВНЫЕ ОПЕРАЦИИ НАД ОТНОШЕНИЯМИ объединение, пересечение, разность, расширенное декартово произведение отношений,

ОСНОВНЫЕ ОПЕРАЦИИ НАД ОТНОШЕНИЯМИ

объединение,
пересечение,
разность,
расширенное декартово произведение отношений,
а также специальные

операции над отношениями:
выборка,
проекция
соединение
Слайд 3

ДЛЯ ИЛЛЮСТРАЦИИ ТЕОРЕТИКО-МНОЖЕСТВЕННЫХ ОПЕРАЦИЙ НАД ОТНОШЕНИЯМИ ВВЕДЕМ АБСТРАКТНЫЕ ОТНОШЕНИЯ (ТАБЛИЦЫ) С НЕКОТОРЫМИ АТРИБУТАМИ (ПОЛЯМИ).

ДЛЯ ИЛЛЮСТРАЦИИ ТЕОРЕТИКО-МНОЖЕСТВЕННЫХ ОПЕРАЦИЙ НАД ОТНОШЕНИЯМИ ВВЕДЕМ АБСТРАКТНЫЕ ОТНОШЕНИЯ (ТАБЛИЦЫ) С

НЕКОТОРЫМИ АТРИБУТАМИ (ПОЛЯМИ).
Слайд 4

ОПЕРАЦИЯ ВЫБОРКИ Операция выборки - построение горизонтального подмножества, т.е. подмножества кортежей,

ОПЕРАЦИЯ ВЫБОРКИ

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

заданными свойствами.
Операция выборки работает с одним отношением R и определяет результирующее отношение, которое содержит только те кортежи (строки) отношения R, которые удовлетворяют заданному условию F (предикату).
Пример операции выборки
SELECT a1, a2
FROM R
WHERE a2=1
Слайд 5

ОПЕРАЦИЯ ПРОЕКЦИИ Операция проекции - построение вертикального подмножества отношения, т.е. подмножества

ОПЕРАЦИЯ ПРОЕКЦИИ

Операция проекции - построение вертикального подмножества отношения, т.е. подмножества кортежей,

получаемого выбором одних и исключением других атрибутов.
ПРИМЕР операции проекции:
SELECT b2
FROM S
Слайд 6

ДЕКАРТОВО ПРОИЗВЕДЕНИЕ Декартово произведение RxS двух отношений (двух таблиц) определяет новое

ДЕКАРТОВО ПРОИЗВЕДЕНИЕ

Декартово произведение RxS двух отношений (двух таблиц) определяет новое отношение

- результат конкатенации (т.е. сцепления) каждого кортежа (каждой записи) из отношения R с каждым кортежем (каждой записью) из отношения S.
ПРИМЕР декартового произведения
SELECT R.a1, R.a2, S.b1, S.b2
FROM R, S
Слайд 7

ДЕКАРТОВО ПРОИЗВЕДЕНИЕ

ДЕКАРТОВО ПРОИЗВЕДЕНИЕ

Слайд 8

Пользователей интересует лишь некоторая часть всех комбинаций записей в декартовом произведении,

Пользователей интересует лишь некоторая часть всех комбинаций записей в декартовом произведении,

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

ОПЕРАЦИЯ СОЕДИНЕНИЯ ПО ДВУМ ОТНОШЕНИЯМ Соединение - это процесс, когда две

ОПЕРАЦИЯ СОЕДИНЕНИЯ ПО ДВУМ ОТНОШЕНИЯМ

Соединение - это процесс, когда две или

более таблицы объединяются в одну.
В языке SQL для задания типа соединения таблиц в логический набор записей, из которого будет выбираться необходимая информация, используется операция JOIN в предложении FROM.
Формат операции:
FROM имя_таблицы_1 {INNER | LEFT | RIGHT}
JOIN имя_таблицы_2
ON условие_соединения
Слайд 10

СУЩЕСТВУЮТ РАЗЛИЧНЫЕ ТИПЫ ОПЕРАЦИЙ СОЕДИНЕНИЯ:

СУЩЕСТВУЮТ РАЗЛИЧНЫЕ ТИПЫ ОПЕРАЦИЙ СОЕДИНЕНИЯ:

Слайд 11

ТЕТА-СОЕДИНЕНИЯ Операция тета-соединения в языке SQL называется INNER JOIN (внутреннее соединение)

ТЕТА-СОЕДИНЕНИЯ

Операция тета-соединения в языке SQL называется INNER JOIN (внутреннее соединение) и

используется, когда нужно включить все строки из обеих таблиц, удовлетворяющие условию объединения.
В этом случае строится декартово произведение строк первой и второй таблиц, а из полученного набора данных отбираются записи, удовлетворяющие условиям объединения.
Слайд 12

ОПЕРАЦИЯ ТЕТА-СОЕДИНЕНИЯ SELECT R.a1, R.a2, S.b1, S.b2 FROM R INNER JOIN S ON R.a2=S.b1

ОПЕРАЦИЯ ТЕТА-СОЕДИНЕНИЯ
SELECT R.a1, R.a2, S.b1, S.b2
FROM R INNER JOIN S ON

R.a2=S.b1
Слайд 13

ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ Естественным соединением называется соединение по эквивалентности двух отношений R

ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ

Естественным соединением называется соединение по эквивалентности двух отношений R и

S, выполненное по всем общим атрибутам, из результатов которого исключается по одному экземпляру каждого общего атрибута.
SELECT R.a1, S.b1, S.b2
FROM R INNER JOIN S ON R.a2=S.b1
Слайд 14

ВЫВЕСТИ ИНФОРМАЦИЮ О ПРОДАННЫХ ТОВАРАХ. SELECT * FROM Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара

ВЫВЕСТИ ИНФОРМАЦИЮ О ПРОДАННЫХ ТОВАРАХ.

SELECT *
FROM Товар INNER JOIN Сделка

ON Товар.КодТовара=Сделка.КодТовара
Слайд 15

ВНЕШНЕЕ СОЕДИНЕНИЕ Внешнее соединение похоже на внутреннее, но в результирующий набор

ВНЕШНЕЕ СОЕДИНЕНИЕ

Внешнее соединение похоже на внутреннее, но в результирующий набор данных

включаются также записи ведущей таблицы соединения, которые объединяются с пустым множеством записей другой таблицы.
Слайд 16

ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Левым внешним соединением называется соединение, при котором кортежи

ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

Левым внешним соединением называется соединение, при котором кортежи отношения

R, не имеющие совпадающих значений в общих столбцах отношения S, также включаются в результирующее отношение.
SELECT R.a1, R.a2, S.b1, S.b2
FROM R LEFT JOIN S
ON R.a2=S.b1
Слайд 17

Существует и правое внешнее соединение, называемое так потому, что в результирующем

Существует и правое внешнее соединение, называемое так потому, что в результирующем

отношении содержатся все кортежи правого отношения.
Кроме того, имеется и полное внешнее соединение, в его результирующее отношение помещаются все кортежи из обоих отношений, а для обозначения несовпадающих значений кортежей в нем используются определители NULL.
SELECT R.a1, R.a2, S.b1, S.b2
FROM R RIGHT JOIN S
ON R.a2=S.b1
Слайд 18

ВЫВЕСТИ ИНФОРМАЦИЮ О ВСЕХ ТОВАРАХ. ДЛЯ ПРОДАННЫХ ТОВАРОВ БУДЕТ УКАЗАНА ДАТА

ВЫВЕСТИ ИНФОРМАЦИЮ О ВСЕХ ТОВАРАХ. ДЛЯ ПРОДАННЫХ ТОВАРОВ БУДЕТ УКАЗАНА ДАТА

СДЕЛКИ И КОЛИЧЕСТВО. ДЛЯ НЕПРОДАННЫХ ЭТИ ПОЛЯ ОСТАНУТСЯ ПУСТЫМИ.
SELECT Товар.*, Сделка.*
FROM Товар LEFT JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара;
Слайд 19

ПОЛУСОЕДИНЕНИЕ Операция полусоединения определяет отношение, содержащее те кортежи отношения R, которые

ПОЛУСОЕДИНЕНИЕ

Операция полусоединения определяет отношение, содержащее те кортежи отношения R, которые входят

в соединение отношений R и S.
SELECT R.a1, R.a2
FROM R, S
WHERE R.a2=S.b1
или
SELECT R.a1, R.a2
FROM R INNER JOIN S ON R.a2=S.b1
Слайд 20

ОПЕРАЦИЯ ОБЪЕДИНЕНИЯ Объединением двух таблиц R и S является таблица, содержащая

ОПЕРАЦИЯ ОБЪЕДИНЕНИЯ

Объединением двух таблиц R и S является таблица, содержащая все

строки, которые имеются в первой таблице R, во второй таблице S или в обеих таблицах сразу.
SELECT R.a1, R.a2
FROM R
UNION
SELECT S.b2, S.b1
FROM S
Слайд 21

ОПЕРАЦИЯ ПЕРЕСЕЧЕНИЯ Пересечением двух таблиц R и S является таблица, содержащая

ОПЕРАЦИЯ ПЕРЕСЕЧЕНИЯ

Пересечением двух таблиц R и S является таблица, содержащая все

строки, присутствующие в обеих исходных таблицах одновременно.
SELECT R.a1, R.a2
FROM R,S
WHERE R.a1=S.b1 AND R.a2=S.b2
Слайд 22

ОПЕРАЦИЯ РАЗНОСТИ Разностью двух таблиц R и S является таблица, содержащая

ОПЕРАЦИЯ РАЗНОСТИ

Разностью двух таблиц R и S является таблица, содержащая все

строки, которые присутствуют в таблице R, но отсутствуют в таблице S.
SELECT R.a1, R.a2
FROM R
WHERE NOT EXISTS
(SELECT S.b1,S.b2
FROM S
WHERE S.b1=R.a2 AND S.b2=R.a1)
Слайд 23

ПОСТРОЕНИЕ ВЫЧИСЛЯЕМЫХ ПОЛЕЙ

ПОСТРОЕНИЕ ВЫЧИСЛЯЕМЫХ ПОЛЕЙ

Слайд 24

Стандарты SQL позволяют явным образом задавать имена столбцов результирующей таблицы, для чего применяется фраза AS.

Стандарты SQL позволяют явным образом задавать имена столбцов результирующей таблицы, для

чего применяется фраза AS.
Слайд 25

РАССЧИТАТЬ ОБЩУЮ СТОИМОСТЬ ДЛЯ КАЖДОЙ СДЕЛКИ Этот запрос использует расчет результирующих

РАССЧИТАТЬ ОБЩУЮ СТОИМОСТЬ ДЛЯ КАЖДОЙ СДЕЛКИ

Этот запрос использует расчет результирующих

столбцов на основе арифметических выражений.
SELECT Товар.Название, Товар.Цена,
Сделка.Количество,
Товар.Цена*Сделка.Количество AS Стоимость
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара
Слайд 26

ПОЛУЧИТЬ СПИСОК ФИРМ С УКАЗАНИЕМ ФАМИЛИИ И ИНИЦИАЛОВ КЛИЕНТОВ. SELECT Фирма,

ПОЛУЧИТЬ СПИСОК ФИРМ С УКАЗАНИЕМ ФАМИЛИИ И ИНИЦИАЛОВ КЛИЕНТОВ.

SELECT Фирма, Фамилия

+" "+
Left(Имя,1)+"."+Left(Отчество,1)+"." AS ФИО
FROM Клиент
Слайд 27

ПОЛУЧИТЬ СПИСОК ТОВАРОВ С УКАЗАНИЕМ ГОДА И МЕСЯЦА ПРОДАЖИ. SELECT Товар.Название,

ПОЛУЧИТЬ СПИСОК ТОВАРОВ С УКАЗАНИЕМ ГОДА И МЕСЯЦА ПРОДАЖИ.

SELECT Товар.Название, Year(Сделка.Дата)


AS Год, Month(Сделка.Дата) AS Месяц
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара
Слайд 28

ИСПОЛЬЗОВАНИЕ ИТОГОВЫХ ФУНКЦИЙ С помощью итоговых (агрегатных) функций в рамках SQL-запроса

ИСПОЛЬЗОВАНИЕ ИТОГОВЫХ ФУНКЦИЙ

С помощью итоговых (агрегатных) функций в рамках SQL-запроса можно

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

ПОЛЬЗОВАТЕЛЮ ДОСТУПНЫ СЛЕДУЮЩИЕ ОСНОВНЫЕ ИТОГОВЫЕ ФУНКЦИИ: Count (Выражение) - определяет количество

ПОЛЬЗОВАТЕЛЮ ДОСТУПНЫ СЛЕДУЮЩИЕ ОСНОВНЫЕ ИТОГОВЫЕ ФУНКЦИИ:

Count (Выражение) - определяет количество записей

в выходном наборе SQL-запроса;
Min/Max (Выражение) - определяют наименьшее и наибольшее из множества значений;
Avg (Выражение) - эта функция позволяет рассчитать среднее значение множества значений.
Sum (Выражение) - вычисляет сумму множества значений, содержащихся в определенном поле отобранных запросом записей.
Слайд 30

Определить первое по алфавиту название товара. SELECT Min(Товар.Название) AS Min_Название FROM

Определить первое по алфавиту название товара.
SELECT Min(Товар.Название) AS Min_Название
FROM Товар
Определить количество

сделок.
SELECT Count(*) AS Количество_сделок
FROM Сделка
Определить суммарное количество проданного товара.
SELECT Sum(Сделка.Количество)
AS Количество_товара
FROM Сделка
Слайд 31

Определить среднюю цену проданного товара. SELECT Avg(Товар.Цена) AS Avg_Цена FROM Товар

Определить среднюю цену проданного товара.
SELECT Avg(Товар.Цена) AS Avg_Цена
FROM Товар INNER JOIN

Сделка
ON Товар.КодТовара=Сделка.КодТовара;
Подсчитать общую стоимость проданных товаров.
SELECT Sum(Товар.Цена*Сделка.Количество)
AS Стоимость
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара
Слайд 32

ВЫЧИСЛИТЬ СРЕДНИЙ ОБЪЕМ ПОКУПОК, СОВЕРШЕННЫХ КАЖДЫМ ПОКУПАТЕЛЕМ. SELECT Клиент.Фамилия, Avg(Сделка.Количество) AS

ВЫЧИСЛИТЬ СРЕДНИЙ ОБЪЕМ ПОКУПОК, СОВЕРШЕННЫХ КАЖДЫМ ПОКУПАТЕЛЕМ.

SELECT Клиент.Фамилия, Avg(Сделка.Количество)
AS

Среднее_количество
FROM Клиент INNER JOIN Сделка
ON Клиент.КодКлиента=Сделка.КодКлиента
GROUP BY Клиент.Фамилия
Слайд 33

ОПРЕДЕЛИТЬ, НА КАКУЮ СУММУ БЫЛ ПРОДАН ТОВАР КАЖДОГО НАИМЕНОВАНИЯ SELECT Товар.Название,

ОПРЕДЕЛИТЬ, НА КАКУЮ СУММУ БЫЛ ПРОДАН ТОВАР КАЖДОГО НАИМЕНОВАНИЯ
SELECT Товар.Название,

Sum(Товар.Цена*Сделка.Количество)
AS Стоимость
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара
GROUP BY Товар.Название
Слайд 34

ПОДСЧИТАТЬ КОЛИЧЕСТВО СДЕЛОК, ОСУЩЕСТВЛЕННЫХ КАЖДОЙ ФИРМОЙ. SELECT Клиент.Фирма, Count(Сделка.КодСделки) AS Количество_сделок

ПОДСЧИТАТЬ КОЛИЧЕСТВО СДЕЛОК, ОСУЩЕСТВЛЕННЫХ КАЖДОЙ ФИРМОЙ.

SELECT Клиент.Фирма, Count(Сделка.КодСделки)
AS Количество_сделок
FROM

Клиент INNER JOIN Сделка
ON Клиент.КодКлиента=Сделка.КодКлиента
GROUP BY Клиент.Фирма
Слайд 35

ПОДСЧИТАТЬ ОБЩЕЕ КОЛИЧЕСТВО КУПЛЕННОГО ДЛЯ КАЖДОЙ ФИРМЫ ТОВАРА И ЕГО СТОИМОСТЬ

ПОДСЧИТАТЬ ОБЩЕЕ КОЛИЧЕСТВО КУПЛЕННОГО ДЛЯ КАЖДОЙ ФИРМЫ ТОВАРА И ЕГО СТОИМОСТЬ

SELECT

Клиент.Фирма, Sum(Сделка.Количество)
AS Общее_Количество,
Sum(Товар.Цена*Сделка.Количество)
AS Стоимость
FROM Товар INNER JOIN
(Клиент INNER JOIN Сделка ON Клиент.КодКлиента=Сделка.КодКлиента)
ON Товар.КодТовара=Сделка.КодТовара
GROUP BY Клиент.Фирма
Слайд 36

ОПРЕДЕЛИТЬ СУММАРНУЮ СТОИМОСТЬ КАЖДОГО ТОВАРА ЗА КАЖДЫЙ МЕСЯЦ SELECT Товар.Название, Month(Сделка.Дата)

ОПРЕДЕЛИТЬ СУММАРНУЮ СТОИМОСТЬ КАЖДОГО ТОВАРА ЗА КАЖДЫЙ МЕСЯЦ

SELECT Товар.Название, Month(Сделка.Дата)

AS Месяц,
Sum(Товар.Цена*Сделка.Количество)
AS Стоимость
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара
GROUP BY Товар.Название, Month(Сделка.Дата)
Слайд 37

ОПРЕДЕЛИТЬ СУММАРНУЮ СТОИМОСТЬ КАЖДОГО ТОВАРА ПЕРВОГО СОРТА ЗА КАЖДЫЙ МЕСЯЦ. SELECT

ОПРЕДЕЛИТЬ СУММАРНУЮ СТОИМОСТЬ КАЖДОГО ТОВАРА ПЕРВОГО СОРТА ЗА КАЖДЫЙ МЕСЯЦ.

SELECT Товар.Название,

Month(Сделка.Дата)
AS Месяц,
Sum(Товар.Цена*Сделка.Количество)
AS Стоимость
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара=Сделка.КодТовара
WHERE Товар.Сорт="Первый"
GROUP BY Товар.Название, Month(Сделка.Дата)
Слайд 38

ПОНЯТИЕ ПОДЗАПРОСА Подзапрос – это инструмент создания временной таблицы, содержимое которой

ПОНЯТИЕ ПОДЗАПРОСА

Подзапрос – это инструмент создания временной таблицы, содержимое которой извлекается

и обрабатывается внешним оператором. Текст подзапроса должен быть заключен в скобки.
Слайд 39

ОПРЕДЕЛИТЬ ДАТУ ПРОДАЖИ МАКСИМАЛЬНОЙ ПАРТИИ ТОВАРА. SELECT Дата, Количество FROM Сделка WHERE Количество=(SELECT Max(Количество) FROM Сделка)

ОПРЕДЕЛИТЬ ДАТУ ПРОДАЖИ МАКСИМАЛЬНОЙ ПАРТИИ ТОВАРА.

SELECT Дата, Количество
FROM Сделка
WHERE Количество=(SELECT Max(Количество)

FROM Сделка)
Слайд 40

ИСПОЛЬЗОВАНИЕ ОПЕРАЦИЙ IN И NOT IN Оператор IN используется для сравнения

ИСПОЛЬЗОВАНИЕ ОПЕРАЦИЙ IN И NOT IN

Оператор IN используется для сравнения некоторого

значения со списком значений, при этом проверяется, входит ли значение в предоставленный список или сравниваемое значение не является элементом представленного списка.
Определить список товаров, которые имеются на складе.
SELECT Название
FROM Товар
WHERE КодТовара In
(SELECT КодТовара FROM Склад)
Слайд 41

ОПРЕДЕЛИТЬ СПИСОК ОТСУТСТВУЮЩИХ НА СКЛАДЕ ТОВАРОВ SELECT Название FROM Товар WHERE

ОПРЕДЕЛИТЬ СПИСОК ОТСУТСТВУЮЩИХ НА СКЛАДЕ ТОВАРОВ

SELECT Название
FROM Товар
WHERE КодТовара Not In


(SELECT КодТовара FROM Склад)
Слайд 42

ЗАПРОСЫ МОДИФИКАЦИИ ДАННЫХ

ЗАПРОСЫ МОДИФИКАЦИИ ДАННЫХ

Слайд 43

СУЩЕСТВУЕТ ТРИ ВИДА ЗАПРОСОВ ДЕЙСТВИЯ: INSERT INTO – запрос добавления; DELETE

СУЩЕСТВУЕТ ТРИ ВИДА ЗАПРОСОВ ДЕЙСТВИЯ:

INSERT INTO – запрос добавления;
DELETE – запрос

удаления;
UPDATE – запрос обновления.
Слайд 44

ЗАПРОС ДОБАВЛЕНИЯ Оператор INSERT применяется для добавления записей в таблицу. Формат

ЗАПРОС ДОБАВЛЕНИЯ

Оператор INSERT применяется для добавления записей в таблицу.
Формат оператора:


<оператор_вставки>::=INSERT INTO <имя_таблицы>
[(имя_столбца [,...n])]
{VALUES (значение[,...n])|
}
Слайд 45

ДОБАВИТЬ В ТАБЛИЦУ ТОВАР НОВУЮ ЗАПИСЬ. INSERT INTO Товар (Название, Тип,

ДОБАВИТЬ В ТАБЛИЦУ ТОВАР НОВУЮ ЗАПИСЬ.

INSERT INTO Товар (Название, Тип, Цена)


VALUES(" Славянский ", " шоколад ", 12)
количество элементов в обоих списках должно быть одинаковым;
должно существовать прямое соответствие между позицией одного и того же элемента в обоих списках, поэтому первый элемент списка значений должен относиться к первому столбцу в списке столбцов, второй – ко второму столбцу и т.д.
типы данных элементов в списке значений должны быть совместимы с типами данных соответствующих столбцов таблицы.
Слайд 46

Если столбцы таблицы ТОВАР указаны в полном составе и в том

Если столбцы таблицы ТОВАР указаны в полном составе и в том

порядке, в котором они перечислены при создании таблицы ТОВАР, оператор можно упростить.
INSERT INTO Товар
VALUES (" Славянский ", "шоколад ", 12)
Слайд 47

Поскольку оператор SELECT в общем случае возвращает множество записей, то оператор

Поскольку оператор SELECT в общем случае возвращает множество записей, то оператор

INSERT в такой форме приводит к добавлению в таблицу аналогичного числа новых записей.
Слайд 48

ДОБАВИТЬ В ИТОГОВУЮ ТАБЛИЦУ СВЕДЕНИЯ ОБ ОБЩЕЙ СУММЕ ЕЖЕМЕСЯЧНЫХ ПРОДАЖ КАЖДОГО

ДОБАВИТЬ В ИТОГОВУЮ ТАБЛИЦУ СВЕДЕНИЯ ОБ ОБЩЕЙ СУММЕ ЕЖЕМЕСЯЧНЫХ ПРОДАЖ КАЖДОГО

НАИМЕНОВАНИЯ ТОВАРА.

INSERT INTO Итог
(Название, Месяц, Стоимость )
SELECT Товар.Название, Month(Сделка.Дата)
AS Месяц, Sum(Товар.Цена*Сделка.Количество)
AS Стоимость
FROM Товар INNER JOIN Сделка
ON Товар.КодТовара= Сделка.КодТовара
GROUP BY Товар.Название, Month(Сделка.Дата)

Слайд 49

ЗАПРОС УДАЛЕНИЯ Оператор DELETE предназначен для удаления группы записей из таблицы.

ЗАПРОС УДАЛЕНИЯ

Оператор DELETE предназначен для удаления группы записей из таблицы.
Формат оператора:
<оператор_удаления>

::=DELETE
FROM <имя_таблицы>[WHERE <условие_отбора>]
Слайд 50

УДАЛИТЬ ВСЕ ПРОШЛОГОДНИЕ СДЕЛКИ. DELETE FROM Сделка WHERE Year(Сделка.Дата)=Year(GETDATE())-1

УДАЛИТЬ ВСЕ ПРОШЛОГОДНИЕ СДЕЛКИ.

DELETE
FROM Сделка
WHERE Year(Сделка.Дата)=Year(GETDATE())-1

Слайд 51

ЗАПРОС ОБНОВЛЕНИЯ Оператор UPDATE применяется для изменения значений в группе записей

ЗАПРОС ОБНОВЛЕНИЯ

Оператор UPDATE применяется для изменения значений в группе записей или

в одной записи указанной таблицы.
Формат оператора:
<оператор_изменения> ::=
UPDATE имя_таблицы SET имя_столбца=
<выражение>[,...n]
[WHERE <условие_отбора>]
Слайд 52

ДЛЯ ТОВАРОВ ПЕРВОГО СОРТА УСТАНОВИТЬ ЦЕНУ В ЗНАЧЕНИЕ 140 И ОСТАТОК

ДЛЯ ТОВАРОВ ПЕРВОГО СОРТА УСТАНОВИТЬ ЦЕНУ В ЗНАЧЕНИЕ 140 И ОСТАТОК

– В ЗНАЧЕНИЕ 20 ЕДИНИЦ.

UPDATE Товар SET
Товар.Цена=140, Товар.Остаток=20
WHERE Товар.Сорт=" Первый "

Слайд 53

Увеличить цену товаров первого сорта на 25%. UPDATE Товар SET Товар.Цена=Товар.Цена*1.25

Увеличить цену товаров первого сорта на 25%.
UPDATE Товар SET Товар.Цена=Товар.Цена*1.25
WHERE Товар.Сорт="

Первый “
В сделке с максимальным количеством товара увеличить число товаров на 10%.
UPDATE Сделка SET
Сделка.Количество=Сделка.Количество*1.1
WHERE Сделка.Количество=
(SELECT Max(Сделка.Количество) FROM Сделка)
Слайд 54

ВВЕДЕНИЕ В ПОНЯТИЕ "ЦЕЛОСТНОСТЬ ДАННЫХ"

ВВЕДЕНИЕ В ПОНЯТИЕ "ЦЕЛОСТНОСТЬ ДАННЫХ"

Слайд 55

INSERT, DELETE И UPDATE Выполнение операторов модификации данных в таблицах базы

INSERT, DELETE И UPDATE

Выполнение операторов модификации данных в таблицах базы данных

INSERT, DELETE и UPDATE может привести к нарушению целостности данных и их корректности, т.е. к потере их достоверности и непротиворечивости.
Слайд 56

ОБЯЗАТЕЛЬНЫЕ ДАННЫЕ Некоторые поля всегда должны содержать одно из допустимых значений,

ОБЯЗАТЕЛЬНЫЕ ДАННЫЕ

Некоторые поля всегда должны содержать одно из допустимых значений, другими

словами, эти поля не могут иметь пустого значения.
Слайд 57

ОГРАНИЧЕНИЯ ДЛЯ ДОМЕНОВ ПОЛЕЙ Каждое поле имеет свой домен, представляющий собой набор его допустимых значений.

ОГРАНИЧЕНИЯ ДЛЯ ДОМЕНОВ ПОЛЕЙ

Каждое поле имеет свой домен, представляющий собой набор

его допустимых значений.
Слайд 58

КОРПОРАТИВНЫЕ ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ Существует понятие "корпоративные ограничения целостности" как дополнительные правила

КОРПОРАТИВНЫЕ ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ

Существует понятие "корпоративные ограничения целостности" как дополнительные правила поддержки

целостности данных, определяемые пользователями, принятые на предприятии или администраторами баз данных. Ограничения предприятия называются бизнес-правилами.
Слайд 59

ЦЕЛОСТНОСТЬ СУЩНОСТЕЙ Целостность сущностей определяет, что в базовой таблице ни одно

ЦЕЛОСТНОСТЬ СУЩНОСТЕЙ

Целостность сущностей определяет, что в базовой таблице ни одно поле

первичного ключа не может содержать отсутствующих значений, обозначенных NULL.