CREATE 表

最多 200 万多个表。表的列数为 1-1024 个。

CREATE TABLE
   [ database_name.[owner].| owner. ] table_name
   (
      {  <column_definition>
         | column_name AS computed_column_expression
         | <table_constraint>
      } [,...]
   ) 
   [ ON { filegroup | DEFAULT } ] 
   [ TEXTIMAGE_ON { filegroup | DEFAULT } ] 
参数 意义
computed_column_expression 将表达式的值作为列值

定义一个列(字段)

<column_definition> ::= 
{ column_name data_type }
   [ COLLATE <collation_name> ]
   [
      [ DEFAULT constant_expression ] | [ IDENTITY [ (seed, increment) [ NOT FOR REPLICATION ] ]
   ]
}
[ ROWGUIDCOL ]
[ <column_constraint> ] [ ... ]
参数 意义
column_name 自定义的字段名
collation_name 排序规则
constant_expression 设置列的默认值表达式
IDENTITY 设置列为自动编号,数字型字段
seed 自动编号起始值,默认为 1
increment 自动编号间隔值,默认为 1
NOT FOR REPLICATION 从其他表中复制的数据插入到表中时不发生作用
ROWGUIDCOL 设置列为全局唯一标识符列

定义列约束(主键,索引)

<column_constraint> ::= 列约束
[ CONSTRAINT constraint_name ]
{
   [ NULL | NOT NULL ]
   | [ { PRIMARY KEY | UNIQUE }
       [ CLUSTERED | NONCLUSTERED ]
       [ WITH FILLFACTOR = fillfactor ]
       [ON {filegroup | DEFAULT} ] ]
     ] 
   | [
      [ FOREIGN KEY ]
      REFERENCES ref_table [ ( ref_column ) ]
      [ ON DELETE { CASCADE | NO ACTION } ]
      [ ON UPDATE { CASCADE | NO ACTION } ]
      [ NOT FOR REPLICATION ]
     ] 
   | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
} 
参数 意义
constraint_name 自定义的约束名,可选
NULL 允许空值
PRIMARY KEY 主键约束(唯一值、每表最多一个)
UNIQUE 唯一值约束
CLUSTERED  聚簇索引(每表最多一个)
fillfactor  存储索引数据时每个索引页的充满程度
FOREIGN KEY 外键约束
REFERENCES 引用外部表字段
ON DELETE 在父表中删除该行所引用的行时
ON UPDATE 在父表中更改该行所引用的行时
CASCADE 引用表中引用行也进行相应操作
NO ACTION 使操作无法进行
CHECK 检查约束,必须满足条件
NOT FOR REPLICATION 是用于防止在复制所使用的分发过程中强制约束
logical_expression 逻辑表达式,返回 TRUE 或 FALSE

定义表约束(主键、外键、索引)

<table_constraint> ::= 表约束
[ CONSTRAINT constraint_name ]
{
   [  { PRIMARY KEY | UNIQUE }
         [ CLUSTERED | NONCLUSTERED ]
      { ( column [ ASC | DESC ] [ ,...n ] ) }
      [ WITH FILLFACTOR = fillfactor ]
      [ ON { filegroup | DEFAULT } ]
   ] 
   | FOREIGN KEY           [ ( column     [ ,...n ] ) ]
      REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
      [ ON DELETE { CASCADE | NO ACTION } ]
      [ ON UPDATE { CASCADE | NO ACTION } ]
      [ NOT FOR REPLICATION ]
   | CHECK [ NOT FOR REPLICATION ] ( search_conditions ) 
}
参数 意义
   

table_constraint 表约束分解

主关键字约束:

CONSTRAINT constraint_name

   PRIMARY KEY [CLUSTERED | NONCLUSTERED]

   (column_name1[, ... ,column_name16])

外关键字约束:

CONSTRAINT constraint_name

   FOREIGN KEY(column_name1 [, ... ,column_name16]])

   REFERENCES ref_table[( column_name1 [, ... ,column_name16] )]

   [ON DELETE { CASCADE | NO ACTION } ]

   [ON UPDATE { CASCADE | NO ACTION } ]

   [NOT FOR REPLICATION]

唯一性约束:

CONSTRAINT constraint_name

   UNIQUE [CLUSTERED | NONCLUSTERED]

   (column_name1 [, ... ,column_name16])

参数 意义
ref_table 数据库,默认为当前
ON DELETE CASCADE 母表记录删除时,子表关联记录也被删除
ON DELETE NO ACTION 母表记录删除时,产生错误,默认
ON UPDATE ... 母表记录更新时,同上