Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синтаксис CREATE TABLE 
V
    Опции темы
keos
Дата 23.4.2010, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.4.2010

Репутация: нет
Всего: нет



Добрый день!
Разбираюсь с синтаксисом CREATE TABLE. В документации встретил вот такое определение команды:
Код

CREATE TABLE [[database_name.]schema_name.] table_name 
( { <column_definition> | <computed_column_definition> } [ <table_constraint> ] [ ,...n ] ) 
[ ON { 
  partition_scheme_name ( partition_column_name ) 
  | 
  filegroup_name
  | 
  "default" 
} ] 
[ { TEXTIMAGE_ON { filegroup_name | "default" } ] 
[ GO ]

<column_definition> ::=
column_name <data_type>
    [COLLATE collation_name] 
    [ NULL | NOT NULL ]
    [ [ CONSTRAINT constraint_name ] DEFAULT constant_expression ] 
    | 
    [ IDENTITY [ ( seed , increment ) ] [ NOT FOR REPLICATION ] ]
    [ ROWGUIDCOL ] [ <column_constraint> [ ...n ] ] 

<data_type> ::= 
[ type_schema_name . ] type_name 
    [ ( precision_num [ , scale_num ] | max_num | [ { CONTENT | DOCUMENT } ] xml_schema_collection_name ) ] 

<column_constraint> ::= 
[ CONSTRAINT constraint_name ] 
{     { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        [ 
            WITH FILLFACTOR = fillfactor  
          | WITH ( < index_option > [ , ...n ] ) 
          ]
        [ ON { partition_scheme_name ( partition_column_name ) 
            | filegroup_name | "default" } ]
  | [ FOREIGN KEY ] 
        REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ NOT FOR REPLICATION ] 
  | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
} 

<computed_column_definition> ::=
column_name AS computed_column_expression 
[ PERSISTED [ NOT NULL ] ]
[ 
    [ CONSTRAINT constraint_name ]
    { PRIMARY KEY | UNIQUE }
        [ CLUSTERED | NONCLUSTERED ]
        [ 
            WITH FILLFACTOR = fillfactor 
          | WITH ( <index_option> [ , ...n ] )
        ]
        [ ON { partition_scheme_name ( partition_column_name ) 
            | filegroup_name | "default" } ]
    | [ FOREIGN KEY ] 
        REFERENCES referenced_table_name [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE } ] 
        [ ON UPDATE { NO ACTION } ] 
        [ NOT FOR REPLICATION ] 
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
] 

< table_constraint > ::=
[ CONSTRAINT constraint_name ] 
{ 
    { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
                (column [ ASC | DESC ] [ ,...n ] ) 
        [ 
            WITH FILLFACTOR = fillfactor 
           |WITH ( <index_option> [ , ...n ] ) 
        ]
        [ ON { partition_scheme_name (partition_column_name)
            | filegroup_name | "default" } ] 
    | FOREIGN KEY 
                ( column [ ,...n ] ) 
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] 
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ NOT FOR REPLICATION ] 
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
} 

<index_option> ::=
{ 
    PAD_INDEX = { ON | OFF } 
  | FILLFACTOR = fillfactor 
  | IGNORE_DUP_KEY = { ON | OFF } 
  | STATISTICS_NORECOMPUTE = { ON | OFF } 
  | ALLOW_ROW_LOCKS = { ON | OFF} 
  | ALLOW_PAGE_LOCKS ={ ON | OFF} 
}


Что может входить в constant_expression в <column_definition>, fillfactor в <column_constraint>, computed_column_expression в <computed_column_definition>?
И в <column_definition> при перечислении <column_constraint> действительно должно быть [ <column_constraint> [ ...n ] ]  или все же [ <column_constraint> [ ,...n ] ] ? 
Возможно в определении синтаксиса есть еще какие-то ошибки?

Добавлено через 14 минут и 45 секунд
И, возможно, здесь
Код

CREATE TABLE [[database_name.]schema_name.] table_name 
( { <column_definition> | <computed_column_definition> } [ <table_constraint> ] [ ,...n ] ) 

нужно перенести фигурную скобку
Код

CREATE TABLE [[database_name.]schema_name.] table_name 
( { <column_definition> | <computed_column_definition> | <table_constraint> } [ ,...n ] ) 

?
PM MAIL   Вверх
keos
Дата 23.4.2010, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.4.2010

Репутация: нет
Всего: нет



В <computed_column_definition>
Код

[ ON UPDATE { NO ACTION } ] 

Нужны ли фигурные скобки?
PM MAIL   Вверх
Zloxa
Дата 23.4.2010, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 10
Всего: 161



я не совсем понимаю, вы собираетесь переписать документацию?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Zloxa
Дата 23.4.2010, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 10
Всего: 161



читаем,читаем
Цитата(keos @  23.4.2010,  10:50 Найти цитируемый пост)
нужно перенести фигурную скобку

Если фигурную скобку перенесем, получится, что constrait - обязательный элемент синтаксиса, и можно создать таблицу с одним лишь только констрейнтом а это не так.
Цитата(keos @  23.4.2010,  10:50 Найти цитируемый пост)
И в <column_definition> при перечислении <column_constraint> действительно должно быть [ <column_constraint> [ ...n ] ]  или все же [ <column_constraint> [ ,...n ] ] ? 

На один столбец можно повесить несколько констрейнтов и они не через запятую перечисляются

Цитата(keos @  23.4.2010,  10:50 Найти цитируемый пост)
constant_expression в <column_definition> 

Цитата

constant_expression
Константа, значение NULL или системная функция, используемая в качестве значения столбца по умолчанию.

Цитата(keos @  23.4.2010,  10:50 Найти цитируемый пост)
 fillfactor в <column_constraint>

Цитата

Пользовательские значения аргумента fillfactor могут находиться в диапазоне от 1 до 100.

Цитата(keos @  23.4.2010,  10:50 Найти цитируемый пост)
computed_column_expression в <computed_column_definition>

Цитата

computed_column_expression
Выражение, определяющее значение вычисляемого столбца. Вычисляемый столбец представляет собой виртуальный столбец, физически не хранящийся в таблице, если для него не установлен признак PERSISTED. Значение столбца вычисляется на основе выражения, использующего другие столбцы той же таблицы. Например, определение вычисляемого столбца может быть следующим: cost AS price * qty. Выражение может содержать имена невычисляемых столбцов, константы, функции и переменные, объединенные с помощью одного или нескольких операторов. Выражение не может быть вложенным запросом или содержать типы данных-псевдонимы.

Цитата(keos @  23.4.2010,  11:52 Найти цитируемый пост)
Нужны ли фигурные скобки? 

пожалуй - нет, смысла они не меняют, но и не искажают, что уже не плохо.


Это сообщение отредактировал(а) Zloxa - 23.4.2010, 13:47


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
keos
Дата 23.4.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.4.2010

Репутация: нет
Всего: нет



Нужно написать анализатор TSQL smile 
Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.