Возможны также экзотические случаи, когда внешний ключ ссылается на таблицу, в которой он сам определён. Например, таблица Преподаватель может содержать столбец со ссылкой каждого преподавателя на заведующего кафедрой, в тоже время, заведующий сам является преподавателем, поэтому необходимо добавить ещё одно поле:
zavcaf char (3) FEFERENCES преподаватель (pnum);
При определении таблицы с внешним ключом можно определить или ограничить выполнение действий над таблицей с родительским ключом:
UPDATE/DELETE OF родительская_таблRESTRICTED;
UPDATE/DELETE OF родительская_таблCASCADES;
UPDATE/DELETE OF родительская_таблNULLS;
Пример:
CREATETABLE студент (… spdpchar (3) REFERENS преподаватель (pnum), UPDATEOF преподаватель CASCADE, DELETEOF преподаватель NULLS);
Вопросы темы:
1. Создание представлений .
2. Определение правд доступа к данным.
1. Создание представлений.
Таблицы, о которых раньше шла речь, называются базовыми таблицами. Они, как правило, содержат реальные данные. С другой стороны, результат выполнения запроса – это тоже таблица, и было бы удобно использовать эти таблицы наряду с базовыми, т.е. строить по ним новые запросы. Это позволяет делать механизм SQL, называемый представлениями.
Представление – это описание запроса, сохранённое под некоторым именем. Представление определяется с помощью следующей команды:
CREATEVIEW имя_представления [список_столбцов_представления] AS запрос_выборки
Пример:
Определить представление для получения сведений о преподавателях кафедры К-1.
CREATEVIEW имя_представления Кафедра1 ASSELECT * FROM Преподаватель WHEREpcaf = «K-1»;
Следует отметить, что запрос по команде CREATEVIEWне выполняется, а происходит запоминание описания запроса.
Если список столбцов представления не определён, то столбцы получают имена столбцов базовой таблицы, перечисленных в предложении SELECT. Запрос выборки в представлении может быть любой сложности, содержать подзапросы и сам использовать представления вместо базовых таблиц. Уничтожить представление можно с помощью следующей команды:
DROPVIEW имя_представления;
Представления очень удобно использовать по следующим причинам:
Пример:
Если определено представление Кафедра1, то, в дальнейшем, список сотрудников кафедры можно получить по следующим запросам:
SELECT * FROM Кафедра1;
Определим следующее представление:
CREATE VIEW ДипломыAS SELECT pcaf, pname, sname FROM Преподаватель WHEREdfgkjdlfjgdlkjgdklg
Теперь возможны различные запросы к этому представлению.
Пример 1:
Получить список дипломников определённой кафедры:
SELECT * FROM ДипломыWHERE pcaf = «K-1»;
Пример2:
Получить количество дипломников у преподавателя:
SELECT pname, COUNT(*) FROM ДипломыGROUP BY pname;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.