SQL Create Table


在本教學中,將學習如何使用SQL CREATE TABLE語句來建立新表。

1. SQL CREATE TABLE語句簡介

到目前為止,我們已經了解了資料庫中的表是什麼。現在,是時候學習如何建立表了。

表是儲存在資料庫中的資料集合。 表由列和行組成。 要建立新表,請使用具有以下語法的CREATE TABLE語句:

CREATE TABLE table_name(
     column_name_1 data_type default value column_constraint,
     column_name_2 data_type default value column_constraint,
     ...,
     table_constraint
);

建立新表所需的最低資訊是表名和列名。
table_name指定的表名在資料庫中必須是唯一的。 如果建立的表的名稱與已存在的表相同,則資料庫系統將發出錯誤。
CREATE TABLE語句中,指定以逗號分隔的列定義列表。每個列定義由列名,列的資料型別,預設值和一個或多個列約束組成。
列的資料型別指定列可以儲存的資料型別。 列的資料型別可以是數位,字元,日期等。
列約束控制可以儲存在列中的值的型別。 例如,NOT NULL約束確保列不包含NULL值。

列可能有多個列約束。 例如,users表的username列可以同時具有NOT NULLUNIQUE約束。
如果約束包含多個列,則使用表約束。 例如,如果表的主鍵包含兩列,則在這種情況下,必須使用PRIMARY KEY表約束。

SQL CREATE TABLE範例

假設需要將員工的培訓資料儲存在資料庫中,並要求每個員工可以接受零或多個培訓課程,並且每個培訓課程可以由零個或多個員工進行。

在檢視了當前資料庫後,發現沒有地方儲存此資訊,因此建立一個新的表。

以下語句建立課程表:

CREATE TABLE courses (
    course_id INT AUTO_INCREMENT PRIMARY KEY,
    course_name VARCHAR(50) NOT NULL
);

courses表有兩列:course_idcourse_name
course_id是課程表的主鍵列。 每個表都有一個且只有一個主鍵,用於唯一標識表中的每一行。

註:為每個表定義主鍵是一個好習慣。

course_id的資料型別是整數,由INT關鍵字表示。 此外,course_id列的值為AUTO_INCREMENT。表示當在courses表中插入新行而不提供course_id列的值時,資料庫系統將為該列生成一個整數值。
course_name儲存課程名稱。 其資料型別是最大長度為50的字串(VARCHAR)。NOT NULL約束確保course_name列中不儲存NULL值。

現在有了儲存課程資料的表。 要儲存訓練資料,請按如下方式建立名為training的新表。

CREATE TABLE trainings (
    employee_id INT,
    course_id INT,
    taken_date DATE,
    PRIMARY KEY (employee_id , course_id)
);

trainings表包含三列:

  • employee_id列儲存參加課程的員工的ID。
  • course_id列儲存員工所採用的課程。
  • taken_date列儲存員工參加課程的日期。

因為trainings表的主鍵由兩列組成:employee_idcourse_id,所以必須使用PRIMARY KEY表約束。

在本教學中,您學習了如何使用SQL CREATE TABLE語句在資料庫中建立新表。