
К9-12В. Вопросы и ответы к ГОСам 2013 / Базы данных / 09. Представления и временные таблицы. Сравнение. Примеры использования представлений
..docx09. Представления и временные таблицы. Сравнение. Примеры использования представлений.
Создание представлений
CREATE VIEW имя_представления [(имя_колонки, …)] AS запрос
имя_представления – именует представление
имя_колонки – именует колонку представления.
AS – указывает начало определения представления.
запрос – определяет представление.
CREATE VIEW MA_PROJ
AS
SELECT * FROM PROJECT
WHERE SUBSTR(ProjNo, 1, 2) = ’MA’
В MS SQL Server вы можете создавать локальные и глобальные временные таблицы. Локальные временные таблицы будут видны только вашей сессии, а глобальные таблицы видны всем сессиям. При этом и те, и другие таблицы, уничтожаются после завершения сессии.
Чтобы таблица стала временной локально видимой, перед именем нужно поставить символ #, например, в следующем примере создается временная таблица #TestTable с одним только полем идентификатором, который является первичным ключом:
CREATE TABLE #TestTable
(
id INT PRIMARY KEY
)
Таблица будет существовать только во время выполнения одной сессии, и работать с ней сможете только вы. Например, вы написали большой сценарий, выполняющий определенные действия (например, процедуру, хранящуюся на сервере). Если в этом сценарии создать временную таблицу, то она будет существовать, только пока выполняется сценарий. После этого она автоматически уничтожается.
Попробуйте создать таблицу. Теперь попробуйте получить все данные из таблицы с помощью запроса:
SELECT * FROM #TestTable
В результате должна появиться пустая таблица (мы только создали таблицу, но не наполняли ее) из одной колонки с именем id.
Глобально видимые таблицы работают также, но в момент существования видны всем подключенным к серверу клиентам. Имена таких таблиц начинаются с двух символов ##. Следующий пример создает глобально временную таблицу:
CREATE TABLE ##TestTable
(
id INT PRIMARY KEY
)
Такая таблица будет существовать, пока существует сеанс с базой данных, создавшей таблицу, и все это время любой пользователь может работать с глобально временной таблицей.
Во временных таблицах нельзя использовать внешние ключи. Нет, ошибки не будет, и при попытке создать таблицу, она будет создана корректно, но попытки создать внешний ключ будут игнорироваться. Видимо, это связано с тем, что из-за внешнего ключа усложняется удаление таблиц и нужно следовать определенной последовательности. Сервер SQL от Microsoft не может себе позволить такую роскошь, да наверно и другие тоже.