|
Программирование >> Реализация баз данных
1 3 я баз данных и таблиц SQ Глава 4 них используется столбец, содержащий NULL. Когда требуется создать столбец, значения которого не известны, зачастую можно определить для него значение по умолчанию. Например, столбец Phone таблицы Authors из базы данных Pubs не допускает пустых значений. В этом столбце определено значение по умолчанию UNKNOWN. Если в строке со сведениями об авторе номер телефона не указан, значение в столбце Phone равно UNKNOWN. Далее определение значений по умолчанию обсуждается более подробно. Если при добавлении строки не указано значение поля, допускающего пустые значения, Server присваивает ему пустое значение (если не определено значение или объект по умолчанию). В поле, определенном посредством ключевого слова пользователь мо- жет явно ввести пустое значение, при этом не играют роли ни тип данных поля, ни определенное для него значение по умолчанию. NULL нельзя заключать в кавычки, поскольку в этом случае оно интерпретируется как строка символов, а не как пустое значение. Если вы зададите поле как не допускаюшее пустые значения, облегчается обеспечение целостности данных, так как данное поле во всех строках обязательно будут заполнено. Если пустые значения не разрешены, то заполняющий пользователь должен ввести в поле какое-либо значение, в противном случае строка не будет принята в базу данных. Столбцы, определенные с ограничением PRIMARY KEY или свойством IDENTITY, не допускают пустых значений. Возможность пустых значений определяется во время определения столбца, создания или модификации таблицы. Не затюимо оттого, допускает ли столбец пустые значения, из-за сложностей обработки пустых значений в SQL Server в определении всех столбцов всегда приходится использовать ключевые слова NULL или NOT Если столбец допускает пустые значения, то применяется ключевое слово NULL, если нет - то NOT NULL. Следующая программа-пример создает посредством оператора CREATE TABLE таблицу Employee. Столбцы Emp ID и LastName не допускают пустых значений, а столбец FirstName - допускает: CREATE TABLE tiipioyees ( E[ttp ID char(4) NOT NULL, FirstName varchar(30) NULL, LastName varchar(30) NOT NULL . . - Определение значений по умолчанию Все поля записи должны быть заполнены (даже с использованием пустых значений). Иногда требуется загрузить в таблицу строку, но значение какого-либо поля не известно (или не Если поле допускает пустые значения, можно загрузить строку с пустым значением. Поскольку поля, допускающие пустые значения, нежелательны, лучше определить для поля значение по умолчанию (определить ограничение DEFAULT). Например, в качестве значения по умолчанию, которое используется, если значение не указано, для числовых полей обычно задают ноль, а для символьных - Определение DEFAULT в операторе CREATE TABLE рассматривается как ограничение, хотя на самом деле оно не налагает никаких ограничений. Хотя ограничения обсуждаются в главе 5, определение DEFAULT обсуждается здесь, что позволит продемонстрировать альтернативу полям, пустые значения. Пр фучке в таблицу строки с неизвестным значением поля, для которого определено значение по умолчанию, вы неявно даете SQL Server указание загрузить в это поле значение по умолчанию. Если поле не допускает пустых значений и для него не определено значение по умолчанию, необходимо явно задать его значения. В противном случае Server вернет ошибку с сообщением, что это поле не допускает пустых значений. Есть два способа определения значения по умолчанию: определить его во время создания самой таблиц часть определения таблицы); добавить это определение к существующей таблице (у любого столбца таблицы оно может быть только одно). В примере с помощью оператора CREATE TABLE создается Employees. Ни один из трех ее столбцов не допускает пустых значений. Однако на самом деле столбец позволяет ввести неизвестное имя, поскольку в его определении содержится определение значения по умолчанию. Для его определения в CREATE TABLE используется ключевое слово DEFAULT. CREATE TABLE Employees ( Emp. тп char (4) NOT NULL, IFirstName jrchar(30; NOT NULL DEFAULT unknown . LastKarae varchar(30) NOT NULL ) Существующее определение значения по умолчанию можно модифицировать или удалить. При модификации определения значения по умолчанию с помощью необходимо сначала определение DEFAULT а затем создать но- вое определение с Невозможно создать определения DEFAULT в следующих столбцах: с типом данных11тей1атр; со свойствами IDENTITY или ROWGUIDCOL; с существующим определением или объектом по умолчанию. Значение по умолчанию должно быть совместимо с типом данных к которому относится определение DEFAULT. Например, необходимо, чтобы значением по умолчанию для столбца с типом данных int было целое число, а не символьная строка, Когда определение DEFAULT применяется к существующему столбцу, SQL Server применяет (по умолчанию) новое определение только к новым строкам, добаатенным к таблице. Существующие вставленные во время действия старого определения по умолчанию, не затрагиваются. Однако при добавлении к существующей таблице нового столбца можно указать SQL Server вставить в строки таблицы не пустые на-чения, а значения по умолчанию (заданные определением умолчания для этого Автоматическая нумерация и столбцу! с идентификатором В любой таблице можно создать единственный с идентификатором, который будет содержать сгенерированные системой последовательные значения, уникально идентифицирующие каждую строку в таблице. Например, по мере добавления строк в таблицу столбец с идентификатором может автоматически генерировать для приложения уникальные номера квитанций. Обычно значения столбца с идентификатором уникальны только в пре- баз SQL делах таблицы, в которой они определяются. То есть в столбце с идентификатором допустимы совпадающие со значениями идентификатора, которые в других таблицах. Однако в такой ситуации проблем обычно не возникает, поскольку значение идентификатора, как правило, используется в контексте одной таблицы, а столбцы с идентификатором не связаны с другими аналогичными столбцами других таблиц. Для любой таблицы, значения которой уникальны для всех компьютеров мира, объединенных в сеть, можно создать столбец с глобально уникальным идентификатором. Столбец с уникальными значениями полезен, когда необходимо свести похожие данные из нескольких СУБ ичер. в системах выписки счетов, данные которых находятся в различных дочерних компаниях, расположенных в различных странах). Когда на центральном узле выполняется сведение данных для консолидации и составления отчетов, использование глобально уникальных значений исключает совпадение идентифи-и номеров счета у покупателей из различных стран. SQL Server использует столбцы с глобально уникальным при репликации сведением для обеспечения уникальности идентификатора строк среди нескольких копий одной таблицы. Создание столбцов с идентификатором В любой таблице может быть создан только один столбец с идентификатором или глобально уникальным идентификатором. Свойство ЮЕЫТПУ Столбцы с идентификатором можно реализовать с помощью свойства кото- рое позволяет разработчику приложений задать номер идентификатора первой строки, добавленной в таблицу (свойство Identity Seed, исходное значение идентификатора) и инкремент icuoHciiio Identity liicremenO. который будет прибавляться к исходному значению для определения последовательных значений идентификатора. SQL автоматически генерирует следующее значение идентификатора, прибавляя инкремент к исходному значению. Определяя столбец с идентификатором при помощи свойства IDENTITY, следует учесть следующие моменты: в таблице разрешен только один столбец со свойством IDENTITY. Возможные типы данных для этого столбца: decimal, iitt. numeric, smallint, bigint или tinyiin можно задать исходное значение и инкремент идентификатора. Для обоих значение по умолчанию равно 1; столбец с идентификатором не доложен допускать пустых значений, в нем запрещены определения или объект когда установлено свойство на этот столбец можно ссылаться в списке выбора с помощью ключевого слова IDENTITYCOL; для определения того, есть ли в таблице столбец со свойством i DENTITY, предназначена функция OBJECTPROPERTY; функция COLUM PROPERTY позволяет определить имя столбца IDENTITY. Следующий пример создает таблицу Employees с помощью оператора языка SQE CREATE ТАВЕЕ. Ни один столбец не допускает пустых значений. Кроме тою, столбец EmplD является столбцом с идентификатором. Исходное значение идентификатора равно инкремент - CREATE TABLE Employees ( Emp ID SMALLINT IDENTITY( 101, 1) NOT NULL, EmpNante VARCHAR(50) NOT NULL
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |