時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
CREATE TABLE
[ database_name.[ owner ] .| owner.] table_name
( { < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] }
| [ { PRIMARY KEY | UNIQUE } [ ,...n ]
)
[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]
< column_definition > ::= { column_name data_type }
[ COLLATE < collation_name > ]
[ [ DEFAULT constant_expression ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL]
[ < column_constraint > ] [ ...n ]
< 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 )
}
< 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 )
}
最佳答案:
參數(shù)
database_name
是要在其中創(chuàng)建表的數(shù)據(jù)庫名稱database_name 必須是現(xiàn)有數(shù)據(jù)庫的名稱如果不指定數(shù)據(jù)庫,database_name 默認為當前數(shù)據(jù)庫當前連接的登錄必須在 database_name 所指定的數(shù)據(jù)庫中有關聯(lián)的現(xiàn)有用戶 ID,而該用戶 ID 必須具有創(chuàng)建表的權限
owner
是新表所有者的用戶 ID 名,owner 必須是 database_name 所指定的數(shù)據(jù)庫中的現(xiàn)有用戶 ID,owner 默認為與 database_name 所指定的數(shù)據(jù)庫中的當前連接相關聯(lián)的用戶 ID如果 CREATE TABLE 語句由 sysadmin 固定服務器角色成員或 database_name 所指定的數(shù)據(jù)庫中的 db_dbowner 或 db_ddladmin 固定數(shù)據(jù)庫角色成員執(zhí)行,則 owner 可以指定與當前連接的登錄相關聯(lián)的用戶 ID 以外的其它用戶 ID如果與執(zhí)行 CREATE TABLE 語句的登錄相關聯(lián)的用戶 ID 僅具有創(chuàng)建表的權限,則 owner 必須指定與當前登錄相關聯(lián)的用戶 IDsysadmin 固定服務器角色成員或別名為 dbo 用戶的登錄與用戶 ID dbo 相關聯(lián);因此,由這些用戶創(chuàng)建的表的默認所有者為 dbo不是由上述兩種角色的登錄創(chuàng)建的表所有者默認為與該登錄相關聯(lián)的用戶 ID
table_name
是新表的名稱表名必須符合標識符規(guī)則數(shù)據(jù)庫中的 owner.table_name 組合必須唯一table_name 最多可包含 128 個字符,但本地臨時表的表名(名稱前有一個編號符 #)最多只能包含 116 個字符
column_name
是表中的列名列名必須符合標識符規(guī)則,并且在表內(nèi)唯一以 timestamp 數(shù)據(jù)類型創(chuàng)建的列可以省略 column_name如果不指定 column_name,timestamp 列的名稱默認為 timestamp
computed_column_expression
是定義計算列值的表達式計算列是物理上并不存儲在表中的虛擬列計算列由同一表中的其它列通過表達式計算得到例如,計算列可以這樣定義:cost AS price * qty表達式可以是非計算列的列名、常量、函數(shù)、變量,也可以是用一個或多個運算符連接的上述元素的任意組合表達式不能為子查詢
計算列可用于選擇列表、WHERE 子句、ORDER BY 子句或任何其它可使用常規(guī)表達式的位置,但下列情況除外:
計算列不能用作 DEFAULT 或 FOREIGN KEY 約束定義,也不能與 NOT NULL 約束定義一起使用但是,如果計算列由具有確定性的表達式定義,并且索引列中允許計算結果的數(shù)據(jù)類型,則可將該列用作索引中的鍵列,或用作 PRIMARY KEY 或 UNIQUE 約束的一部分
例如,如果表中含有整型列 a 和 b,則可以在計算列 a+b 上創(chuàng)建索引但不能在計算列 a+DATEPART(dd, GETDATE()) 上創(chuàng)建索引,因為在以后的調(diào)用中,其值可能發(fā)生改變
計算列不能作為 INSERT 或 UPDATE 語句的目標
說明?? 表中計算列所使用的列值因行而異,因此每行的計算列值可能不同
計算列的為空性是由 SQL Server 根據(jù)使用的表達式自動確定的即使只有不可為空的列,大多數(shù)表達式的結果也認為是可為空的,因為可能的下溢或溢出也將生成 NULL 結果使用 COLUMNPROPERTY 函數(shù)(AllowsNull 屬性)查看表中任何計算列的為空性通過指定 ISNULL(check_expression, constant),其中常量為替代任何 NULL 結果的非 NULL 值,可為空的表達式 expr 可以轉(zhuǎn)換為不可為空的表達式
ON {filegroup | DEFAULT}
指定存儲表的文件組數(shù)據(jù)庫中必須存在該文件組如果指定 DEFAULT,或者根本未指定 ON 參數(shù),則表存儲在默認文件組中
ON {filegroup | DEFAULT} 也可以在 PRIMARY KEY 約束或 UNIQUE 約束中指定這些約束會創(chuàng)建索引如果指定 filegroup,則索引將存儲在指定的文件組中如果指定 DEFAULT,則索引將存儲在默認文件組中如果約束中沒有指定文件組,則索引將與表存儲在同一文件組中如果 PRIMARY KEY 約束或 UNIQUE 約束創(chuàng)建聚集索引,則表的數(shù)據(jù)頁將與索引存儲在同一文件組中
說明?? 在 ON {filegroup | DEFAULT} 和 TEXTIMAGE_ON {filegroup | DEFAULT} 的上下文中,DEFAULT 并不是關鍵字DEFAULT 是默認文件組的標識符并需對其進行定界,如 ON \"DEFAULT\"、ON [DEFAULT] 和 TEXTIMAGE_ON \"DEFAULT\" 或 TEXTIMAGE_ON [DEFAULT]
TEXTIMAGE_ON
是表示 text、ntext 和 image 列存儲在指定文件組中的關鍵字如果表中沒有 text、ntext 或 image 列,則不能使用 TEXTIMAGE ON如果沒有指定 TEXTIMAGE_ON,則 text、ntext 和 image 列將與表存儲在同一文件組中
data_type
指定列的數(shù)據(jù)類型可以是系統(tǒng)數(shù)據(jù)類型或用戶定義數(shù)據(jù)類型用戶定義數(shù)據(jù)類型必須先用 sp_addtype 創(chuàng)建,然后才能在表定義中使用
在 CREATE TABLE 語句中,用戶定義數(shù)據(jù)類型的 NULL/NOT NULL 賦值可被替代但長度標準不能更改;不能在 CREATE TABLE 語句中指定用戶定義數(shù)據(jù)類型的長度
DEFAULT
如果在插入過程中未顯式提供值,則指定為列提供的值DEFAULT 定義可適用于除定義為 timestamp 或帶 IDENTITY 屬性的列以外的任何列除去表時,將刪除 DEFAULT 定義只有常量值(如字符串)、系統(tǒng)函數(shù)(如 SYSTEM_USER())或 NULL 可用作默認值為保持與 SQL Server 早期版本的兼容,可以給 DEFAULT 指派約束名
constant_expression
是用作列的默認值的常量、NULL 或系統(tǒng)函數(shù)
IDENTITY
表示新列是標識列當向表中添加新行時,Microsoft? SQL Server? 將為該標識列提供一個唯一的、遞增的值標識列通常與 PRIMARY KEY 約束一起用作表的唯一行標識符可以將 IDENTITY 屬性指派給 tinyint、smallint、int、bigint、decimal(p,0) 或 numeric(p,0) 列對于每個表只能創(chuàng)建一個標識列不能對標識列使用綁定默認值和 DEFAULT 約束必須同時指定種子和增量,或者二者都不指定如果二者都未指定,則取默認值 (1,1)
seed
是裝入表的第一行所使用的值
increment
是添加到前一行的標識值的增量值
NOT FOR REPLICATION
表示當復制登錄(如 sqlrepl)向表中插入數(shù)據(jù)時,不強制 IDENTITY 屬性復制的行必須保留發(fā)布數(shù)據(jù)庫中所賦予的鍵值;NOT FOR REPLICATION 子句確保不向復制進程所插入的行賦予新的標識值其它登錄所插入的行仍然具有以通常的方式創(chuàng)建的新標識值建議同時使用具有 NOT FOR REPLICATION 的 CHECK 約束,以確保賦予的標識值處于當前數(shù)據(jù)庫所需的范圍內(nèi)
ROWGUIDCOL
表示新列是行的全局唯一標識符列對于每個表只能指派一個 uniqueidentifier 列作為 ROWGUIDCOL 列ROWGUIDCOL 屬性只能指派給 uniqueidentifier 列如果數(shù)據(jù)庫兼容級別小于或等于 65,則 ROWGUIDCOL 關鍵字無效有關更多信息,請參見 sp_dbcmptlevel
ROWGUIDCOL 屬性并不強制列中所存儲值的唯一性該屬性也不會為插入到表中的新行自動生成值若要為每列生成唯一值,那么或者在 INSERT 語句中使用 NEWID 函數(shù),或者將 NEWID 函數(shù)指定為該列的默認值
collation_name
指定列的排序規(guī)則排序規(guī)則名稱既可以是 Windows 排序規(guī)則名稱,也可以是 SQL 排序規(guī)則名稱collation_name 僅適用于數(shù)據(jù)類
關鍵詞標簽:SQL
相關閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務器設置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法