
- •1 . Архитектуры обработки данных. 1
- •Архитектура файл/сервер.
- •Архитектура клиент/сервер.
- •Многозвенная архитектура.
- •Способы организации данных.
- •Сетевая модель данных
- •Реляционная модель данных.
- •ЯзыкSqLкак язык работы с реляционными базами.
- •Данные и взаимосвязи.
- •Объекты.
- •Первичные ключи. Что выбрать в качестве первичных ключей для каждой из таблиц?
- •Нормализация данных.
- •Первая нормальная форма.
- •Вторая нормальная форма.
- •Третья нормальная форма.
- •Типы данных.
- •Числовые целые типы данных.
- •Числовые типы данных с плавающей точкой.
- •Символьные типы данных.
- •. Типы данных date, time и datetime.
- •Специальные типы данных.
- •Структура запроса, основные ключевые слова и операторы
- •Список основных операторовSql
- •Список основных ключевых словSql
- •ОператорSelect
- •ПредложениеSelect
- •ПредложениеFrom
- •Повторяющиеся строки (ключевое слово distinct).
- •ПредложениеWhere
- •Условия поиска.
- •Составные условия поиска (and, or и not)
- •Проверка на принадлежность диапазону значений (between)
- •Проверка на членство в множестве (in)
- •Проверка на равенство значению null (is null)
- •Проверка на соответствие шаблону (like)
- •Подстановочные знаки
- •Сортировка результатов запроса (предложениеOrder by)
- •Агрегатные функции
- •Вычисление суммы столбца (sum)
- •Вычисление экстремумов (min и max)
- •Вычисление среднего значения (avg)
- •Вычисление количества значений в столбце (count)
- •Запросы с группировкой (предложениеGroup by)
- •Условия поиска групп having
- •Работа с несколькими таблицами
- •Вложенные запросы
- •Исходная база данных
- •Вложение запросов.
- •Оператор exists
- •Объединение множества запросов в один
- •Когда можно выполнить объединение запросов ?
- •Использование union с order by.
- •Команды модификации данных
- •Ввод значений (insert)
- •Вставка пустых указателей (null)
- •Именование названий столбцов для вставки
- •Вставка результатов запроса
- •Удаление строк из таблиц (delete)
- •Изменение значений поля (update)
- •Использование подзапросов для команд модификации данных
- •Использование подзапросов в insert
- •Использование подзапросов с delete
- •Модификация структуры данных
- •Команда сreate table
- •Команда alter table.
- •Команда drop table
Оператор exists
EXISTS ( существует ) оператор, генерирующий значения «истина» или «ложь». Его мoжно применять отдельно в предикате или комбинировать с другими выражениями с помощью операторов AND, OR, NOT .Этот оператор оценивает подзапрос как истинный, если подзапрос генерирует выходные данные, а в противном случае как ложный, иными словами оператор EXISTS возвращает значение «истина», если подзапрос возвращает хотя бы одну строку. В отличие от прочих операторов и предикатов, он не может принимать значения unknown (неизвестный). Например, нужно извлечь данные из таблицы Клиент в том случае, если один (или более) клиент из нее работает с банком МММ:
SELECT * FROM КЛИЕНТ
WHERE EXISTS
(SELECT * FROM КЛИЕНТ WHERE IDN_банка = 311)
Выходные данные:
-
IDN
IDN_ГОРОДА
ИМЯ
РЕКВИЗИТЫ
IDN_БАНКА
204
101
Петров
--------------
311
205
104
Кузнецов
--------------
314
206
102
Иванов
--------------
317
208
104
Золин
--------------
311
210
105
Киров
--------------
323
212
103
Павлов
--------------
317
215
105
Петренко
--------------
318
Внутренний запрос выбрал все данные обо всех клиентах, работающих с МММ.
Т.к. такие клиенты существуют , оператор EXISTS отметил, что подзапрос генерирует выходные данные, и принимает значение «истина». В данном случае тот же результат можно было получить проще, однако, бывают случаи, когда без EXISTS не обойтись.
Вывести название группы, если в ней есть товар, цена которого > 20.
SELECT ГРУППЫ.НАЗВАНИЕ
FROM ГРУППЫ
WHERE EXISTS
(SELECT
ЦЕНА FROM
ПЕРЕМЕЩЕНИЕ
WHERE ЦЕНА> 20
AND ГРУППЫ.IDN = ПЕРЕМЕЩЕНИЕ.IDN_ ГРУППЫ)
Oператор EXISTS отметил ,что подзапрос генерирует выходные данные, и принимает значение «истина» для групп газ. вода и сигареты.
Выходные данные:
-
НАЗВАНИЕ
Газ. вода
Сигареты
Приведем еще один вариант для примера из предыдущего раздела:
Получить все банки, которые не используются клиентами:
SELECT * FROM Банки
WHERE NOT EXISTS
(SELECT * FROM КлиентWHERE
Клиент.Idn_банка =
Банки.Idn)
Объединение множества запросов в один
UNIONобъединяет выходные данные двух и более
SQL - запросов в единое множество строк
и столбцов. Для того чтобы получить
сведения обо всех банках и городах , имя
которого начинается с М.
SELECT РЕКВИЗИТЫ FROM БАНКИ
WHERE РЕКВИЗИТЫ LIKE ‘М%’.
UNION
SELECT НАЗВАНИЕ FROM ГОРОДА
WHERE НАЗВАНИЕ LIKE ‘М%’.
Выходные данные:
МММ |
Менатеп |
Минск |
Минск |
Столбцы, выбранные с помощью двух команд, представлены в выходных данных так, как если бы они выбирались с помощью одного запроса. Заголовки столбцов отсутствуют т.к. они выбирались из разных таблиц.