- •Лекция 1,2. Основные понятия. Введение в базы данных.
- •2. Управление буферами оперативной памяти.
- •3. Управление транзакциями
- •4. Журнализация
- •5. Поддержка языков бд
- •Теоретические языки запросов.
- •1. Теоретико – множественные операции
- •2. Специальные операции:
- •Кортежные переменные и правильно построенные формулы
- •Целевые списки и выражения реляционного исчисления
- •Реляционное исчисление доменов
- •Лекция 6. Табличный язык запросов qbe
- •1. Запросы на выборку
- •2. Запросы на обновление
- •Запросы с использованием группировки и обобщающего набора функций:
- •Запрос для вычисления выражения
- •Лекция 7. Язык sql. Определение данных, манипулирование данными.
- •Раздел from
- •Раздел where
- •Раздел group by
- •Раздел having
- •Агрегатные функции и результаты запросов
- •Семантика агрегатных функций
- •Результаты запросов
- •Операторы определения и манипулирования данными.
- •Операторы определения данных. Определение таблицы.
- •Определение столбца
- •Операторы манипулирования данными.
- •Основные понятия модели Сущность-Связь.
- •Инфологическое проектирование.
- •Лекция 12.
Операторы определения и манипулирования данными.
Существенными свойствами языка запросов SQL являются возможность простого формулирования запросов с соединениями нескольких отношений и использование вложенных подзапросов в предикатах выборки. Вообще говоря, одновременное наличие обоих средств избыточно, но это дает пользователю при формулировании запроса возможность выбора более понятного ему варианта.
Существенной особенностью SQL является возможность указания в запросе потребности группирования отношения-результата по указанным полям с поддержкой условий выборки на всю группу целиком. Такие условия выборки могут содержать агрегатные функции, вычисляемые на группе. Эта возможность SQL главным образом отличает этот язык от языков реляционной алгебры и реляционного исчисления, не содержащих аналогичных средств.
Еще одним отличием SQL является необязательное удаление кортежей-дубликатов в окончательном или промежуточных отношениях-результатах. Строго говоря, результатом оператора выборки в языке SQL является не отношение, а мультимножество кортежей. В тех случаях, когда семантика запроса требует наличия отношения, уничтожение дубликатов производится неявно.
Операторы определения данных. Определение таблицы.
CREATE TABLE <table name> (<table element>)
Кроме имени таблицы, в операторе специфицируется список элементов таблицы, каждый из которых служит либо для определения столбца, либо для определения ограничения целостности определяемой таблицы. Требуется наличие хотя бы одного определения столбца. Оператор CREATE TABLE определяет так называемую базовую таблицу, т.е. реальное хранилище данных.
Для определения столбцов таблицы и ограничений целостности используются специальные операторы, которые должны быть вложены в оператор определения таблицы.
Определение столбца
Оператор определения столбца описывается следующими синтаксическими правилами:
Как видно, кроме обязательной части, в которой определяется имя столбца и его тип данных, определение столбца может содержать два необязательных раздела: раздел значения столбца по умолчанию и раздел ограничений целостности столбца.
В разделе значения по умолчанию указывается значение, которое должно быть помещено с строку, заносимую в данную таблицу, если значение данного столбца явно не указано. Значение по умолчанию может быть указано в виде литеральной константы с типом, соответствующим типу столбца; путем задания ключевого слова USER, которому при выполнении оператора занесения строки соответствует символьная строка, содержащая имя текущего пользователя (в этом случае столбец должен иметь тип символьных строк); или путем задания ключевого слова NULL, означающего, что значением по умолчанию является неопределенное значение. Если значение столбца по умолчанию не специфицировано, и в разделе ограничений целостности столбца указано NOT NULL, то попытка занести в таблицу строку с не специфицированным значением данного столбца приведет к ошибке.
Если в разделе ограничений целостности указано ограничение по ссылкам данного столбца (<reference specification>), то порождается соответствующее определение ограничения по ссылкам для таблицы:
FOREIGN KEY(C) <reference specification>.
Наконец, если указано проверочное ограничение столбца, то условие поиска этого ограничения должно ссылаться только на данный столбец, и неявно порождается соответствующее проверочное ограничение для всей таблицы.
Пример использования оператора CREATE TABLE для определение таблиц базы данных на языке SQL.
CREATE TABLE S
(S CHAR (6) NOT NULL,
SNAME CHAR (9) NOT NULL,
STATUS INT,
CITY CHAR (8) NOT NULL
PRIMARY KEY (S));
CREATE TABLE SP
(S CHAR (6) NOT NULL,
P CHAR (6) NOT NULL,
QTY INT,
PRIMARY KEY (S,P),
FOREIGN KEY (S) REFERENCES S /*Определение внешнего ключа*/
ON DELETE CASCADE /*Каскадное удаление*/
ON UPDATE CASCADE,
FOREIGN KEY (P) REFERENCES P
ON DELETE CASCADE
ON UPDATE CASCADE,
CHECK (QTY > 0 AND QTY < 500)); /*Проверочное условие*/