首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL CREATE TABLE 深度解析:完整語法與選項詳解

     編輯:MySQL 資料庫相關知識

前言

CREATE TABLE 是資料庫物件建立的核心指令,其語法選項極為豐富。本文詳細拆解每一個子句的功能與使用時機。

一、基本語法架構

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name 
    [(create_definition,...)] 
    [table_options] 
    [select_statement]

二、關鍵選項說明

TEMPORARY:暫存表

  • 僅在當前連線有效,連線結束自動刪除。
  • 主要用於預存程序中繼運算;MySQL 早期不支援預存程序較少使用。

IF NOT EXISTS:避免重複建立錯誤

  • 僅當表不存在時才建立,防止腳本重複執行報錯。

tbl_name:資料表命名規範

  • 建議僅使用英數字與底線,如 titles、our_sales、my_user1。

三、欄位定義核心:create_definition

col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
    [PRIMARY KEY] [reference_definition]
    -- 或表級約束:
    PRIMARY KEY (index_col_name,...)
    KEY [index_name] (index_col_name,...)
    INDEX [index_name] (index_col_name,...)
    UNIQUE [INDEX] [index_name] (index_col_name,...)
    [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...) [reference_definition]
    CHECK (expr)

詳細屬性解析

屬性說明
col_name欄位名稱,表內唯一,符合識別符規則
type資料類型(部分需指定長度),詳見「MySQL 列類型篇」
NOT NULL | NULL是否允許空值,預設為 NULL
DEFAULT指定預設值。數值型預設 0;AUTO_INCREMENT 為下一序號;時間型為「零值」;字串型為空字串;ENUM 為第一個枚舉值
AUTO_INCREMENT自動遞增,僅限整數型,每表僅能有一個,且必須建立索引
PRIMARY KEY主鍵約束,隱含 NOT NULL + UNIQUE
FOREIGN KEY外鍵約束,需參考父表主鍵(InnoDB 引擎支援)
CHECK檢查約束(MySQL 8.0.16+ 開始強制執行)

四、表級選項 table_options(常用)

  • ENGINE=InnoDB/MyISAM/MEMORY... 指定儲存引擎
  • CHARSET=utf8mb4 設定字元集
  • COMMENT='表說明' 加入備註
  • AUTO_INCREMENT=1000 設定自增起始值

五、SELECT 結尾建表:CTAS

CREATE TABLE new_table SELECT * FROM old_table WHERE ...;

可快速複製表結構與資料,但不會複製索引、主鍵、AUTO_INCREMENT 等約束,需事後補加。

小結

精通 CREATE TABLE 所有選項,能建立符合業務規則、效能優化且易於維護的資料結構。建議搭配 SHOW CREATE TABLE 表名 反向查看實際生成的 DDL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved