SQL - 建立表



本教程將教你如何使用 SQL 在 RDBMS 中建立表。我們使用 **CREATE TABLE 命令** 在資料庫中建立一個表。

在 RDBMS 中,資料庫表用於以某種結構(欄位和記錄)的形式儲存資料。這裡,**欄位** 是定義要儲存在表中的資料型別的列,而 **記錄** 是包含實際資料的行。簡單來說,我們可以說表是行和列的組合。

SQL 提供各種查詢,以便以方便的方式與資料互動。我們可以使用 SQL 語句建立和刪除表,以及插入、更新和刪除這些表中的資料。

有關與 RDBMS 相關的不同概念的更多詳細資訊,請檢視 RDBMS 概念 教程。

SQL CREATE TABLE 語句

SQL 提供 CREATE TABLE 語句來在給定資料庫中建立一個新表。建立表的 SQL 查詢必須定義表的結構。該結構包括表名以及表中列的名稱,以及每列的資料型別。請注意,每個表在資料庫中都必須具有唯一的名稱。

語法

CREATE TABLE 語句用於在資料庫中建立新表。

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

以下是關鍵點:

  • CREATE TABLE 是告訴資料庫系統您想要做什麼的關鍵字。在本例中,您想要建立一個新表。表的唯一名稱或識別符號位於 CREATE TABLE 語句之後。
  • 列引數(例如 column1、column2、column3 等)指定表的列名。
  • 資料型別引數指定列可以容納的資料型別(例如整數、varchar、字串等)。
  • PRIMARY KEY 約束唯一標識表中的每條記錄。主鍵必須包含唯一值,並且不能包含 NULL 值。

示例:在 SQL 中建立表

CREATE TABLE CUSTOMERS(
   ID          INT NOT NULL,
   NAME        VARCHAR (20) NOT NULL,
   AGE         INT NOT NULL,
   ADDRESS     CHAR (25),
   SALARY      DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

以下是關鍵點:

  • 以下程式碼塊是一個示例,它建立一個 CUSTOMERS 表,列名為 ID、NAME、AGE、ADDRESS 和 SALARY,並將 ID 作為主鍵。
  • NOT NULL 是約束條件,表示在建立此表中的記錄時,這些欄位不能為 NULL。

驗證

建立表後,您可以檢查它是否已成功建立。您可以使用 SQL **DESC table_name** 命令列出表的描述,如下所示

DESC CUSTOMERS;

這將顯示建立的表的結構:列名、各自的資料型別、約束(如有)等。

欄位 型別 Null 預設值 額外
ID int(11) PRI NULL
NAME varchar(20) NULL
AGE int(11) NULL
ADDRESS char(25) NULL
SALARY decimal(18,2) NULL

現在,您的資料庫中已經有了一個 CUSTOMERS 表,您可以使用它來儲存與客戶相關的所需資訊。

SQL CREATE TABLE IF NOT EXISTS

考慮這樣一種情況:您將嘗試建立一個已經存在的表,在這種情況下,MySQL 將丟擲以下錯誤。

ERROR 1050 (42S01): Table 'CUSTOMERS' already exists

因此,為了避免此類錯誤,我們可以使用 SQL 命令 **CREATE TABLE IF NOT EXISTS** 來建立表。

語法

以下是 CREATE TABLE IF NOT EXISTS 語句的基本語法:

CREATE TABLE IF NOT EXISTS table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

示例:建立表(如果不存在)

以下 SQL 命令僅在不存在同名表時才建立 **CUSTOMERS** 表,否則它將退出而不會出現任何錯誤。

CREATE TABLE IF NOT EXISTS CUSTOMERS(
   ID          INT NOT NULL,
   NAME        VARCHAR (20) NOT NULL,
   AGE         INT NOT NULL,
   ADDRESS     CHAR (25),
   SALARY      DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

從現有表建立表

無需每次都建立新表,也可以將現有表及其內容(包括其結構)複製到新表中。這可以使用 CREATE TABLE 語句和 SELECT 語句的組合來完成。由於複製了其結構,因此新表將具有與原始表相同的列定義。此外,將使用舊錶中的現有值填充新表。

語法

從另一個表建立表的基本語法如下:

CREATE TABLE NEW_TABLE_NAME AS
SELECT [column1, column2...columnN]
FROM EXISTING_TABLE_NAME
WHERE Condition;

這裡,column1、column2…是現有表的欄位,並將用於建立新表的欄位。

示例:從現有表建立表

以下是一個示例,它將使用 CUSTOMERS 表建立一個 SALARY 表,幷包含客戶 ID 和客戶 SALARY 欄位:

CREATE TABLE SALARY AS
SELECT ID, SALARY
FROM CUSTOMERS;

這將建立一個新的 SALARY 表,該表將具有以下結構:

欄位 型別 Null 預設值 額外
ID int(11) PRI NULL
SALARY decimal(18,2) NULL
廣告