
- •Введение
- •Общая схема банка данных в системе
- •Основные понятия
- •Базы данных
- •Банк данных как система управления основные понятия
- •Банк данных как автоматизированная система
- •Субд с включающим языком
- •Информационные системы
- •Документальные аис основные понятия дескриптор
- •Фактографические аис
- •Основные понятия
- •Основные данные
- •Уровни моделей
- •Классификация моделей
- •Роль подсхемы
- •Этапы проектирования базы данных
- •Архитектура банка данных
- •Последовательность действий при чтении записи
- •Инфологическое проектирование базы данных
- •Модели данных и подъязыки данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Реляционные базы данных
- •Алгебра отношений
- •Преимущества реляционных бд
- •Отношения
- •Нормализация отношений
- •Функциональная зависимость
- •Полная функциональная зависимость.
- •Проектирование баз данных.
- •Специальные операции над отношениями
- •Операции над отношениями.
- •Централизация и децентрализация процессов обработки данных.
- •Традиционный набор операций
- •Нормализация отношений
- •Исчисление отношений
- •Вторая и третья нормальные формы.
- •26. Язык запросов sql
- •1 Основы sql
- •Многотабличные запросы на чтение (объединения)
- •Сортировка результатов запроса (предложение order by)
- •Объединение результатов нескольких запросов (union)*
- •Запрос на объединение и сортировка *
- •Многотабличные запросы на чтение (объединения)
- •Простое объединение таблиц (объединение по равенству)
- •Запросы с использованием отношения предок/потомок
- •Объединения с условием для отбора строк
- •Несколько связанных столбцов
- •Запросы на чтение к трем и более таблицам
- •Чтение всех столбцов
- •Самообъединения
- •Псевдонимы таблиц
- •Правила выполнения многотабличных запросов
- •Внешнее объединение таблиц *
- •Итоговые запросы на чтение
- •Агрегатные функции
- •Агрегатные функции в списке возвращаемых столбцов
- •Запросы с группировкой (предложение group by)
- •Несколько столбцов группировки
- •Ограничения на запросы с группировкой
- •Вложенные запросы на чтение
- •Внешние ссылки
- •Вложенные запросы и объединения
- •Связанные вложенные запросы
- •Однострочный оператор insert
- •В интерактивном режиме удобно не включать в оператор insert список столбцов, так как это уменьшает длину оператора. В случае программного
- •Многострочный оператор insert
- •Удаление существующих данных
- •Удаление всех строк
- •Оператор delete с вложенным запросом *
- •Обновление существующих данных
-
Однострочный оператор insert
Ниже приведен оператор insert, который добавляет информацию о служащем Якобсене в учебную базу данных:
Вначале оператор создает новую строку, структура которой повторяет структуру столбцов таблицы, а затем заполняет ее значениями из предложения values и добавляет эту строку в таблицу. Строки в таблице не упорядочены, поэтому нет никаких указаний о том, где вставлять строку: "вверху", "внизу" или "между двух строк" таблицы. Эта строка будет входить в результаты последующих запросов на чтение таблицы salesreps, но в таблице результатов запроса она может находиться в любом месте.
Предположим, что служащий Якобсен получает свой первый заказ от компании InterCorp, нового клиента, которому присвоен идентификатор 2126. Это заказ на 20 изделий ACI-41004 общей стоимостью $2340, и ему присваивается номер 113069. Ниже приведены операторы insert, добавляющие в базу данных информацию о новом клиенте и заказе:
Добавление значений NULL
При добавлении в таблицу новой строки всем столбцам, имена которых отсутствуют в списке столбцов оператора insert, автоматически присваивается значение null. В операторе insert, с помощью которого в таблицу salesreps была добавлена информация о служащем Якобсене, были опущены столбцы quota и manager:
Из-за этого новая строка в столбцах quota и manager содержит значение null. Значение null можно присвоить явным образом, включив эти столбцы в список столбцов, а в списке значений задав для них ключевое слово null. Применение следующего оператора insert приведет к тому же результату, что и в предыдущем случае:
Добавление всех столбцов
Для удобства SQL разрешается не включать список столбцов в оператор insert. Если список столбцов опущен, он генерируется автоматически и в нем слева направо перечисляются все столбцы таблицы. При выполнении оператора select * генерируется такой же список столбцов. Пользуясь этой сокращенной формой записи, предыдущий оператор insert можно переписать таким образом:
Как видно из данного примера, если список столбцов опущен, то в списке значений необходимо явно указывать значение null. Кроме того, последовательность значений данных должна в точности соответствовать порядку столбцов в таблице.
В интерактивном режиме удобно не включать в оператор insert список столбцов, так как это уменьшает длину оператора. В случае программного
values, и столбцами, для которых эти данные предназначены. Список значений и столбцов должны содержать одинаковое число элементов, а тип данных каждого значения должен соответствовать типу соответствующего столбца, иначе произойдет ошибка. Стандарт ANSI/ISO требует, чтобы в списке столбцов использовались простые имена, но во многих СУБД допускаются и полные. Ясно, что в именах столбцов в любом случае не может быть неоднозначности, потому что все они являются ссылками на столбцы целевой таблицы.
Добавление значений NULL
При добавлении в таблицу новой строки всем столбцам, имена которых отсутствуют в списке столбцов оператора insert, автоматически присваивается значение null. В операторе insert, с помощью которого в таблицу salesreps была добавлена информация о служащем Якобсене, были опущены столбцы quota и manager:
Из-за этого новая строка в столбцах quota и manager содержит значение null. Значение null можно присвоить и явным образом, включив эти столбцы в список столбцов, а в списке значений задав для них ключевое слово null. Применение следующего оператора insert приведет к тому же результату, что и в предыдущем случае:
ДОБАВЛЕНИЕ ВСЕХ СТОЛБЦОВ
Для удобствам SQL разрешается не включать список столбцов в оператор insert. Если список столбцов опущен, он генерируется автоматически и в нем слева направо перечисляются все столбцы таблицы. При выполнении оператора select * генерируется такой же список столбцов. Пользуясь этой сокращенной формой записи, предыдущий оператор insert можно переписать таким образом:
Как видно из данного примера, если список столбцов опущен, то в списке значений необходимо явно указывать значение null. Кроме того, последовательность значений данных должна в точности соответствовать порядку столбцов в таблице.
В интерактивном режиме удобно не включать в оператор insert список столбцов, так как это уменьшает длину оператора. В случае программного SQL список столбцов должен быть задан всегда, поскольку такую программу легче читать и понимать.