- •Введение
- •Глава 1 информационные системы
- •1.1 Информация как ресурс
- •1.2 Файловые системы
- •1.3 Информационные системы, использующие базы данных
- •1.3.1 Иерархические и сетевые модели данных
- •1.3.2 Реляционные системы управления базами данных
- •1.4 Компоненты информационных систем
- •1.4.1 Технические средства
- •1.4.2 Программное обеспечение
- •1.4.3 Данные
- •1.4.4 Пользователи
- •1.4.5 Организационное обеспечение
- •1.4.6 Отношения между компонентами системы
- •1.5 Основы проектирования информационных систем
- •1.5.1 Жизненный цикл программного обеспечения
- •1.5.2 Модели жизненного цикла по
- •1.5.3 Подходы к проектированию ис
- •1.6 Задания и вопросы для повторения
- •2.2 Подходы к проектированию баз данных
- •2.3 Создание базы данных
- •2.4 Основы концептуального проектирования баз данных
- •Объекты и отношения
- •2.3.2. Атрибуты
- •2.3.3 Ключи
- •2.3.4 Наследование
- •2.3.5 Составные объекты
- •2.3.6 Моделирование концептуальных и физических объектов
- •2.4 Реляционная модель данных
- •2.4.1 Поддержка целостности данных
- •Процесс нормализации таблиц
- •2.4.3 Пример построения нормализованной базы данных
- •2.4.4 Преобразование концептуальной модели в реляционную
- •2.5 Элементы er-моделирования
- •2.5.1 Основные понятия модели «сущность-связь»
- •2.5.2 Основные графические обозначения элементов модели
- •2.6 Заключительный этап проектирования
- •2.7 Сравнение концептуального и реляционного моделирования
- •2.8 Вопросы и задания для повторения
- •2.9 Упражнения и задачи
- •2.10 Проекты и профессиональные вопросы
- •Глава 3 реляционная алгебра и реляционное исчисление
- •3.1 Реляционная алгебра
- •3.1.1 Обзор реляционной алгебры
- •3.1.2 Теоретико-множественные операторы
- •3.1.3 Специальные реляционные операторы
- •3.1.4 Зависимые реляционные операторы
- •3.1.5 Примитивные реляционные операторы
- •3.2 Реляционное исчисление
- •3.2.1 Целевой список и определяющее выражение
- •3.2.2 Квантор существования
- •3.2.3 Квантор всеобщности
- •3.3 Заключение
- •3.4 Вопросы на повторение
- •3.5 Упражнения и задачи
- •Глава 4 управление реляционной базой данных с помощью sql
- •4.1 Элементы Transact-sql
- •Комментарии
- •4.1.2 Алфавит
- •4.1.3 Идентификаторы
- •Выражения
- •4.1.5 Ключевые слова
- •Операторы
- •4.1.7 Логические операторы
- •Типы данных
- •- Функции Transact-sql
- •4.2 Выборка данных из таблиц
- •4.2.1 Структура команды select
- •Результаты выборки
- •Отбор столбцов
- •Select Фамилия, Город from Гостиница.Dbo.Клиент
- •4.2.4 Определение заголовков столбцов
- •Выражения в выборках
- •Отбор записей
- •Порядок вывода данных
- •Котов Кузьма Кузьмич
- •Группировка данных
- •Отбор данных для групп
- •4.2.10 Директива compute
- •Выборка данных из нескольких таблиц
- •Объединение с помощью предложения where
- •Внутреннее объединение
- •4.2.14 Объединение и опция join
- •Оператор union
- •Подзапросы и структурированные запросы
- •Создание таблицы на основе выборки
- •Предложение for browse
- •4.3 Модификация данных
- •Добавление данных
- •Изменение данных
- •Удаление строк
- •Управляющие конструкции
- •Создание таблиц базы данных
- •4.6 Транзакции и блокировки
- •4.6.1 Понятие транзакций и блокировок
- •Управление транзакциями
- •Явные транзакции
- •Автоматические транзакции
- •Неявные транзакции
- •Управление блокировками
- •4.7 Хранимые процедуры
- •4.7.1 Типы хранимых процедур
- •Создание хранимых процедур
- •4.8 Триггеры
- •Создание триггера
- •Ограничения при создании триггеров
- •Использование триггеров
- •Вопросы на повторение
- •4.10 Упражнения и задачи
- •4.11 Проекты и профессиональные вопросы
- •Заключение
- •Приложение а sql скрпит, для создания таблиц согласно модели бд "Университет"
- •Литература
Создание таблицы на основе выборки
Команда SELECT с оператором INTO позволяет определить таблицу и добавить в нее данные. Если таблица с такими именем уже существует, команда заканчивается неудачно и генерируется сообщение об ошибке. Новая таблица создается со столбцами, которые указываются в списке выборки. Синтаксис запроса для создания таблиц следующий:
SELECT <Список столбцов>
INTO <Имя новой таблицы>
FROM <Список таблиц>
WHERE <Условие поиска>
При использовании данной команды необходимо учесть следующие факторы:
новая таблица создается только в том случае, если включена опция базы данных select into/bulkcopy;
если эта опция не установлена, то можно копировать данные во временную таблицу, имя которой начинается со знака # для локальной временной таблицы или начинается знаками ## для глобальной временной таблицы;
нельзя использовать при написании имени таблицы кириллицу;
названия столбцов не должны содержать пробелов;
нельзя создать таблицу на основе запроса, использующего COMPUTE, или внутри пользовательской транзакции.
В следующем примере создается временная таблица #Table1, в которую записываются фамилии клиентов, проживающих в настоящее время в двухместных номерах:
SELECT Н.Номер, К.Фамилия
INTO #Table1
FROM Клиент К, Проживает П, Номер Н
WHERE К.Код_клиента = П.Код_клиента
AND П.Номер = Н.Номер
AND Н.Число_мест = 2
AND П.Дата_убытия < GETDATE()
Предложение for browse
Предложение FOR BROWSE инструкции SELECT используется для чтения таблицы, внутри которой пользователь добавляет, удаляет или обновляет строки. Обычно SQL Server запрещает чтение таблицы, если выполняется модификация данных этой таблицы. Существуют ограничения на содержание других предложений в команде SELECT при использовании предложение FOR BROWSE:
в таблице, из которой делается выборка данных, должен быть столбец типа Timestamp и уникальный индекс;
инструкция SELECT не должна содержать оператора UNION;
предложение FOR BROWSE должно быть последним предложением.
При попытке прочитать модифицируемые другим пользователем строки таблицы с помощью обычно команды SELECT запрос будет отложен на время, равное по умолчанию пяти минутам. Если модификация завершится в течение этого времени, отложенный запрос отобразит необходимые строки таблицы. Если модификация не завершится за время тайм-аута, запрос выполнен не будет.
4.3 Модификация данных
В SQL Server для изменения данных используются три основные команды или инструкции, которые часто также завывают операторами модификации данных:
INSERT – добавляет новые строки в таблицу;
UPDATE – изменяет существующие данные;
DELETE – удаляет строки из таблицы.
Добавление данных
Команда INSERT состоит из двух главных предложений: INSERT и VALUES. В предложении INSERT указывается таблица, в которую будут добавляться записи. Кроме того, если нет необходимости добавлять значения во все столбцы таблицы, можно перечислить имена обновляемых столбцов. Предложение VALUES указывает данные, которые необходимо добавить. Синтаксис команды INSERT:
INSERT [INTO]
{<Имя таблицы>|<Имя представления>}
[(<Список столбцов>)]
{DEFAULT VALUES |
VALUES (<Список значений> | <Выражение выборки>)}
В следующем примере в таблицу КЛИЕНТ вводятся данные о новом клиенте:
INSERT INTO Клиент (Фамилия, имя, Отчество, Город)
VALUES ('Соколов', 'Кузьма', 'Петрович', 'Курск')
Предложение DEFAULT VALUES добавляет запись, которая будет содержать значения по умолчанию для каждого столбца. При этом полю в столбце со свойством IDENTITY будет присвоено следующее значение. Если значения по умолчанию столбцам не присвоены, но атрибуты могут принимать значение NULL, то это значение и будет занесено в столбец. Если в таблице существует хотя бы один столбец, для которого не определено значение по умолчанию и не разрешено значение NULL, то будет возвращена ошибка и команда INSERT не выполнится.
В команде INSERT может использоваться предложение SELECT, которое позволяет добавлять записи из существующих таблиц. Синтаксис такой команды выглядит следующим образом:
INSERT <Имя таблицы> [(<Список столбцов>)]
SELECT <Список столбцов>
FROM <Список таблиц>
WHERE <Условие поиска>
При этом наборы столбцов таблицы, в которую добавляются данные, и результаты выборки должны совпадать по числу столбцов, порядку их следования, типам данных и длине. Типы данных должны бать либо полностью совместимы, либо такими, чтобы SQL Server смог их конвертировать. Для пропущенного столбца обязательно должно быть определено значение по умолчанию или разрешено значение NULL. Команда INSERT с предложение SELECT может добавить более одной записи в таблицу, в то время как команда INSERT – только одну.
