- •Серверы баз данных Курс лекций
- •Предисловие
- •Серверы баз данных. Основные понятия
- •История развития субд
- •Перспективы развития субд
- •Трехуровневая архитектура бд. Ее назначение
- •Модели клиент- сервер в технологии бд
- •Пользователи бд
- •Разработчики и администраторы приложений.
- •Контрольные вопросы
- •Двухуровневые модели
- •Модель удаленного доступа к данным
- •Удаленная презентация (Модель сервера бд)
- •Модель распределенной бд
- •Модель сервера приложений
- •Проектирование баз данных
- •Этапы разработки базы данных
- •Критерии оценки качества логической модели данных
- •Алгоритм нормализации (приведение к 3нф)
- •Элементы модели "сущность-связь"
- •Основные понятия er-диаграмм
- •Пример разработки er-модели
- •Описание предметной области
- •Описание сущностей и типов связей
- •П ереход к реляционной модели
- •Концептуальные и физические er-модели
- •Контрольные вопросы
- •Языки бд. Язык определения данных
- •Создание бд. Способы создания бд
- •Создание таблиц базы данных
- •Декларативные ограничения при создании таблиц
- •Задание ограничений ссылочной целостности
- •Изменение таблиц
- •Создание индексов в системе sql-сервер
- •Кластеризованный индекс
- •Контрольные вопросы
- •Языки бд. Язык управления данными
- •Выборка данных
- •Сортировка результатов запроса
- •Вложение запросов
- •Создание таблицы из набора результатов
- •Использование оператора union
- •Запросы на модификацию данных
- •Запросы на удаление
- •Запросы на добавление
- •Вставка записей из другой таблицы
- •Добавление данных в указанные поля
- •Values(‘31.03.03’,’согласен’,3000,4)
- •Запросы на обновление
- •Контрольные вопросы
- •Создание представлений
- •Создание, удаление и обновление представлений
- •Модифицируемые и немодифицируемые представления
- •Контрольные вопросы
- •Хранимые процедуры
- •Элементы Transact sql
- •Оператор условия
- •Циклическое выполнение операций
- •Функции
- •Создание хранимых процедур
- •Выполнение хранимой процедуры.
- •Контрольные вопросы
- •Триггеры
- •Назначение триггеров
- •Создание триггеров
- •Принцип работы триггеров
- •Включение и отключение триггера. Удаление триггера, Просмотр информации о триггерах
- •Контрольные вопросы
- •Транзакции и блокировки
- •Понятие транзакции
- •Свойства транзакций. Способы завершения транзакций
- •Операторы Transact sql для работы с транзакциями
- •Журнал транзакций.
- •Блокировки.
- •Сериалиация транзакций
- •Переопределение блокировок на уровне запроса. Типы блокировок
- •Контрольные вопросы
- •Безопасность данных и привилегии
- •Принципы защиты баз данных от несанкционированного доступа
- •Защита данных в системе ms sql Server
- •Контрольные вопросы
- •Организация доступа к бд из прикладных программ
- •Понятие курсора
- •Интерфейс прикладного программирования
- •Архитектура odbc
- •Архитектура odbc
- •Контрольные вопросы
- •Файловые структуры, используемые для хранения информации в бд.
- •Файлы прямого и последовательного доступа
- •Индексные файлы
- •Файлы с плотным индексом
- •Файлы с неплотным индексом
- •Моделирование отношений 1:м на файловых структурах
- •Моделирование отношений 1:м с использованием однонаправленных указателей
- •Структура записи подчиненного файла.
- •Алгоритм удаление записи из цепочки подчиненного файла.
- •Инвертированные списки
- •К Рисунок 14 онтрольные вопросы
- •Содержание
- •Литература
Создание таблицы из набора результатов
При помощи оператора SELECT INTO можно поместить набор результатов запроса в новую таблицу. Кроме того, этот оператор позволяет создавать и заполнять новые таблицы, а также создавать временные таблицы. Запросы к временной таблице иногда оказываются проще тех, которые пришлось бы выполнять, обращаясь к нескольким таблицам или базам данных. Оператор SELECT INTO позволяет создать локальную или глобальную временную таблицу. Для локальных таблиц используются имена, начинающиеся с символа #, а для глобальных – с символа ##.
Например, создать таблицу, содержащую объекты собственности, находящиеся в городе Полоцке.
SELECT *
INTO ##PROPERTY_POLOCK
FROM PROPERTY
WHERE City=’Полоцк’;
Использование оператора union
Оператор UNION позволяет выполнить два запроса независимо друг от друга и объединить и результаты. Для того чтобы объединение прошло успешно, выходные запросы должны быть совместимы по объединению, то есть иметь одинаковое количество отбираемых столбцов, типы соответствующих столбцов должны совпадать.
В выходном запросе отсутствуют дублирующие друг друга строки. Если надо оставить все строки в запросе, то после UNION следует указать ALL.
Получить данные о двухкомнатных квартирах в Витебске и Полоцке. Исходные данные находятся в таблицах PROPERTY_POLOCK PROPERTY_VITEBSK, имеющих одинаковую структуру.
SELECT *
FROM PROPERTY_POLOCK
WHERE Rooms=2
UNION
SELECT *
FROM PROPERTY_VITEBSK
WHERE Rooms=2;
Обычно оператор UNION используют для объединения данных двух независимых таблиц с одинаковой структурой.
Запросы на модификацию данных
SQL позволяет не только создавать запросы, но и вносить изменения в данные. Для этого используются запросы на удаление, вставку и обновление данных.
Запросы на удаление
Удаление строк из таблицы можно осуществить с помощью оператора DELETE. Следует учитывать, что оператор удаляет только целые записи таблицы, а не индивидуальные значения того или иного поля.
Синтаксис:
DELETE
FROM таблица
WHERE условие_отбора
Например, удалить из таблицы STAFF все записи, относящиеся к владельцу собственности, у которого значение поля STAFF_no=10:
DELETE
FROM STAFF
WHERE STAFF_no=10;
В команде удаления возможно использование вложенного запроса. Это может быть необходимо в тех случаях, когда критерий, по которому выбираются данные, базируется на другой таблице.
Запросы на добавление
Ввод и добавление записей в SQL осуществляется с помощью оператора INSERT. Существует несколько вариантов вставки данных.
Вставка записей из другой таблицы
Оператор INSERT добавляет записи в уже существующую таблицу, вставляя в нее набор результатов оператора SELECT
Синтаксис запроса:
INSERT [INTO] имя_таблицы
SELECT список_выборки
FROM список_таблиц
WHERE условие_поиска
Добавление данных в указанные поля
Наиболее употребительный вариант команды INSERT INTO предусматривает добавление записи в существующую таблицу с указанием списка полей:
Синтаксис запроса:
INSERT INTO имя_таблицы (поле1, поле2,…)
VALUES (значение_поля1, значение_поля2…)
При этом если перечислены не все поля, то в не перечисленные поля автоматически устанавливается значение NULL.
Если задается полный список значений новой записи, форма записи становится более короткой, так как перечень заполняемых полей после имени таблицы может не задаваться. Порядок следования значений после служебного слова VALUES должен соответствовать структуре таблицы.
Синтаксис запроса:
INSERT INTO имя_таблицы
VALUES (список_значений)
Например, отобрать из таблицы РROРERTY объекты собственности, находящиеся в Витебске, и поместить их в таблицу РROРERTY_VITEBSK. Таблица РROРERTY_VITEBSK должна быть заранее создана командой CREATE TABLE.
INSERT INTO РROРERTY_VITEBSK
SELECT *
FROM РROРERTY
WHERE City =’Витебск’
Добавить данные в таблицу VIEWING:
INSERT INTO VIEWING (Date_View, Comments, Property_no, Buyer_no)
