
- •Введение. Структура предмета. Основные понятия
- •1.История развития баз данных
- •2. История развития субд
- •4.Основные понятия и определения
- •Контрольные вопросы
- •Раздел 1. Структура и технологии субд. Модели данных
- •Тема1.1 Архитектура и технико-экономические характеристики субд. Архитектура бд.
- •1. Основные функции субд
- •2. Обобщенная архитектура субд
- •3. Процесс прохождения пользовательского запроса
- •4. Архитектура бд
- •Контрольные вопросы
- •Тема 1.2 Модели данных. Основные понятия и классификация
- •1. Классификация моделей данных
- •3 Пример разработки простой er-модели
- •Контрольные вопросы
- •Тема 1.3 Иерархическая, сетевая и реляционная модели данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •Базовые понятия реляционных баз данных
- •Контрольные вопросы
- •Тема 1.4 Физические модели данных
- •1. Файловые структуры, используемые для хранения информации в базах данных
- •2. Индексные файлы
- •3. Моделирование отношения 1:м с использованием однонаправленных указателей
- •Контрольные вопросы
- •Тема 1.5 Целостность бд. Нормальные формы
- •1. Основные понятия
- •Null-значения
- •Трехзначная логика (3vl)
- •Потенциальные ключи
- •2.Целостность сущностей
- •2 . Основные нормальные формы
- •Аномалии обновления
- •Определение функциональной зависимости
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Контрольные вопросы
- •Тема 1.6 Операции и основные понятия реляционной алгебры и реляционного исчисления
- •1. Реляционная алгебра
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •2. Теоретико-множественные операторы
- •3. Специальные реляционные операторы
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение. Определение 10. Пусть даны отношения и , имеющие одинаковые атрибуты (т.Е. Атрибуты с одинаковыми именами и определенные на одинаковых доменах).
- •Контрольные вопросы
- •Тема 1.7 Проектирование реляционной базы данных
- •1. Методология проектирования базы данных
- •2. Этапы проектирования базы данных
- •Контрольные вопросы
- •Раздел 2. Язык sql и его возможности
- •Тема 2.1 История языка sql. Создание и редактирование схемы бд
- •1. Развитие языка sql
- •Что такое пользователь?
- •Числовые константы
- •2 Создание базы данных и структуры таблицы
- •3. Модификация структуры таблицы и удаление таблицы
- •4. Индексы
- •5. Добавление новых данных
- •Однострочный оператор insert
- •Многострочный оператор insert
- •Утилиты пакетной загрузки
- •6. Удаление существующих данных
- •Оператор delete с вложенным запросом
- •7. Обновление существующих данных
- •Обновление всех строк
- •Контрольные вопросы
- •Тема 2.2 Организация запросов к базе данных.
- •1. Формирование запросов к одной таблице
- •2. Статистические функции
- •3. Группировка и агрегатные функции в запросах
- •4. Объединение таблиц
- •Объединения таблиц по равенству значений в столбцах и другие виды объединений
- •5. Объединение таблицы с собой
- •6. Теоретико-множественные операции с таблицами
- •7. Выполнение сложных запросов с вложенными подзапросами
- •Использование выражений в подзапросах
- •Контрольные вопросы
- •Тема 2.3 Виртуальные таблицы Цель: рассмотреть понятие «виртуальная таблица»; назначение виртуальных таблиц и область их использования
- •1. Команда create view
- •2. Групповые представления
- •3. Представления и объединения
- •4. Представления и подзапросы
- •5. Удаление и модификация представлений
- •Контрольные вопросы
- •1.Определение триггера и его назначение
- •2. Типы триггеров
- •Создание триггеров dml
- •Создание триггеров замещения
- •Создание системных триггеров
- •Другие аспекты использования триггеров
- •3. Хранимые процедуры
- •Хранимые функции
- •Контрольные вопросы
- •Тема 2.5 Защита информации в бд
- •1. Общие понятия привилегий
- •Стандартные привилегии
- •2. Предоставление привилегий с использованием представлений
- •3. Другие типы привилегий
- •Контрольные вопросы
- •Тема 2.6 Транзакции и управлении ими
- •1. Что такое транзакция
- •2 . Операторы commit и rollback
- •3. Журнал транзакций
- •5. Транзакции и работа в многопользовательском режиме
- •Проблема пропавшего обновления
- •Проблема промежуточных данных
- •Проблема несогласованных данных
- •Проблема строк-призраков
- •6. Параллельные транзакции
- •Уровни блокировки
- •Жесткая и нежесткая блокировки
- •Тупиковые ситуации
- •Усовершенствованные методы блокировки
- •Контрольные вопросы
- •Тема 2.7 Распределенные базы данных. Модели серверов
- •1.Распределенная обработка данных
- •2. Модели «клиент—сервер» в технологии баз данных
- •Двухуровневые модели
- •Модель сервера приложений
- •3. Модели серверов баз данных
Обновление всех строк
Предложение WHERE в операторе UPDATЕ является необязательным. Если оно опущено, то обновляются все строки целевой таблицы. Например:
• Увеличить все личные планы на пять процентов.
UPDATE SALESREPS SET QUOTA = 1.05 * QUOTA
В отличие от оператора DELETE, в котором предложение WHERE практически никогда не опускается, оператор UPDATE и без предложения WHERE выполняет полезную функцию. Он применяется в основном для общего обновления всей таблицы, что было продемонстрировано в предыдущем примере.
Контрольные вопросы
Какое наибольшее основное различие между типами данных в SQL?
Распознает ли ANSI тип данных DATA?
Какой подраздел SQL используется чтобы помещать значения в таблицы ?
Что такое — ключевое слово?
Какая команда позволяет создать структуру таблицы? Объясните ее формат
Объясните формат команды модификации структуры таблицы. В чем особенность ее выполнения?
Какие ограничения могут накладываться на значения в столбцах?
Какие ограничения могут накладываться на таблицы?
Формат команды создания индекса. Какое назначение индексов
Объясните различные способы использования команды занесения данных
Формат команды удаления данных и особенности ее использования
Команда обновления данных, ее формат и область использования
Тема 2.2 Организация запросов к базе данных.
Тема: рассмотреть понятие «запрос», способы формирования запросов в зависимости от их назначений, дополнительные функции языка SQL применяемые в запросах.
Запрос – команда, что дается программе базы данных, которая сообщает ей, чтобы она вывела отдельную информацию с таблицы в память.
Запросы обычно рассматриваются как часть языка DML. Запрос сам по себе не изменяет информацию в таблицах, а просто показывает ее пользователю.
Все запросы в SQL состоят с одиночной команды.
В самой простой форме команда SELECT просто инструктирует БД, чтобы извлечь информацию из таблицы.
Обычно, в результате выполнения запроса строки представляются в том порядке, в каком они найдены в таблице. Это не обязательно будет тот порядок, в каком они вводились или хранились.
Результатом запроса всегда является таблица с тем указанным набором столбцов и со строками соответствующими указанному условию.
1. Формирование запросов к одной таблице
Формирование запросов – основная операция языка SQL, которую называют отображением.
Операция отображения выполняется в следующей последовательности: сначала выполняется выбор горизонтального подмножества данных, которые соответствуют предикату выборки (соответствует операции реляционной алгебры - селекция), потом – вертикального подмножества данных (соответствует операции - проекция).
Формат команды выбора из одной таблицы:
SELECT [DISTINCT|ALL] <целевой список> FROM <имя таблицы> [WHERE <предикат>],
Целевой список может представлять собой:
имя столбца, содержащегося в таблицах перечисленных после фразы FROM;
константу, показывающую, что в каждой строке результатов запроса должно содержаться одно и то же значение;
выражение, показывающее, что СУБД должна вычислять значение, помещаемое в таблицу результатов запроса, по формуле, определенной в выражении.
Имя таблицы – имя таблицы или таблиц, из которых выбираются данные;
Предикат – условие выборки.
Наиболее простые запросы извлекают данные из столбцов, расположенных в одной таблице. Простые запросы состоят только из двух фраз SELECT и FROM.
Вычисляемые столбцы получаются, если в целевом списке указано выражение. В выражениях можно использовать скобки, знаки умножения, сложения, деления и вычитания. В вычисляемых столбцах могут использоваться только значения исходных столбцов содержащих числовые значения, иначе будет выдаваться сообщение об ошибке. Кроме этого во многих СУБД есть дополнительные встроенные математические функции, функции для работы с датой и временем, их тоже можно использовать в вычисляемых столбцах.
Пример.
SELECT G_IG, (PRICE*0,3) FROM ORDERS;
SELECT G_IG, YEAR(DAT_POST) FROM ORDERS;
Вычисляемым столбцам можно присваивать новые имена, например:
SELECT G_IG, (PRICE*0,3) AS skidka FROM ORDERS;
В выходные данные запроса SELECT можно включить числовые константы, а также текст. Следующая команда иллюстрирует эти возможности на примере предыдущего запроса:
SELECT “Стоимость заказа №”, O_ID, “составляет”, PRICE*QN_TY FROM RDERS.
Но в этом случае один и тот же комментарий будет печататься в каждой строчке выходных данных.
Примеры безусловной выборки.
Выбор с таблицы GOOD информации обо всех товарах
SELECT * FROM GOOD.
Символ «*» используется для указания на все столбцы. Эта команда аналогична следующей: SELECT G_ID, G_NAME, PAR_1, PAR_2, PAR_3 FROM GOOD
Для исключения данных, что повторяются, используется ключевое слово DISTINCT.
2. Выборка номеров поставщиков, которые фигурируют в заказах на товары, имеет следующий вид:
SELECT DISTINCT S_ID FROM ORDERS.
Альтернативой DISTINCT является ключевое слово ALL. Оно включает в состав отобранного множества строк все повторения и действует по умолчанию.
Условие выборки может включать следующие операторы:
арифметические (=, !=, , , , );
логические (D, OR, NOT);
специальные операторы: IN, BETWEEN, LIKE, IS NULL.
Порядок выполнения операторов задается скобками.
Примеры выборки с условием.
Выборка всех данных о товарах высшего сорта с таблицы GOOD выполняется командой:
SELECT * FROM GOOD WHERE PAR_1=`высший сорт`.
Выбор всех данных об апельсинах высшего сорта с таблицы GOOD выполнится командой:
SELECT * FROM GOOD WHERE G_NAME=`апельсин` AND PAR_1=`высший сорт`.
Правила применения специальных символов.
Оператор IN полностью определяет множество, к которому данное значение может принадлежать или не принадлежать. Если необходимо найти всех поставщиков товаров с Киева и Харькова, возможен следующий запрос:
SELECT * FROM SUPPL WHERE S_CITY=`Киев` OR S_CITY=`Харьков`.
Оператор IN позволяет выполнить этот запрос более просто:
SELECT * FROM SUPPL WHERE S_CITY IN (`Киев`, `Харьков`).
Оператор BETWEEN задает интервал принадлежности значения столбца заданным границам. Например, выбор заказов на товар с кодом «11288», выполненных поставщиком с кодом «008» в интервале от 01.08.2000г. до 05.10.2000г., выполнится командой:
SELECT * FROM ORDERS WHERE G_ID=`11288`
AND S_ID=`008` AND DAT BETWEEN {01.08.200} AND {05.10.2000}.
Выбор заказов на товары стоимостью от 10 грн. до 50 грн., сделанных поставщику с кодом «008», выполнится командой:
SELECT * FROM ORDERS WHERE S_ID=`008` AND PRICE BETWEEN 10 AND 50.
Оператор LIKE используется для поиска строк, поэтому он применяется только для столбцов из символьными данными. С этим оператором могут использоваться шаблоны.
В строке-шаблоне разрешается использовать два трафаретных символа:
Символ подчеркивания "_" может использоваться вместо любого единичного символа в строке-поиска,
Символ процента "%" может заменять набор любых символов в строке-поиска (число символов в наборе может быть от 0 и более).
Оператор LIKE часто используют для поиска имени или названия, полное написание которого неизвестно.
Например, для поиска данных о поставщике с именем, которое начинается на «А», необходимо выполнить следующее:
SELECT * FROM SUPPL WHERE S_NAME LIKE `A%`.
В этом случае будут выданы данные обо всех поставщиках с именем, которое начинается на «А».
Оператор ISNULL используется для поиска в таблице записей со значением в заданном столбце NULL (этот параметр указывается в команде создания таблицы CREATE TABLE). Например, для нахождения в таблице GOOD всех записей со значением NULL в столбце PAR_3, необходимо выполнить команду:
SELECT * FROM GOOD WHERE PAR_3 IS NULL.
Если необходимо с исходного массива исключить нулевые строки, можно использовать операторы NOT NULL. Например, вывод всех товаров, у которых атрибут PAR_3 не содержит пустых значений, будет выполнен следующим образом:
SELECT * FROM GOOD WHERE PAR_3 IS NOT NULL.
С каждым из перечисленных операторов можно применять логический оператор NOT, тогда результат запроса будет выдавать инверсные строки.