Ответы на экзаменационные вопросы № 1-25 по дисциплине "Информационные системы" (Недостаточность файловых систем для инф.технологий. Представления реляционных баз данных), страница 11

- исп-е вложенных запросов;

Объединение запросов:

Результатом явл-ся набор данных полученный путем независимого выполнения каждого из запросов. В результирующем наборе заголовков не будет.

Правила создания union запросов.

1.Список полей объединенных запросов должен совпадать логически, по количеству и по типу выводимых полей.

2.Запрещается исп-ть в командах агрегатные ф-ии и группировку.

3.Если к-л поле одного из запросов имеет ограничение not null, то др. поля др. запросов ,выводимые с ним тоже должны иметь это ограничение. Сортировка результата может происходить как в отдельных запросах так и в общем случае.

24. Вложенные запросы в SQL. Соотнесенные подзапросы.

Обычно запросы могут управлять другими запросами путем размещения одного запроса внутри предиката др-го запроса ,т.о внутр-й запрос будет влиять на исполнение внешнего  запроса. Запрос указан в предложении where внешнего запроса наз-ся вложенным запросом или подзапросом. Кол-во уровней вложения

Запросов не ограничено. Для исп-я подзапросов сущ-т ряд правил:

1) Результат подзапроса д-н совпадать логически и по   с полем ,указ-м в предложении where внеш-го запроса, например where tnum=(select tnum…)

2) Подзапрос всегда д-н выводить только одно значение для этого в подзапросе д.б. использовано dist:net ПР. where tnum=(select distinct tnum)

3) Если заранее не известно кол-во значений поля вывода для запроса ,то во внешнем запросе ставить = нельзя. ПР. where ocenka in (select ocenka…)

4) В позапросах запрещается исп-ть предложения  group by и  having , но разрешается исп-ть подзапрос в предложении having внешнего запроса.

Внешние запросы.

Обычные запросы соединения,  запросы по равенству выводят инф только в том сл-е,  если ссылки  на таблицы сущ-т  во всех соед-х. (пр. вывести фамилии студентов и названия предметов и оценки кот. они получили, этот запрос не выведет инф о студентах не сдавших экзамен )

Для неск-х задач подобная потеря инф может привести к потере работоспособности системы. Для того, чтобы вывести полную инф обо всех студентах необходимо соед-ть взаимоисключающие запросы.

Специальные операторы подзапросов.

Обычные подзапросы д-ны возвращать значение только одного поля, однако сущ-т задачи в которых знач-я возвращаемого поля подзапроса безразлично, а требуется только конспирировать факт наличия подобной инф-и в этом сл-е м.б. исп-н спец. Операторы подзапросов:

1)exists возвращает true, если в списке вывода подзапроса находится инф

- select * from usp where usp ocenka=5 and exists (select*from usp where usp.ocenka=3)\\ выводит инф об отличниках если есть троечники.

2) ANY-возвращает true, если хотя бы одна строка подзапроса соотв-т условию.

3) ALL-возвращает true, если все строки подзапросов удовл-т условию.

27. Триггеры SQL.

Триггеры – особый вид хранимых процедур, используемый для поддержания ссылочной целостности.

Триггер срабатывает автоматически на операциях DML, при этом в памяти формируется временная таблица. Если сработало на Insert – inserted, delete – deleted, update – временная таблица не формируется.

Временная таблица не имеет собственного имени и собственной структуры. Она предназначена для хранения одной записи той таблицы, для которой сработал триггер. Временная таблица принимает структуру этой таблицы. Поскольку временная таблица не имеет собственного имени, то обращение происходит по псевдониму.

CREATE TRIGGER <name> ON <table> [FOR [INSERT] [, DELETE] [, UPDATE]] | [INSTEAD OF [INSERT] [DELETE] [UPDATE]] AS <операторы SQL>

Name – имя триггера, должно быть уникально в пределах БД.

Table – таблица для которой будет срабатывать триггер.

Триггеры могут срабатывать до или после события. До – INSTEAD OF, после – FOR.

В триггерах допускается использование локальных переменных в разделе declare. Правила создания переменных аналогичны хранимым процедурам.

1. создание первичного ключа для таблицы students