Слайд 2SQL (Structured Query Language) — язык структурированных запросов) — универсальный компьютерный язык,
применяемый для создания, модификации и управления данными в реляционных базах
данных.
Слайд 3Реляционная модель данных
Реляционная модель данных была предложена Э.Ф. Коддом.
Эдгар Франк
Кодд (23.08.1923-18.04.2003) — британский учёный, работы которого заложили основы теории
реляционных баз данных.
Слайд 4SQL стандартизирован по международным стандартам.
Современные СУБД содержат в своем составе
SQL, соответствующий одному из стандартов.
Слайд 5SQL включает в себя операторы:
Операторы определения данных
(Data Definition Language, DDL)
Например:
CREATE DATABASE – создать БД;
CREATE TABLE — создать таблицу;
DROP
TABLE — удалить таблицу;
ALTER TABLE — изменить таблицу;
CREATE INDEX — создать индекс;
DROP INDEX — удалить индекс;
и др.
Слайд 6SQL включает в себя операторы:
Операторы манипулирования данными:
(Data Manipulation Language, DML)
DELETE
— удалить строки;
INSERT — вставить строку;
UPDATE — обновить строку.
Слайд 7SQL включает в себя операторы:
Оператор выборки данных:
SELECT — выбрать данные.
Слайд 8SQL включает в себя операторы:
Операторы администрирования данных.
Например:
GRANT — предоставить
права;
REVOKE — лишить прав;
и др.
Слайд 9SQL включает в себя операторы:
Программный SQL.
Например операторы:
PREPARE — подготовить оператор
SQL к динамическому выполнению;
EXECUTE — выполнить оператор SQL, ранее подготовленный
к динамическому выполнению;
и др.
Слайд 10
Необходимо отметить, что в каждой СУБД своя специфика реализации языка.
Это, как правило, касается типов данных, способов задания констант, арифметических
и логических операций и т.д.
Слайд 11Оператор выборки данных SELECT
Общая запись оператора:
SELECT
[ALL
| DISTINCT] [.][AS]
[,[.] [AS]...]
FROM [,[...]
[WHERE <условие/условия отбора>]
[GROUP BY <колонка>[,<колонка>...]]
[HAVING <условие/условия отбора>]
[ORDER BY <колонка>[,<колонка>...]]
Слайд 12Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
SELECT ALL
Тип FROM Товары
SELECT Тип FROM Товары
SELECT Товары.Тип FROM Товары
SELECT Т.Тип
FROM Товары Т
Слайд 13Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
SELECT DISTINCT
Тип FROM Товары
SELECT Тип AS Категория FROM Товары
Слайд 14Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
SELECT Товары.Код_товара,
Товары.Название, Товары.Тип, Товары.Производитель, Товары.Ед_измерения, Товары.Цена, Товары.Количество
FROM Товары
SELECT Код_товара, Название, Тип,
Производитель, Ед_измерения, Цена, Количество
FROM Товары
SELECT * FROM Товары
Слайд 15Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Какова ожидаемая
прибыль от каждого товара.
SELECT Код_товара, Название, Цена*Количество AS Ожидаемая_прибыль
FROM Товары
Слайд 16Оператор выборки данных SELECT
Предложение WHERE – условия на записи/фильтрация записей.
В
предложении WHERE для отбора записей можно использовать операторы, например:
> больше;
меньше;
>= больше или равно;
<= меньше или равно;
<> не равно;
= равно;
AND логическое И;
OR логическое ИЛИ;
NOT реверс значения логического выражения;
IN позволяет выбрать значения из заданного списка;
LIKE для поиска по шаблону;
BETWEEN проверяет, находится ли (или нет) выражение в заданном диапазоне;
IS [NOT] NULL для извлечения строк с нулевым/пустым (или не нулевым/не пустым) значением столбца;
и др.
Если данные операторы возвращают Истину, то записи попадают в таблицу выборку.
Слайд 17Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Выбрать товары
из одежды или бытовой техники
SELECT Код_товара, Название, Тип, Цена
FROM Товары
WHERE
Тип="Одежда" OR Тип="Бытовая техника"
Слайд 18Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Выбрать товары
из одежды или бытовой техники с ценой меньше 1000 рублей.
SELECT
Код_товара, Название, Тип, Цена
FROM Товары
WHERE Тип="Одежда" Or Тип="Бытовая техника" AND Цена<1000
Слайд 19Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Выбрать товары
из одежды или бытовой техники с ценой меньше 1000 рублей.
SELECT
Код_товара, Название, Тип, Цена
FROM Товары
WHERE (Тип="Одежда" Or Тип="Бытовая техника") AND Цена<1000
Слайд 20Оператор выборки данных SELECT
Оператор IN, not IN позволяют выбрать значения
из заданного списка.
IN (, ,...)
Дана таблица
БД товары с содержимым:
Выбрать товары из одежды или бытовой техники с ценой меньше 1000 рублей.
SELECT Код_товара, Название, Тип, Цена
FROM Товары
WHERE Тип IN ("Одежда", "Бытовая техника") AND Цена<1000
Слайд 21Оператор выборки данных SELECT
Оператор LIKE позволяют выбрать значения по шаблону.
LIKE
При этом можно использовать специальные символы.
Например:
символ
% (процент)/ * (звездочка)– означает подстановку произвольной последовательности символов;
символ _ (подчеркивание)/ ? (вопрос) - означает подстановку одного любого символа;
И др.
Слайд 22Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Выбрать товары,
у которых вторая буква «а» в названии.
SELECT Код_товара, Название,
Тип
FROM Товары
WHERE Название Like "_а%”
SELECT Код_товара, Название, Тип
FROM Товары
WHERE Название Like "?а*"
Слайд 23Оператор выборки данных SELECT
Оператор ВETWEEN (NOT BETWEEN) - проверяет, находится
ли (или нет) выражение в заданном диапазоне.
BETWEEN
значение> AND <верхнее значение>.
Слайд 24Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Выбрать товары
с ценой от 1000 до 12000 включительно.
SELECT Код_товара, Название, Тип,
Цена, Количество
FROM Товары
WHERE Цена Between 1000 And 12000
SELECT Код_товара, Название, Тип, Цена, Количество
FROM Товары
WHERE Цена >=1000 And Цена <=12000
Слайд 25Оператор выборки данных SELECT
Оператор IS [NOT] NULL - для извлечения
строк с нулевым/пустым (или не нулевым/не пустым) значением столбца.
Нулевые значения
появляются в том случае, если пользователь вводит данные и не знает, какую информацию нужно вводить в некоторых полях.
В этом случае СУБД автоматически вводит нулевые значения.
Слайд 26Оператор выборки данных SELECT
Нулевые значения приводят к появлению трехзначной логики
в логических выражениях.
Неопределенное значение показано прочерком (–).
Слайд 27Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Выбрать товары
для которых известен тип и не известен производитель.
SELECT Код_товара, Название,
Тип, Производитель
FROM Товары
WHERE (Тип Is Not Null) AND (Производитель Is Null)
Слайд 28Оператор выборки данных SELECT
Агрегирующие функции
Агрегирующая функция рассматривает множество строк таблицы
и выдает только одно значение.
К агрегирующим функциям относят:
SUM([DISTINCT] выражение)
— сумма (различных) выражений.
AVG([DISTINCT] выражение) — средняя величина (различных) значений.
COUNT ([DISTINCT] выражение) — количество (различных) ненулевых значений.
МАХ (выражение) — максимальное значение.
MIN (выражение) — минимальные значение.
Слайд 29Оператор выборки данных SELECT
При использовании агрегирующих функций необходимо учитывать следующее:
их
можно записывать в списке выбора или в предложении HAVING, ORDER
BY;
нельзя применять в предложении WHERE (если нет подзапроса);
перед вычислением значения функции все неопределенные значения аргумента исключаются;
если определено предложение DISTINCT, то повторяющиеся значения аргумента в подсчете значения функции не участвуют;
если аргумент пуст, т.е. содержит неопределенные значения, то функция COUNT всегда возвращает значение 0, а другие агрегирующие функции — неопределенное значение;
функции SUM и AVG работают только с аргументами числовых типов;
функции COUNT, MAX, MIN могут использоваться с аргументами любых типов.
Слайд 30Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Какова общая
ожидаемая прибыль от всех товаров, какова средняя цена среди всех
товаров, сколько всего различных товаров, какова минимальная и максимальная цена среди всех товаров, сколько товаров на складе.
SELECT Sum(Количество*Цена) AS Общая_ожидаемая_прибыль, Avg(Цена) AS Средняя_цена, Min(Цена) AS Минимальная_цена, Max(Цена) AS Максимальная_цена, Count(Код_товара) AS Различных_товаров, Sum(Количество) AS Всего_на_складе
FROM Товары
Слайд 31Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Для бытовой
техники выяснить среднюю цену и сколько всего на складе.
SELECT AVG(Цена)
AS Средняя_цена, Sum(Количество) AS На_складе
FROM Товары
WHERE Тип ="Бытовая техника"
Слайд 32Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Для бытовой
техники выяснить среднюю цену и сколько всего на складе.
SELECT Тип,
AVG(Цена) AS Средняя_цена, Sum(Количество) AS На_складе
FROM Товары
WHERE Тип ="Бытовая техника”
То будет ошибка и СУБД выдаст соответствующее сообщение, например:
Слайд 33Оператор выборки данных SELECT
Группировка данных
Для этого используется предложение
GROUP BY,
которое разделяет таблицу на наборы.
Как правило, в большинстве реализаций
SQL элемент из списка GROUP BY должен присутствовать в списке выбора SELECT.
Данные попадаю в группу, когда у них совпадают значения в указанном для группировки выражении.
Слайд 34Оператор выборки данных SELECT
Группировка данных
Если выполнить предложение GROUP BY без
агрегирующих функций, то оно будет напоминать предложение DISTINCT, т.е. разделять
таблицу на группы и из группы брать одно значение.
Дана таблица БД товары с содержимым:
SELECT Тип FROM Товары
GROUP BY Тип
SELECT Distinct Тип
FROM Товары
Слайд 35Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Для каждого
типа выяснить среднюю цену и сколько всего на складе.
SELECT Тип,
AVG(Цена) AS Средняя_цена, Sum(Количество) AS На_складе
FROM Товары
GROUP BY Тип
Слайд 36Оператор выборки данных SELECT
Группировка данных
Условия, накладываемые на группировки, задаются предложением
НAVING.
Предложение НAVING похоже на предложение WHERE, но НAVING работает не
с отдельными записями таблицы, а с группами.
Слайд 37Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Для бытовой
техники и одежды и их производителей выяснить сколько всего товаров
на складе, минимальную и максимальную цену при условии, что товаров на складе менее или равно 50.
SELECT Тип, Производитель, Min(Цена) AS Минимальная_цена, Max(Цена) AS Максимальная_цена, Sum(Количество) AS На_складе
FROM Товары
WHERE Тип IN ("Бытовая техника","Одежда")
GROUP BY Тип, Производитель
HAVING Sum(Количество)<=50
Слайд 38Оператор выборки данных SELECT
Сортировка результатов запроса
Сортировка результатов запроса производится с
использованием ключевого слова ORDER BY.
ORDER BY [ASC/DESC][,,...] — задает
упорядочение по колонке, колонкам.
Фраза DESC вызывает упорядочение по убыванию значения соответствующей <колонки>.
Фраза ASC специфицирует упорядочение по возрастанию и принимается по умолчанию.
Слайд 39Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Вывести товары,
представив результат отсортированным по типу по алфавиту (по возрастанию).
SELECT *
FROM Товары
ORDER BY Тип
SELECT * FROM Товары
ORDER BY Тип ASC
Слайд 40Оператор выборки данных SELECT
Дана таблица БД товары с содержимым:
Вывести товары,
представив результат отсортированным по типу в обратном порядке алфавита (по
убыванию).
SELECT * FROM Товары
ORDER BY Тип DESC
Слайд 41Выборка из нескольких таблиц
Пусть дана БД со следующей структурой
(IDEF1X):
Слайд 42Выборка из нескольких таблиц
Пусть дана БД со следующей структурой:
Слайд 43Выборка из нескольких таблиц
Выяснить какие продажи оформил официант Петров.
Слайд 44Выборка из нескольких таблиц
Выяснить какие продажи оформил официант Петров.
SELECT Фамилия,
Должность, Номер_продажи, Дата
FROM Сотрудники, Продажи
WHERE Фамилия="Петров" AND Должность="Официант"
Результат:
Слайд 45Выборка из нескольких таблиц
Выяснить какие продажи оформил официант Петров.
SELECT Фамилия,
Должность, Номер_продажи, Дата
FROM Сотрудники, Продажи
WHERE Фамилия="Петров" AND Должность="Официант"
AND Сотрудники.Код_сотрудника=Продажи.Код_сотрудника
Результат:
Слайд 46Выборка из нескольких таблиц
Использование оператора JOIN – оператор связывания таблиц
по условию.
Существуют разные типы связывания.
Внутреннее соединение таблиц (INNER JOIN) —
объединяет записи из двух таблиц, если связующие поля этих таблиц содержат одинаковые значения.
Если же условие не выполняется, то тогда в результирующих набор данных ничего не добавляется.
Синтаксис:
FROM <таблица1> INNER JOIN <таблица2> ON <условие>
Используется когда необходимо получить данные которые есть в обеих таблицах.
Слайд 47Выборка из нескольких таблиц
Выяснить какие продажи оформил официант Петров.
SELECT Фамилия,
Имя, Должность, Номер_продажи, Дата
FROM Сотрудники
INNER JOIN Продажи ON Сотрудники.Код_сотрудника=Продажи.Код_сотрудника
WHERE Фамилия="Петров" AND Должность="Официант"
Результат:
Слайд 48Выборка из нескольких таблиц
Выяснить какие продажи оформил официант Петров.
В INNER
JOIN можно без WHERE:
SELECT Фамилия, Имя, Должность, Номер_продажи, Дата
FROM
Сотрудники
INNER JOIN Продажи ON (Сотрудники.Код_сотрудника=Продажи.Код_сотрудника
AND Фамилия="Петров" AND Должность="Официант")
Результат:
Слайд 49Оператор выборки данных SELECT
Подзапросы
Подзапрос — это оператор SELECT, вложенный в
предложение WHERE, HAVING или SELECT другого оператора SELECT, в оператор
INSERT, UPDATE или DELETE, в другой подзапрос.
Подзапрос заключен в круглые скобки. Подзапросы имеют две формы: коррелированную и некоррелированную.
Слайд 50Выборка из нескольких таблиц
Пусть дана БД со следующей структурой:
Слайд 51Выборка из нескольких таблиц
Какие продажи оформлены менеджерами за март 2009
года:
Слайд 52Оператор выборки данных SELECT
Какие продажи оформлены менеджерами за март 2009
года:
Без подзапросов:
SELECT Номер_продажи, Дата
FROM Продажи, Сотрудники
WHERE Должность="Менеджер" AND
Дата Between #01.03.2009#
AND #31.03.2009#
AND Продажи.Код_сотрудника = Сотрудники.Код_сотрудника
Слайд 53Оператор выборки данных SELECT
Какие продажи оформлены менеджерами за март 2009
года:
Без подзапросов:
SELECT Номер_продажи, Дата
FROM Продажи
INNER JOIN Сотрудники
ON Продажи.Код_сотрудника = Сотрудники.Код_сотрудника
WHERE
Должность="Менеджер" AND
Дата Between #01.03.2009# And #31.03.2009#
Слайд 54Оператор выборки данных SELECT
Какие продажи оформлены менеджерами за март 2009
года:
Некоррелированный подзапрос:
Некоррелированный подзапрос реализуется за два шага. Сначала внутренний запрос
возвращает данные, а затем эти данные передаются во внешний запрос.
SELECT Номер_продажи, Дата
FROM Продажи
WHERE Дата Between #01.03.2009# And #31.03.2009#
AND Код_сотрудника IN (SELECT Код_сотрудника FROM Сотрудники WHERE Должность="Менеджер")
Слайд 55Оператор выборки данных SELECT
Какие продажи оформлены менеджерами за март 2009
года:
Коррелированный подзапрос:
В коррелированном подзапросе внутренний подзапрос не может быть реализован
немедленно: он ссылается на внешний запрос и выполняется поочередно для каждой строки во внешнем запросе.
SELECT Номер_продажи, Дата
FROM Продажи
WHERE "Менеджер" IN (SELECT Должность FROM Сотрудники WHERE Код_сотрудника=Продажи.Код_сотрудника)
AND Дата Between #3/1/2009# And #3/31/2009#
Слайд 56Оператор выборки данных SELECT
Найти продажи с ценой выше средней.
SELECT *
FROM Продажи
WHERE Цена > AVG(Цена)
То будет ошибка, например, в СУБД
MS Access:
Слайд 57Оператор выборки данных SELECT
Найти продажи с ценой выше средней.
SELECT *
FROM Продажи
WHERE Цена > (SELECT AVG(Цена) FROM Продажи)
То будет результат:
Слайд 60Система баз данных (СБД) или банк данных (БнД) – автоматизированная
информационная система (АИС) (человеко-машинная система), включающая в свой состав специальным
образом организованные данные и комплекс специальных методов и средств (математических, информационных, программных, языковых, организационно-методических и технических) для поддержания динамической модели предметной области с целью обеспечения информационных запросов пользователей (коллективное многоцелевое использование данных).
Слайд 62Состав СБД (БнД):
База данных (БД).
Система управления базой данных (СУБД).
СУБД — комплекс программных и языковых средств (программная система), предназначенный
для:
- создания БД;
- обеспечения эффективного доступа к данным в БД;
- управления данными в БД;
- поддержания БД в актуальном состоянии для предметной области.
Слайд 63Состав СБД (БнД):
К программным средствам СУБД:
1) штатные средства:
- ядро –
реализует функции СУБД;
- трансляторы/интерпретаторы – для компиляции и/или интерпретации прикладных
программ, написанных на языках СУБД;
- утилиты – для различных вспомогательных функций (настройка, восстановление, тестирование, сбор статистки и пр.).
2) прикладные программы создаются программистами, обслуживающими конечных пользователей.
Слайд 64Состав СБД (БнД):
К языковым средствам СУБД:
- языки определения данных;
- языки
манипулирования данными с запросами;
- языки программирования – для написания прикладных
программ.
Слайд 65Состав СБД (БнД):
Словарь-справочник данных (ССД) – хранилище информации обо всех
ресурсах СБД.
В нем хранятся:
- сведения, характеризующие состав и структуру БД;
-
смысловые определения элементов данных;
- характеристики связей между объектами БД;
- ограничения целостности данных;
- сведения о владельцах, пользователях, полномочия доступа;
- и т.п.
ССД – это БД, предметной областью которой является СБД и ее окружение.
БД и ССД контролируются СУБД.
Слайд 66Состав СБД (БнД):
технические средства – ЭВМ/сеть ЭВМ с необходимым набором
периферийных устройств;
математические методы и средства;
организационно-методические средства – инструкции, методические и
регламентирующие документы, руководства и пр.;
ОС как часть СБД, так как СУБД работает под управление ОС, используя ее штатные средства.
Слайд 67Состав СБД (БнД):
Администратор СБД (АСБД)– это группа специалистов, обеспечивающих создание,
функционирование и развитие СБД.
Функционирование СБД невозможно без АСБД.
Слайд 68
АСБД выполняет следующие функции:
• анализ предметной области;
• проектирование структуры БД;
•
обеспечение целостности данных;
• первоначальная загрузка и ведение БД;
• защита данных;
•
обеспечение восстановления БД;
• анализ обращений пользователей к БД;
• анализ эффективности функционирования СБД и развитие системы;
• работа с пользователями;
• подготовка и поддержание системных программных средств;
• организационно-методическая работа.
Слайд 70 Особенность современных технологий баз данных состоит в том, что в
настоящее время используется трехуровневая архитектура ANSI представления БД:
внешний уровень –
представление данных для различных конечных пользователей;
концептуальный уровень – обобщенное логическое представление данных;
внутренний уровень – представление данных в памяти ЭВМ.
Слайд 72 Основным преимуществом СБД является централизованное управление данными.
Основные преимущества централизованного подхода
в управлении данными в СБД:
возможность сокращения избыточности;
возможность устранения (до некоторой
степени) противоречивости;
возможность общего доступа к данным;
независимость прикладных программ и данных;
возможность соблюдения стандартов. Стандарты могут быть корпоративными, установочными, ведомственными, промышленными, национальными и интернациональными;
возможность введения ограничений для обеспечения безопасности;
возможность обеспечения целостности данных. Задача целостности заключается в обеспечении правильности и точности данных в базе данных через ограничения целостности;
возможность сбалансировать противоречивые требования пользователей.