2021-01-23

SQL : CREATE TABLE語法(Syntax)格式

SQL : CREATE TABLE語法(Syntax)格式:

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(限制的檢查條件)
);
  1. SQL程式碼採用自由格式,不限制一行只接受多少個字元,也不限制如何斷行。
  2.  [IF NOT EXISTS] :先確認資料表不存在,再予CREATE;可以不使用這個判斷選項。
  3. PRIMARY KEY:用來定義某一或某些欄位為主鍵,不可為空值
  4. UNIQUE:用來定義某一或某些欄位具有唯一的索引值,可以有空值
  5. FOREIGN KEY:用來定義某一或某些欄位為外部鍵
  6. REFERENCES 資料表(欄位名稱, ... ) :外鍵所要參考的資料表、資料欄位。
  7. [NULL | NOT NULL]:可以為空值(NULL)、不可為空值(NOT NULL)選其中一項,或都不選。
  8. [AUTO_INCREMENT]:當資料型態宣告為INT整數時,如果使用[AUTO_INCREMENT]選項,當新增一筆資料時,該欄位資料,會自動加一作為該欄位的資料值。
  9.  [ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]:可使用或不使用ON DELETE,但選用後,必須選用{NO ACTION | CASCADE | SET DEFAULT | SET NULL}的其中一項。
  10. CHECK 用來額外的檢查條件
CREATE TABLE的SQL範例:
 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
);

參考資料:
  1. SQL As Understood By SQLite : CREATE TABLE
    https://sqlite.org/lang_createtable.html 
  2. CREATE TABLE (Transact-SQL) 
    https://docs.microsoft.com/zh-tw/sql/t-sql/statements/create-table-transact-sql?view=sql-server-2017