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

MySQL 創建與刪除數據表完全指南:SQL 語法、命令行與 PHP 實戰

     編輯:MySQL 資料庫相關知識

CREATE TABLE 核心語法

CREATE TABLE table_name (
    col1 data_type [constraints],
    col2 data_type [constraints],
    ...
    [table_constraints]
) ENGINE=storage_engine DEFAULT CHARSET=charset COLLATE=collation;

關鍵列屬性詳解

屬性含義示例
NOT NULL禁止 NULL 值name VARCHAR(20) NOT NULL
AUTO_INCREMENT自增整數,通常用於主鍵id INT UNSIGNED AUTO_INCREMENT
PRIMARY KEY主鍵約束,唯一+非空PRIMARY KEY (id) 或 id INT PRIMARY KEY
DEFAULT默認值status TINYINT DEFAULT 1
UNIQUE唯一約束,允許單個 NULLemail VARCHAR(100) UNIQUE
COMMENT列註釋score INT COMMENT '考試分數'

完整建表示例

CREATE TABLE tutorials (
    tutorial_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    tutorial_title VARCHAR(100) NOT NULL,
    tutorial_author VARCHAR(40) NOT NULL,
    submission_date DATE,
    PRIMARY KEY (tutorial_id),
    INDEX idx_author (tutorial_author),
    UNIQUE KEY uk_title (tutorial_title)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='教程表';

命令行創建表實戰

mysql -u root -p
USE testdb;
CREATE TABLE tutorials (
    tutorial_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    tutorial_title VARCHAR(100) NOT NULL,
    tutorial_author VARCHAR(40) NOT NULL,
    submission_date DATE,
    PRIMARY KEY (tutorial_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

PHP 腳本創建表 (mysqli)

<?php
$mysqli = new mysqli('localhost', 'root', 'pass', 'testdb');
if ($mysqli->connect_errno) die('Connect failed: ' . $mysqli->connect_error);

$sql = "CREATE TABLE tutorials (
    tutorial_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    tutorial_title VARCHAR(100) NOT NULL,
    tutorial_author VARCHAR(40) NOT NULL,
    submission_date DATE,
    PRIMARY KEY (tutorial_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";

if ($mysqli->query($sql) === TRUE) {
    echo 'Table created successfully';
} else {
    echo 'Error: ' . $mysqli->error;
}
$mysqli->close();
?>

DROP TABLE 刪除表

-- 基礎刪除
DROP TABLE tutorials;

-- 安全刪除(不存在不報錯)
DROP TABLE IF EXISTS tutorials;

-- 批量刪除
DROP TABLE t1, t2, t3;

命令行刪除表

mysql -u root -p
USE testdb;
DROP TABLE tutorials;
-- Query OK, 0 rows affected (0.08 sec)

PHP 腳本刪除表

<?php
$mysqli = new mysqli('localhost', 'root', 'pass', 'testdb');
$sql = 'DROP TABLE IF EXISTS tutorials';
if ($mysqli->query($sql) === TRUE) {
    echo 'Table deleted successfully';
} else {
    echo 'Error: ' . $mysqli->error;
}
$mysqli->close();
?>

存儲引擎選擇指南

引擎事務行鎖外鍵適用場景
InnoDB✅✅✅核心業務、高併發、數據一致性要求高
MyISAM❌❌(表鎖)❌只讀/讀多寫少、全文搜索(舊版本)、日志分析
Memory❌❌❌臨時表、緩存、極高速查找(重啟丟失)
Archive❌❌❌海量歸檔、僅插入/全表掃描、壓縮存儲

默認推薦:ENGINE=InnoDB,除非有明確理由選擇其他。

字符集與校對規則

  • DEFAULT CHARSET=utf8mb4:支持完整 Unicode (含 Emoji)
  • COLLATE=utf8mb4_unicode_ci:基於 UCA 算法,多語言排序準確
  • utf8mb4_general_ci:舊版兼容,性能略高但排序不準(如 ß = ss)
  • 列級可單獨指定:name VARCHAR(50) CHARSET utf8mb4 COLLATE utf8mb4_bin (區分大小寫)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved