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