IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁(yè)數(shù)據(jù)庫(kù)Oracle → 解釋下SQL建表命令的意思

解釋下SQL建表命令的意思

時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(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ù)庫(kù)名稱database_name 必須是現(xiàn)有數(shù)據(jù)庫(kù)的名稱如果不指定數(shù)據(jù)庫(kù),database_name 默認(rèn)為當(dāng)前數(shù)據(jù)庫(kù)當(dāng)前連接的登錄必須在 database_name 所指定的數(shù)據(jù)庫(kù)中有關(guān)聯(lián)的現(xiàn)有用戶 ID,而該用戶 ID 必須具有創(chuàng)建表的權(quán)限

  owner

  是新表所有者的用戶 ID 名,owner 必須是 database_name 所指定的數(shù)據(jù)庫(kù)中的現(xiàn)有用戶 ID,owner 默認(rèn)為與 database_name 所指定的數(shù)據(jù)庫(kù)中的當(dāng)前連接相關(guān)聯(lián)的用戶 ID如果 CREATE TABLE 語(yǔ)句由 sysadmin 固定服務(wù)器角色成員或 database_name 所指定的數(shù)據(jù)庫(kù)中的 db_dbowner 或 db_ddladmin 固定數(shù)據(jù)庫(kù)角色成員執(zhí)行,則 owner 可以指定與當(dāng)前連接的登錄相關(guān)聯(lián)的用戶 ID 以外的其它用戶 ID如果與執(zhí)行 CREATE TABLE 語(yǔ)句的登錄相關(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)識(shí)符規(guī)則數(shù)據(jù)庫(kù)中的 owner.table_name 組合必須唯一table_name 最多可包含 128 個(gè)字符,但本地臨時(shí)表的表名(名稱前有一個(gè)編號(hào)符 #)最多只能包含 116 個(gè)字符

  column_name

  是表中的列名列名必須符合標(biāo)識(shí)符規(guī)則,并且在表內(nèi)唯一以 timestamp 數(shù)據(jù)類型創(chuàng)建的列可以省略 column_name如果不指定 column_name,timestamp 列的名稱默認(rèn)為 timestamp

  computed_column_expression

  是定義計(jì)算列值的表達(dá)式計(jì)算列是物理上并不存儲(chǔ)在表中的虛擬列計(jì)算列由同一表中的其它列通過(guò)表達(dá)式計(jì)算得到例如,計(jì)算列可以這樣定義:cost AS price * qty表達(dá)式可以是非計(jì)算列的列名、常量、函數(shù)、變量,也可以是用一個(gè)或多個(gè)運(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 語(yǔ)句的目標(biāo)

  說(shuō)明   表中計(jì)算列所使用的列值因行而異,因此每行的計(jì)算列值可能不同

  計(jì)算列的為空性是由 sql server 根據(jù)使用的表達(dá)式自動(dòng)確定的即使只有不可為空的列,大多數(shù)表達(dá)式的結(jié)果也認(rèn)為是可為空的,因?yàn)榭赡艿南乱缁蛞绯鲆矊⑸?NULL 結(jié)果使用 COLUMNPROPERTY 函數(shù)(AllowsNull 屬性)查看表中任何計(jì)算列的為空性通過(guò)指定 ISNULL(check_expression, constant),其中常量為替代任何 NULL 結(jié)果的非 NULL 值,可為空的表達(dá)式 expr 可以轉(zhuǎn)換為不可為空的表達(dá)式

  ON {filegroup | DEFAULT}

  指定存儲(chǔ)表的文件組數(shù)據(jù)庫(kù)中必須存在該文件組如果指定 DEFAULT,或者根本未指定 ON 參數(shù),則表存儲(chǔ)在默認(rèn)文件組中

  ON {filegroup | DEFAULT} 也可以在 PRIMARY KEY 約束或 UNIQUE 約束中指定這些約束會(huì)創(chuàng)建索引如果指定 filegroup,則索引將存儲(chǔ)在指定的文件組中如果指定 DEFAULT,則索引將存儲(chǔ)在默認(rèn)文件組中如果約束中沒(méi)有指定文件組,則索引將與表存儲(chǔ)在同一文件組中如果 PRIMARY KEY 約束或 UNIQUE 約束創(chuàng)建聚集索引,則表的數(shù)據(jù)頁(yè)將與索引存儲(chǔ)在同一文件組中

  說(shuō)明   在 ON {filegroup | DEFAULT} 和 TEXTIMAGE_ON {filegroup | DEFAULT} 的上下文中,DEFAULT 并不是關(guān)鍵字DEFAULT 是默認(rèn)文件組的標(biāo)識(shí)符并需對(duì)其進(jìn)行定界,如 ON \"DEFAULT\"、ON [DEFAULT] 和 TEXTIMAGE_ON \"DEFAULT\" 或 TEXTIMAGE_ON [DEFAULT]

  TEXTIMAGE_ON

  是表示 text、ntext 和 image 列存儲(chǔ)在指定文件組中的關(guān)鍵字如果表中沒(méi)有 text、ntext 或 image 列,則不能使用 TEXTIMAGE ON如果沒(méi)有指定 TEXTIMAGE_ON,則 text、ntext 和 image 列將與表存儲(chǔ)在同一文件組中

  data_type

  指定列的數(shù)據(jù)類型可以是系統(tǒng)數(shù)據(jù)類型或用戶定義數(shù)據(jù)類型用戶定義數(shù)據(jù)類型必須先用 sp_addtype 創(chuàng)建,然后才能在表定義中使用

  在 CREATE TABLE 語(yǔ)句中,用戶定義數(shù)據(jù)類型的 NULL/NOT NULL 賦值可被替代但長(zhǎng)度標(biāo)準(zhǔn)不能更改;不能在 CREATE TABLE 語(yǔ)句中指定用戶定義數(shù)據(jù)類型的長(zhǎng)度

  DEFAULT

  如果在插入過(guò)程中未顯式提供值,則指定為列提供的值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)識(shí)列當(dāng)向表中添加新行時(shí),Microsoft? SQL Server? 將為該標(biāo)識(shí)列提供一個(gè)唯一的、遞增的值標(biāo)識(shí)列通常與 PRIMARY KEY 約束一起用作表的唯一行標(biāo)識(shí)符可以將 IDENTITY 屬性指派給 tinyint、smallint、int、bigint、decimal(p,0) 或 numeric(p,0) 列對(duì)于每個(gè)表只能創(chuàng)建一個(gè)標(biāo)識(shí)列不能對(duì)標(biāo)識(shí)列使用綁定默認(rèn)值和 DEFAULT 約束必須同時(shí)指定種子和增量,或者二者都不指定如果二者都未指定,則取默認(rèn)值 (1,1)

  seed

  是裝入表的第一行所使用的值

  increment

  是添加到前一行的標(biāo)識(shí)值的增量值

  NOT FOR REPLICATION

  表示當(dāng)復(fù)制登錄(如 sqlrepl)向表中插入數(shù)據(jù)時(shí),不強(qiáng)制 IDENTITY 屬性復(fù)制的行必須保留發(fā)布數(shù)據(jù)庫(kù)中所賦予的鍵值;NOT FOR REPLICATION 子句確保不向復(fù)制進(jìn)程所插入的行賦予新的標(biāo)識(shí)值其它登錄所插入的行仍然具有以通常的方式創(chuàng)建的新標(biāo)識(shí)值建議同時(shí)使用具有 NOT FOR REPLICATION 的 CHECK 約束,以確保賦予的標(biāo)識(shí)值處于當(dāng)前數(shù)據(jù)庫(kù)所需的范圍內(nèi)

  ROWGUIDCOL

  表示新列是行的全局唯一標(biāo)識(shí)符列對(duì)于每個(gè)表只能指派一個(gè) uniqueidentifier 列作為 ROWGUIDCOL 列ROWGUIDCOL 屬性只能指派給 uniqueidentifier 列如果數(shù)據(jù)庫(kù)兼容級(jí)別小于或等于 65,則 ROWGUIDCOL 關(guān)鍵字無(wú)效有關(guān)更多信息,請(qǐng)參見(jiàn) sp_dbcmptlevel

  ROWGUIDCOL 屬性并不強(qiáng)制列中所存儲(chǔ)值的唯一性該屬性也不會(huì)為插入到表中的新行自動(dòng)生成值若要為每列生成唯一值,那么或者在 INSERT 語(yǔ)句中使用 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)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 Oracle中使用alter table來(lái)增加,刪除,修改列Oracle中使用alter table來(lái)增加,刪除,修改列oracle中使用SQL語(yǔ)句修改字段類型-oracle修oracle中使用SQL語(yǔ)句修改字段類型-oracle修使用低權(quán)限Oracle數(shù)據(jù)庫(kù)賬戶得到管理員權(quán)限使用低權(quán)限Oracle數(shù)據(jù)庫(kù)賬戶得到管理員權(quán)限Oracle對(duì)user的訪問(wèn)控制Oracle對(duì)user的訪問(wèn)控制

相關(guān)下載

人氣排行 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法ORACLE和SQL語(yǔ)法區(qū)別歸納(1)oracle grant 授權(quán)語(yǔ)句如何加速Oracle大批量數(shù)據(jù)處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權(quán)限