create-table-stmt:
column-def:
type-name:
column-constraint:
table-constraint:
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語句刪除表。