SQLite:CREATE TABLE

create-table-stmt:

syntax diagram create-table-stmt

column-def:

syntax diagram column-def

type-name:

syntax diagram type-name

column-constraint:

syntax diagram column-constraint

table-constraint:

syntax diagram table-constraint

foreign-key-clause:

syntax diagram foreign-key-clause

“CREATE TABLE”命令用來創建一個SQLite數據庫中的一個新表。 一個CREATE TABLE命令用來指定新表中的下列屬性:

  • 新表的名稱。

  • 創建新表的數據庫 表格可創建在主數據庫,臨時數據庫,或在任何附加的數據庫中。

  • 表中的每一列的名稱。

  • 表中的每一列的聲明類型。

  • 表中的每一列的默認值或表達式。

  • 表的默認排序方式。

  • 一個表的主鍵, 無論是單個列或是複合(多列)主鍵。

  • 表的約束。 SQLite支持UNIQUE, NOT NULL, CHECK以及FOREIGN KEY約束。

每個CREATE TABLE語句中必須指定一個新表的名稱。 表名以“sqlite_”開始的預留爲內部使用。 嘗試創建一個表的名稱以“sqlite_”開始的表是一個錯誤。

如果一個<database-name>已經被指定,則它必須不可以是"main", "temp",或一個附加的數據庫的名稱。 在這種情況下,新表纔會被創建在指定的數據庫中。 如果"TEMP" or "TEMPORARY" 關鍵字出現在 "CREATE" 和"TABLE"之間,那麼新表將會創建在臨時數據庫。 指定<database-name>,並且出現TEMP或TEMPORARY關鍵字是錯誤的,除非<database-name>是“temp”。 如果沒有指定數據庫名稱並且TEMP關鍵字不存在,那麼該表是建立在主數據庫中的。

嘗試創建一個與數據庫中已經存在一個表、索引或視圖同名的新表,通常是錯誤的。但是,如果CREATE TABLE語句中存在“IF NOT EXISTS”子句,表或視圖的名稱已經存在,CREATE TABLE命令則根本沒有效果(並且不會返回錯誤消息)。 但是即使是“IF NOT EXISTS”子句已被指定,當數據庫中存在同名索引時,新表仍然無法創建,同時返回一個錯誤消息。

可以創建一個和現有的觸發器同名的新表,這不是一個錯誤

可以使用DROP TABLE語句刪除表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章