
- •Информационное обеспечение систем управления
- •Содержание
- •1 Архитектуры обработки данных. 8
- •2 Способы организации данных. 10
- •3 Язык sql как язык работы с реляционными базами. 12
- •4 Данные и взаимосвязи. 13
- •5 Основы методологии idef1x 19
- •Insert into тклиент 46
- •1Архитектуры обработки данных.
- •1.1Архитектура хост/терминал.
- •1.2А рхитектура файл/сервер.
- •1.3Архитектура клиент/сервер.
- •1.4Многозвенная архитектура.
- •2Способы организации данных.
- •2.1Сетевая модель данных
- •2.2Реляционная модель данных.
- •3Язык sql как язык работы с реляционными базами.
- •4Данные и взаимосвязи.
- •4.1Объекты.
- •4.2Первичные ключи. Что выбрать в качестве первичных ключей для каждой из таблиц?
- •4.3Нормализация данных.
- •4.3.1Первая нормальная форма.
- •4.3.2 Вторая нормальная форма.
- •4.3.3Третья нормальная форма.
- •4.4Типы данных.
- •4.4.1Числовые целые типы данных.
- •4.4.2Числовые типы данных с плавающей точкой.
- •4.4.3Символьные типы данных.
- •4.4.4. Типы данных date, time и datetime.
- •4.4.5Специальные типы данных.
- •5Основы методологии idef1x
- •5.1Предназначение idef1x
- •5.2Сущности в idef1x и их атрибуты.
- •5.3Связи между сущностями
- •5.4Идентификация сущностей. Представление о ключах.
- •5.5Классификация сущностей в idef1x. Зависимые и независимые сущности.
- •5.6Типы связей между сущностями. Идентифицирующие и неидентифицирующие связи.
- •5.7Преимущества idef1x
- •5.8Модель «склад» в нотации idef1x
- •6.1Структура запроса, основные ключевые слова и операторы
- •6.1.1 Список основных операторов sql
- •6.1.2 Список основных ключевых слов sql
- •6.2Оператор select
- •6.2.1Предложение select
- •6.2.2Предложение from
- •6.2.2.1Повторяющиеся строки (ключевое слово distinct).
- •6.2.3Предложение where
- •6.2.4Условия поиска.
- •6.2.4.2Составные условия поиска (and, or и not)
- •6.2.4.3Проверка на принадлежность диапазону значений (between)
- •6.2.4.4Проверка на членство в множестве (in)
- •6.2.4.5Проверка на равенство значению null (is null)
- •6.2.4.6Проверка на соответствие шаблону (like)
- •6.2.4.7Подстановочные знаки
- •6.2.5Сортировка результатов запроса (предложение order by)
- •6.2.6 Агрегатные функции
- •6.2.6.1Вычисление суммы столбца (sum)
- •6.2.6.2Вычисление экстремумов (min и max)
- •6.2.6.3Вычисление среднего значения (avg)
- •6.2.6.4Вычисление количества значений в столбце (count)
- •6.2.7Запросы с группировкой (предложение group by)
- •6.2.8Условия поиска групп having
- •6.3Работа с несколькими таблицами
- •6.3.1Объединение при помощи оператора where
- •6.3.2Внутренние и внешние объединения
- •6.4 Вложенные запросы
- •6.4.1Исходная база данных
- •6.4.2Вложение запросов.
- •6.4.3Оператор exists
- •6.5Объединение множества запросов в один
- •6.5.1Когда можно выполнить объединение запросов ?
- •6.5.2Использование union с order by.
- •6.6Команды модификации данных
- •6.6.1Ввод значений (insert)
- •6.6.1.1Вставка пустых указателей (null)
- •6.6.1.2Именование названий столбцов для вставки
- •6.6.1.3Вставка результатов запроса
- •6.6.2Удаление строк из таблиц (delete)
- •6.6.3Изменение значений поля (update)
- •6.6.4Использование подзапросов для команд модификации данных
- •6.6.4.1Использование подзапросов в insert
- •6.6.4.2Использование подзапросов с delete
- •6.7Модификация структуры данных
- •6.7.1Команда сreate table
- •6.7.2Команда alter table.
- •6.7.3Команда drop table
6.3.2Внутренние и внешние объединения
Примеры рассмотренные в предыдущем разделе формально относятся к так называемым внутренним объединениям. Внутреннее объединение возвращает строки, только если условия объединения выполнено. Приведем еще раз пример запроса с использованием оператора JOIN (соединять).
Вывести всех клиентов с указанием города.
SELECT ГОРОДА.НАЗВАНИЕ, КЛИЕНТ.НАЗВАНИЕ(ИМЯ)
FROM ГОРОДА
INNER JOIN КЛИЕНТ ON ГОРОДА.IDN=КЛИЕНТ.IDN_ГОРОДА
Результат этого запроса.
Москва Москва Санкт-Петербург Пермь Пермь |
МММ Хопер Алиса ИВС ПГТУ |
Обратите внимание, что ни город Париж ни клиент Рога&Копыта в результаты запроса не попали.
На то, что мы имеем дело с внутренним объединением, указывает ключевое слово INNER (внутренний). Помимо внутренних объединений часто имеет смысл использовать внешние объединения, которые возвращают строки независимо от того выполнено условия объединение или нет. Когда условия объединения не выполнено для данной строки во внешнем объединении, поля из внутренней таблицы возвращаются как NULL.
Различают правые и левые внешние объединения, которые различаются тем, из какой таблицы (внутренней или внешней) извлекаются все строки. Приведем примеры.
Левое внешнее объединение:
Вывести всех клиентов, если для клиента указан город, показать его.
SELECT ГОРОДА.НАЗВАНИЕ, КЛИЕНТ.НАЗВАНИЕ(ИМЯ)
FROM ГОРОДА
LEFT OUTER JOIN КЛИЕНТ ON ГОРОДА.IDN=КЛИЕНТ.IDN_ГОРОДА
Результат этого запроса.
Москва Москва Санкт-Петербург Пермь Пермь |
МММ Хопер Алиса ИВС ПГТУ Рога&Копыта |
Обратите внимание, что был выведен клиент Рога&Копыта, для которого город не указан.
В этом запросе были использованы ключевые слова LEFT (левый) OUTER (внешний).
Правое внешнее объединение:
Вывести все города и клиентов из этих городов.
SELECT ГОРОДА.НАЗВАНИЕ, КЛИЕНТ.НАЗВАНИЕ(ИМЯ)
FROM ГОРОДА
RIGHT OUTER JOIN КЛИЕНТ ON ГОРОДА.IDN=КЛИЕНТ.IDN_ГОРОДА
Результат этого запроса.
Москва Москва Санкт-Петербург Пермь Пермь Париж |
МММ Хопер Алиса ИВС ПГТУ
|
В результате теперь присутствует Париж.
6.4 Вложенные запросы
6.4.1Исходная база данных
Эта база данных далее будет использоваться в примерах.
Таблица Клиент
IDN |
IDN_ГОРОДА |
ИМЯ |
РЕКВИЗИТЫ |
IDN_БАНКА |
204 |
101 |
Петров |
-------------- |
311 |
205 |
104 |
Кузнецов |
-------------- |
314 |
206 |
102 |
Иванов |
-------------- |
317 |
208 |
104 |
Золин |
-------------- |
311 |
210 |
105 |
Киров |
-------------- |
323 |
212 |
103 |
Павлов |
-------------- |
317 |
215 |
105 |
Петренко |
-------------- |
318 |
Таблица Города
IDN |
НАЗВАНИЕ |
102 |
Минск |
101 |
Москва |
103 |
Саратов |
104 |
Пермь |
105 |
Киев |
Таблица Банки
IDN |
РЕКВИЗИТЫ |
311 |
МММ |
314 |
Альфа – банк |
317 |
Сбербанк |
323 |
Менатеп |
318 |
Западуралбанк |
Таблица Перемещение
IDN |
ПОРЯДКОВ№ |
КОД_ДОК |
ДАТА_ДОК |
НОМЕР_ДОК |
IDN_ ГРУППЫ |
IDN_ МАТ.ЦЕН |
КОЛ-ВО |
ЦЕНА |
|
|
|
|
|
402 |
501 |
|
20 |
|
|
|
|
|
402 |
503 |
|
25 |
|
|
|
|
|
404 |
505 |
|
6 |
. |
|
|
|
|
404 |
504 |
|
7 |
|
|
|
|
|
404 |
506 |
|
5 |
|
|
|
|
|
406 |
508 |
|
15 |
|
|
|
|
|
406 |
507 |
|
25 |
Некоторые столбцы не заполнены т.к. не используются в примерах.
Таблица Группы
IDN |
НАЗВАНИЕ |
402 |
Газ. вода |
404 |
Шоколад |
406 |
Сигареты |
Таблица Мат. ценности
IDN_ГРУППЫ |
IDN_МАТ.ЦЕН |
IDN_МАТ.ЦЕН |
402 |
501 |
Fanta |
402 |
503 |
Sprite |
404 |
505 |
Mars |
404 |
504 |
Twix |
404 |
506 |
Шок |
406 |
508 |
Кама |
406 |
507 |
L&M |