Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiNovye.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.92 Mб
Скачать

Значение null

Столбцы могут разрешать или запрещать хранение значений NULL. NULL – это специальное значение, представляющее собой отсутствие любого значения. NULL – это не тоже самое, что знак пробела или ноль. Пробел – это допустимый символ, и 0 – допустимое число. NULL также отличается от пустой строки, т.е. строки нулевой длины.

Правила порождения идентификаторов

Идентификаторы должны состоять из символов латинского или русского алфавита, цифр и символов _ ,@ , #. Дополнительно существуют следующие правила:

  • все идентификаторы, начинающиеся с @, почитаются за локальные переменные;

  • все идентификаторы, начинающиеся с #, считаются именами временных объектов;

  • в противном случае идентификаторы должны начинаться с буквы.

Имена объектов необязательно должны быть уникальными в рамках базы данных, например, имена колонок и индексов должны быть уникальными только в пределах таблицы или представления (view), все же имена других объектов должны быть уникальными в пределах базы данных для каждого владельца. Любую колонку или таблицу можно уникально идентифицировать следующим составным именем – имя базы данных, имя владельца, имя таблицы или представления. Промежуточные значения – имя владельца может быть опущено, если это не приводит к конфликтам имён.

Таблицы

Все данные в MS SQL Server содержатся в таблицах, аналогичных таблицам других реляционных СУБД. Принято выделять 3 вида таблиц:

  • пользовательские;

  • системные;

  • временные.

Системные таблицы

MS SQL Server хранит данные, определяющие конфигурацию сервера и всех его таблиц, в специальном наборе таблиц, известном как системные таблицы (system tables). Поскольку системные таблицы содержат сведения, необходимые для успешного функционирования сервера, пользователю не следует напрямую изменять хранящуюся в них информацию. По умолчанию прямой доступ к системным таблицам с использованием команд INSERT, UPDATE и DELETE запрещён. Хотя разрешается выполнять выборку данных с помощью команды SELECT.

Для изменения данных необходимо использовать специальные системные хранимые процедуры, что гарантирует правильность и надёжность выполняемых операций. Имеющиеся хранимые процедуры охватывают практически все возможные ситуации управления базами данных, так что необходимость прямого доступа к системным таблицам практически исключена. Кроме того, использование в прикладных приложениях хранимых процедур позволяет гарантировать, что работоспособность программы сохранится даже при изменении структуры системных таблиц в следующих версиях MS SQL Server.

Временные таблицы

MS SQL Server поддерживает так называемые временные таблицы (temporary tables), предназначенные для временного хранения информации. Например, временную таблицу можно использовать для хранения промежуточных результатов при сложных расчётах. Временные таблицы сохраняются в системной базе данных tempdb и автоматически уничтожаются при закрытии соединения. Если при создании временной таблицы будет явно указано имя базы данных, в которой она должна быть создана, это имя будет проигнорировано и таблица будет создана в базе данных tempdb.

В распоряжении пользователей имеется два вида временных таблиц.

Локальные временные таблицы (local temporary tables). Названия этих таблиц начинаются с символа #. Локальные временные таблицы видимы только для соединения, создавшего их. При закрытии соединения такая таблица удаляется. При следующем открытии соединения она создаётся снова. Кроме того, если локальная временная таблица была создана в хранимой процедуре (триггере, пакете команд), то после выхода из этой процедуры (завершении триггера, пакета команд) такая таблица также удаляется. В разных соединениях могут создаваться временные локальные таблицы с одинаковыми именами. Более того, даже в пределах одного соединения можно создавать несколько локальных временных таблиц с одинаковыми именами, если они создаются на разных уровнях. Создание в одном соединении множества одноименных локальных временных таблиц возможно и при рекурсивном вызове хранимых процедур, в теле которых создаются такие таблицы.

Глобальные временные таблицы (global temporary tables). Доступ к временным таблицам этого типа может быть получен для всех соединений, независимо от того, в каком именно из них глобальная временная таблица была создана. При этом не важно, какой пользователь конкретно создал эту временную таблицу и в контексте какой базы данных. Таким образом, одна и та же хранимая процедура, запускаемая разными пользователями, может обращаться к глобальной временной таблице для получения информации. Глобальные временные таблицы, как правило, предназначены для обмена данными между различными приложениями. Глобальная временная таблица существует до тех пор, пока она не будет явно удалена с помощью команды DROP TABLE либо пока не будет закрыто соединение, в котором она была создана.

Названия глобальных временных таблиц начинаются с символов ##. Поскольку глобальная временная таблица видна из любого соединения, её имя должно быть уникально в пределах сервера. Хотя глобальная временная таблица существует до закрытия соединения, тем не менее, она может быть удалена или изменена из любых других соединений. Создание глобальных временных таблиц или стандартных таблиц не позволяет полностью контролировать содержание этих таблиц, так как другая копия хранимой процедуры может удалить, изменить или добавить данные в таблице. При использовании локальных временных таблиц эта проблема решается автоматически. Даже если в пределах одного соединения одна и та же хранимая процедура будет вызвана несколько раз, для каждой копии будет создана отдельная таблица. При этом имена таких таблиц могут быть одинаковыми.

Когда сервер встречает имя таблицы, начинающееся с символов # или ##, он обращается к базе данных tempdb для поиска указанной таблицы. При этом игнорируется имя владельца таблицы и имя базы данных. Указание имени сервера при обращении к временной таблице вообще не разрешается. Таким образом, создание временной таблицы возможно только на текущем сервере. При попытке указать имя сервера при создании временной таблицы будет выдано сообщение об ошибке. В остальном же работа с временными таблицами ничем не отличается от работы с обычными таблицами. Для создания, изменения и удаления временных таблиц используются те же команды, что и при работе с обычными таблицами. Как глобальные, так и локальные временные таблицы автоматически уничтожаются при остановке сервера. Таким образом, различие между локальными и глобальными временными таблицами в области видимости и доступе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]