
- •Классификация субд [5]
- •Функции субд
- •Централизованная архитектура
- •Технология с сетью и файловым сервером (архитектура «файл-сервер»)
- •Технология «клиент-сервер»
- •Трехзвенная (трехуровневая) архитектура
- •Реляционная модель данных
- •Методология idef1x
- •Определение отношения, домена, кортежа, реляционной базы данных, ключей
- •Связи между отношениями (таблицами)
- •Базовые теоретико-множественные операции реляционной алгебры
- •Специальные операции реляционной алгебры
- •Аномалии обновления
- •Первая Нормальная Форма
- •Определение функциональной зависимости
- •Функциональные зависимости отношений и математическое понятие функциональной зависимости
- •Вторая Нормальная Форма
- •Определение
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Реляционная модель данных: сравнение нормализованных и ненормализованных моделей.
- •16, Сравнение нормализованных и ненормализованных моделей
- •Null-значения
- •Потенциальные ключи
- •Целостность сущностей
- •Внешние ключи
- •Целостность внешних ключей
- •Замечания к правилам целостности сущностей и внешних ключей
- •Операции, которые могут нарушить ссылочную целостность
- •Для родительского отношения
- •Для дочернего отношения
- •20, Целостность реляционных данных: стратегии поддержания ссылочной целостности.
- •Стратегии поддержания ссылочной целостности
- •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
- •Create table – создать таблицу
- •Оператор check
- •Определение первичных и альтернативных ключей с помощью оператора alter
- •Операторы drop
- •Выборка данных
- •Сортировка результатов
- •Встроенные функции sql
- •Средства модификации данных языка sql
- •Вставка данных – insert
- •Изменение данных – update
- •Удаление данных – delete
- •Выборка данных
- •Представления
- •Применение представлений
- •Обновление представлений
- •Триггеры
- •Хранимые процедуры
- •Большая безопасность и меньший сетевой трафик.
- •Sql можно оптимизировать
- •Совместное использование кода:
- •Структура памяти эвм
- •Представление экземпляра логической записи
- •Организация обмена между оперативной и внешней памятью
- •Структуры хранения данных во внешней памяти эвм
- •Назначение и проверка полномочий, проверка подлинности
- •Средства защиты базы данных
- •Архитектура системы безопасности ms sql Server
- •34.Роли сервера
- •35, Права доступа
- •36, Необходимость в атомарных транзакциях
- •П , Параллельная обработка транзакций
- •Проблема потерянного обновления
- •Блокировка ресурсов
- •Блокировочная терминология
- •Сериализуемые транзакции
- •Взаимная блокировка
- •Оптимистическая и пессимистическая блокировки
- •Объявление характеристик блокировки
- •Свойства транзакций
- •Атомарность
- •Долговечность или устойчивость
- •Согласованность
- •Изолированность транзакции. Уровни изоляции
- •Типы курсоров
Удаление данных – delete
Для удаления строк служит SQL-оператор DELETE. К нему относятся те же самые предостережения, что и к оператору UPDATE. Он обманчиво прост в использовании, и неосторожное его применение может привести к самым неожиданным пследствиям. Следующий оператор удаляет из таблицы ПРОЕКТ данные обо всех проектах, спонсируемых бухгалтерией:
Листинг 13
DELETE
FROM ПРОЕКТ
WHERE Отдел = 'Бухгалтерия';
В связи с ограничением ссылочной целостности ON DELETE CASCADE эта операция удаляет не только строки таблицы ПРОЕКТ, но и все связанные с ними строки в таблице НАЗНАЧЕНИЕ. Для данных из табл. 1-3 этот оператор удаляет пятую и седьмую строки таблицы НАЗНАЧЕНИЕ.
Если вы забудете указать предложение WHERE, последствия будут катастрофическими. Например, следующий оператор удаляет все строки из отношения ПРОЕКТ (а вместе с ними, ввиду ограничения ON DELETE CASCADE, и все связанные с ними строки отношения НАЗНАЧЕНИЕ):
Листинг 14
DELETE
FROM ПРОЕКТ;
Обратите внимание на различия в процедурах обеспечения ссылочной целостности между таблицами ПРОЕКТ и СОТРУДНИК. Если мы попытаемся выполнить следующую команду, нас постигнет неудача, поскольку указанная строка таблицы СОТРУДНИК имеет дочерние строки в таблице НАЗНАЧЕНИЕ:
DELETE
FROM СОТРУДНИК
WHERE ТабельныйНомер=100;
Если требуется удалить строку этого сотрудника, необходимо сначала переназначить или удалить соответствующие строки в таблице НАЗНАЧЕНИЕ.
Выборка данных
SELECT
Базовый формат SQL-оператора SELECT таков: SELECT (имена столбцов или *), FROM (имена таблиц, разделенные запятыми, если таблиц больше, чем одна), WHERE (условия). С помощью оператора SELECT можно запрашивать определенные столбцы, определенные строки или то и другое вместе.
Чтение заданных столбцов из одиночной таблицы. Следующий оператор запросит (прочтет) три из четырех столбцов таблицы ПРОЕКТ:
Листинг 15
SELECT Название, Отдел, МаксТрудозатраты
FROM ПРОЕКТ;
Если нужно, чтобы СУБД нашла и удалила одинаковые строки, при запросе необходимо использовать ключевое слово DISTINCT:
Листинг 16
SELECT DISTINCT Отдел
FROM ПРОЕКТ;
Чтение заданных строк из одиночной таблицы. Приведенные выше SQL-операторы выбирали определенные столбцы всех строк таблицы. Можно сделать и наоборот — выбрать все столбцы определенных строк. Например, следующий оператор запрашивает все столбцы из тех строк таблицы ПРОЕКТ, которые содержат сведения о проектах финансового отдела:
Листинг 17
SELECT ИдПроекта, Название, Отдел, МаксТрудозатраты
FROM ПРОЕКТ
WHERE Отдел = 'Финансы';
В условиях, задаваемых в предложении WHERE, значения столбцов, имеющих типы данных Char и VarChar, необходимо заключать в одинарные кавычки (апострофы). Для столбцов типов Integer и Numeric этого не требуется. Объединять несколько условий можно с помощью ключевого слова AND.
Листинг 18
SELECT *
FROM ПРОЕКТ
WHERE Отдел = 'Финансы' AND МаксТрудозатраты > 100;
Множества значений задаются с использованием ключевых слов IN (соответствие любому значению из списка) и NOT IN (несоответствие ни одному значению из списка).
Листинг 19
SELECT Имя, Телефон, Отдел
FROM СОТРУДНИК
WHERE Отдел IN ('Бухгалтерия', 'Финансы', 'Маркетинг');
Диапазоны, специальные символы и пустые значения в предложениях WHERE. В предложениях WHERE могут также указываться диапазоны и шаблоны поиска. Для задания диапазонов используется ключевое слово BETWEEN. Например:
Листинг 20
SELECT Имя, Отдел
FROM СОТРУДНИК
WHERE ТабельныйНомер BETWEEN 200 AND 500;
Шаблоны поиска можно задавать при помощи специальных символов _ (произвольный одиночный символ) и % (произвольная последовательность символов) в сочетании с ключевым словом LIKE. Для поиска пустых значений используются ключевые слова IS NULL.
Листинг 21
SELECT *
FROM ПРОЕКТ
WHERE Имя LIKE 'KB_ Анализ портфеля';
Подчеркивание означает, что на данном месте может стоять любой символ. Результатом этого оператора является следующая таблица:
1000 КВЗ Анализ портфеля Финансы 75
1500 КВ4 Анализ портфеля Финансы 110
Чтобы найти всех сотрудников, чей номер телефона начинается с '285', можно четыре последние цифры номера представить символами подчеркивания:
Листинг 22
SELECT *
FROM СОТРУДНИК
WHERE Телефон LIKE '285-____';
Символ процента (%) представляет последовательность из одного или нескольких произвольных символов. Запрос, возвращающий строки сотрудников с номерами телефонов, начинающимися с '285', можно записать по-другому:
Листинг 23
SELECT *
FROM СОТРУДНИК
WHERE Телефон LIKE '285%';
Для поиска пустых значений в предложении WHERE служит ключевое слово NULL. Следующий запрос выдает имена и названия отделов всех сотрудников, для которых не указан номер телефона:
Листинг 24
SELECT Имя, Отдел
FROM СОТРУДНИК
WHERE Телефон IS NULL;
26, ПРЕДСТАВЛЕНИЯ. ПРИМЕНЕНИЕ ПРЕДСТАВЛЕНИЙ. ОБНОВЛЕНИЕ ПРЕДСТАВЛЕНИЙ.