SQL CREATE TABLE

摘要:在本教學中,您將學習如何使用 SQL CREATE TABLE 陳述式來建立新表格。

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
);Code language: SQL (Structured Query Language) (sql)

建立新表格所需的最少資訊是表格名稱和欄位名稱。

table_name 指定的表格名稱在資料庫中必須是唯一的。 如果您建立的表格名稱與已存在的表格名稱相同,資料庫系統將會發出錯誤。

CREATE TABLE 陳述式中,您指定以逗號分隔的欄位定義清單。 每個欄位定義都包含欄位名稱、欄位的資料類型、預設值以及一個或多個欄位約束。

欄位的資料類型指定該欄位可以儲存的資料類型。 欄位的資料類型可以是數值、字元、日期等。

欄位約束控制可以在欄位中儲存哪種值。 例如,NOT NULL 約束確保該欄位不包含任何 NULL 值。

一個欄位可能有多個欄位約束。 例如,users 表格的 username 欄位可以同時具有 NOT NULLUNIQUE 約束。

如果約束包含多個欄位,您可以使用表格約束。 例如,如果表格的主鍵由兩個欄位組成,在這種情況下,您必須使用 PRIMARY KEY 表格約束。

SQL CREATE TABLE 範例

假設您必須將員工的訓練資料儲存在資料庫中,要求每個員工可能修習零或多個訓練課程,並且每個訓練課程可能被零或多個員工修習。

您查看了目前的資料庫,發現沒有地方可以儲存此資訊,因此您決定建立新表格。

以下陳述式建立 courses 表格

CREATE TABLE courses (
    course_id INT AUTO_INCREMENT PRIMARY KEY,
    course_name VARCHAR(50) NOT NULL
);Code language: SQL (Structured Query Language) (sql)

試試看

SQL CREATE TABLE - courses table

courses 表格有兩個欄位:course_idcourse_name

course_idcourses 表格的主鍵欄位。 每個表格都有一個且只有一個主鍵,用於唯一識別表格中的每一列。 為每個表格定義主鍵是一個好習慣。

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)
);Code language: SQL (Structured Query Language) (sql)

試試看

SQL CREATE TABLE - trainings table

trainings 表格由三個欄位組成

  • employee_id 欄位儲存修習課程的員工 ID。
  • course_id 欄位儲存員工修習的課程。
  • taken_date 欄位儲存員工修習課程的日期。

由於 trainings 表格的主鍵由兩個欄位組成:employee_idcourse_id,因此我們必須使用 PRIMARY KEY 表格約束。

在本教學中,您已經學習如何使用 SQL CREATE TABLE 陳述式在資料庫中建立新表格。

這個教學有幫助嗎?