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

Пользовательские таблицы

Пользовательская таблица представляет собой неупорядоченное множество столбцов – атрибутов объекта, сведения о которых сохраняются в данной таблице. Приведём синтаксис оператора создания новой таблицы:

CREATE TABLE [<database>.[<owner>].]<table_name> ({<col_definition> | <col_name> AS <computed_col_expression>] [, … n]} {<table_constrain> [… n]} ) [ON {<filegroup> | DEFAULT}] [TEXTIMAGE_ON {<filegroup> | DEFAULT}]

где

database – имя базы данных, в которой создаётся таблица;

owner – имя владельца таблицы – пользователя или роли, определённой в базе данных;

table_name – уникальное в рамках базы данных имя таблицы;

col_definition – конструкция, определяющая описание столбцов таблицы, её синтаксис описан ниже.

col_name – уникальное в рамках таблицы имя столбца;

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

ON {<filegroup> | DEFAULT} – позволяет определить группу файлов, в которой предполагается хранить таблицу.

TEXTIMAGE_ON – позволяет определить группу файлов для хранения полей типа text, ntext, image.

<col_definiion>:: =<col_name> <datatype> [[<DEFAULT_expressin>] IDENTITY[(seed, increment)] [NOT FOR REPLICATION]] [ROWGUIDCOL] [COLLATE <collation_name>] [<col_constrain> [… n]]

datatype – определяет тип данных столбца - системный или пользовательский;

DEFAULT_expressin – позволяет указать значение по умолчанию.

IDENTITY[(seed, increment)] – свойство столбца таблицы с целочисленным типом данных, в котором сервером автоматически генерируется возрастающая последовательность, начиная с seed и приращением increment, значение данного столбца доступно только на чтение и может быть назначено только одному столбцу таблицы.

NOT FOR REPLICATION – указание этого параметра предписывает на выполнять действий, если они выполняются системой репликаций. Данный параметр может быть указан для ограничений целостности и при определении поведения сервера в случае изменения данных в первичном ключе.

ROWGUIDCOL – данное ключевое слово указывает, что данный столбец будет хранить глобальные идентификаторы, данное свойство можно назначить только одному столбцу таблицы. Для данного столбца автоматически указывается значение по умолчанию – функцию NEWID().

COLLATE <collation_name> – указывает имя сопоставления, которое необходимо использовать для полей с типом char, varchar, nvarchar.

Конструкции <table_constrain> и <col_constrain> – идентичны. Всего на таблицу может быть не более одного ограничения PRIMARY KEY, не более чем 249 ограничений UNIQUE, не более чем 31 ограничение FOREIGN KEY (каждый из которых может ссылаться не более чем на 16 колонок), не более одного DEFAULT на колонку, и неограниченное число CHECK. Синтаксис этих ограничений таков:

<table_constrain> ::= [CONSTRAIN < constrain_name>] {[NULL | NOT NULL] | [{PRIMARY KEY | UNIQUE} [CLASTERED | NONCLASTERED] [WITH FILEFACTOR = <filefactor>] [ON {<filegroup> | DEFAULT }]] ] | [[FOREGN KEY] REFERENCES <ref_table> [(<ref_col>)] [ON DELETE { CASCADE | NO ACTION )] [ON UPDATE { CASCADE | NO ACTION )] [NOT FOR REPLICATION] ] | CHECK [NOT FOR REPLICATION] (<logical_expression>) }

PRIMARY KEY - определяет первичный ключ создаваемой таблицы. Синтаксис данного ограничения выглядит следующим образом:

[CONSTRAINT <constraint_name>]     PRIMARY KEY [CLUSTERED | NONCLUSTERED]         (<col_name1> [, <col_name2> [..., <col_name16>]])         [ON <segment_name>] 

UNIQUE – определяет ограничение уникальности для колонки, и указывает тип индекса, создаваемого для этого. Хотя для UNIQUE и можно использовать поля, допускающие значения типа NULL, все же рекомендуется этого не делать. Синтаксис данного ограничения выглядит следующим образом:

[CONSTRAINT <constraint_name>]     UNIQUE [CLUSTERED | NONCLUSTERED]         (<col_name1> [, <col_name2> [..., <col_name16>]])         [ON <segment_name>] 

CLASTERED | NONCLASTERED – указывая тот или иной параметр можно создать для столбца кластерный или некластерный индекс. Эти ключевые слова могут быть использованы вместе с ограничениями целостности PRIMARY KEY и UNIQUE. Для ограничениями целостности PRIMARY KEY по умолчанию создаётся кластерный индекс а для ограничения UNIQUE некластерный. В каждой таблице может быть создан лишь один кластерный индекс, отличительнйо особенностью которого является то, что физический порядок строк в таблице изменяется в соответствии с кластерным индексом.

WITH FILEFACTOR = <filefactor> – с помощью этого параметра задаётся степень заполнения индексных страниц при создании индекса. Значение этого параметра указывается в процентах.

FOREGN KEY … REFERENCES – определяет , что столбец будет служить внешним ключом для таблицы, заданной параметром <ref_table>. Синтаксис данного ограничения выглядит следующим образом:

[CONSTRAINT <constraint_name>]     [FOREIGN KEY (<col_name1> [, <col_name2> [..., <col_name16>]])]        REFERENCES [<owner>.]<ref_table> [(<ref_col1> [, <ref_col2>              [..., <ref_col16>]])]

ON DELETE { CASCADE | NO ACTION ) – эти ключевые слова задают действия, предпринимаемые в отношении строки в создаваемой таблице при удалении соответствующей строки из первичного ключа или уникального столбца таблицы, на которую ссылается создаваемая таблица. Значение параметра CASCADE означает каскадное удаление записей в подчинённой таблице при удалении записи из главной таблицы.

ON UPDATE { CASCADE | NO ACTION ) – эти ключевые слова задают действия, предпринимаемые в отношении строки в создаваемой таблице при модификации соответствующей строки из первичного ключа или уникального столбца таблицы, на которую ссылается создаваемая таблица. Значение параметра CASCADE означает каскадное удаление записей в подчинённой таблице при удалении записи из главной таблицы.

CHECK определяет ограничение целостности через контроль возможных значений (задаваемых каким-либо логическим выражением), которые могут быть введены в столбец или столбцы.

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