CREATE TABLE [IF NOT EXISTS] 資料表名稱 (
欄位名稱 [資料型態] [NULL | NULL] [AUTO_INCREMENT] [DEFAULT 預設值] [定義整合限制] ,
...,
PRIMARY KEY (欄位名稱, ... )
UNIQUE (欄位名稱, ... )
FOREIGN KEY (欄位名稱, ... ) REFERENCES 資料表(欄位名稱, ... )
[ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
[ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
CHECK(限制的檢查條件)
);
欄位名稱 [資料型態] [NULL | NULL] [AUTO_INCREMENT] [DEFAULT 預設值] [定義整合限制] ,
...,
PRIMARY KEY (欄位名稱, ... )
UNIQUE (欄位名稱, ... )
FOREIGN KEY (欄位名稱, ... ) REFERENCES 資料表(欄位名稱, ... )
[ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
[ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
CHECK(限制的檢查條件)
);
- SQL程式碼採用自由格式,不限制一行只接受多少個字元,也不限制如何斷行。
- [IF NOT EXISTS] :先確認資料表不存在,再予CREATE;可以不使用這個判斷選項。
- PRIMARY KEY:用來定義某一或某些欄位為主鍵,不可為空值
- UNIQUE:用來定義某一或某些欄位具有唯一的索引值,可以有空值
- FOREIGN KEY:用來定義某一或某些欄位為外部鍵
- REFERENCES 資料表(欄位名稱, ... ) :外鍵所要參考的資料表、資料欄位。
- [NULL | NOT NULL]:可以為空值(NULL)、不可為空值(NOT NULL)選其中一項,或都不選。
- [AUTO_INCREMENT]:當資料型態宣告為INT整數時,如果使用[AUTO_INCREMENT]選項,當新增一筆資料時,該欄位資料,會自動加一作為該欄位的資料值。
- [ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]:可使用或不使用ON DELETE,但選用後,必須選用{NO ACTION | CASCADE | SET DEFAULT | SET NULL}的其中一項。
- CHECK 用來額外的檢查條件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | CREATE TABLE [Artist] ( [ArtistId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, [Name] NVARCHAR(120) ); CREATE TABLE [Album] ( [AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, [Title] NVARCHAR(160) NOT NULL, [ArtistId] INTEGER NOT NULL, FOREIGN KEY ([ArtistId]) REFERENCES [Artist] ([ArtistId]) ON DELETE NO ACTION ON UPDATE NO ACTION ); |
參考資料:
- SQL As Understood By SQLite : CREATE TABLE
https://sqlite.org/lang_createtable.html - CREATE TABLE (Transact-SQL)
https://docs.microsoft.com/zh-tw/sql/t-sql/statements/create-table-transact-sql?view=sql-server-2017