在本教學中,將學習如何使用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 NULL
和UNIQUE
約束。
如果約束包含多個列,則使用表約束。 例如,如果表的主鍵包含兩列,則在這種情況下,必須使用PRIMARY KEY
表約束。
假設需要將員工的培訓資料儲存在資料庫中,並要求每個員工可以接受零或多個培訓課程,並且每個培訓課程可以由零個或多個員工進行。
在檢視了當前資料庫後,發現沒有地方儲存此資訊,因此建立一個新的表。
以下語句建立課程表:
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_name VARCHAR(50) NOT NULL
);
courses
表有兩列:course_id
和course_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_id
和course_id
,所以必須使用PRIMARY KEY
表約束。
在本教學中,您學習了如何使用SQL CREATE TABLE
語句在資料庫中建立新表。