首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 學習筆記:資料表建立進階篇(下)

     編輯:MySQL 綜合教學

MySQL 學習筆記:資料表建立進階篇(下)

五、資料表類型與儲存位置

MySQL 與大多數資料庫不同,擁有「儲存引擎」的概念,可針對不同儲存需求選擇不同引擎。常用指令如下:

  • SHOW ENGINES; — 查看 MySQL 支援的儲存引擎
  • SHOW VARIABLES LIKE 'table_type'; — 查看預設資料表類型

最常用的兩大引擎為 MyISAM 與 InnoDB。建表時可指定引擎:

CREATE TABLE ... ENGINE = InnoDB;

同一資料庫中,不同資料表可使用不同引擎共存。

引擎特性對比

功能 MyISAM InnoDB
事務處理 不支援 支援
資料列鎖定 不支援(表鎖) 支援(行鎖)
外鍵約束 不支援 支援
表空間佔用 較小 較大(最多 2 倍)
全文索引 支援 不支援(5.6+ 已支援)
儲存檔案(/var/lib/mysql/) 3 個檔案(.frm 結構、.MYD 資料、.MYI 索引) 1 個檔案(.frm)+ 共享表空間

MyISAM 成熟穩定、讀取快,但需定期 OPTIMIZE TABLE 回收碎片空間;InnoDB 支援事務與行鎖,適合高併發寫入場景。

六、MySQL 預設字元集

MySQL 支援多種編碼,常見者:

  • UTF-8(MySQL 中為 utf8):1–4 位元組,Unicode 標準,強烈推薦
  • GBK:雙位元組,中文支援良好,但不推薦新專案使用
  • latin1:西歐編碼,8 位元組

字元集層級可分別指定:伺服器、資料庫、資料表、欄位。查看支援字元集:SHOW CHARACTER SET;

字元集與校對規則

  • 字元集:定義字串儲存方式
  • 校對規則:定義字串比較方式(如 _ci 不分大小寫、_cs 分大小寫、_bin 二進位比較)
  • 一對多關係:一個字元集可對應多個校對規則

常用指令:

SHOW COLLATION LIKE 'gbk%';  -- 查看 gbk 校對規則
SHOW VARIABLES LIKE 'character_set_server';  -- 伺服器字元集
SHOW VARIABLES LIKE 'collation_server';      -- 伺服器校對規則

指定與修改字元集

-- 建庫/建表時指定
CREATE DATABASE xsdemo DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT) ENGINE=MyISAM DEFAULT CHARSET=gbk COLLATE=gbk_chinese_ci;

-- 修改既有資料庫/資料表
ALTER DATABASE xsdemo CHARACTER SET utf8;
ALTER TABLE t1 CHARACTER SET utf8;

客戶端連線字元集

三個關鍵變數應保持一致:character_set_client、character_set_connection、character_set_results。可用 SET NAMES utf8 一次設定三者。

備份與還原

# 備份(僅結構)
mysqldump -u root -p --default-character-set=gbk -d xsdemo > /home/backup.sql

# 還原
mysql -u root -p xsdemo < /home/backup.sql

七、修改資料表

使用 ALTER TABLE 執行結構變更:

  • 新增欄位:ALTER TABLE t1 ADD price DOUBLE NOT NULL DEFAULT 0.00;
  • 指定位置新增:ALTER TABLE t1 ADD sex VARCHAR(5) AFTER name; / ... ADD height DOUBLE FIRST;
  • 修改型別:ALTER TABLE t1 MODIFY sex CHAR(3);
  • 修改欄位名與型別:ALTER TABLE t1 CHANGE name username VARCHAR(5);
  • 重命名表:ALTER TABLE t1 RENAME users;
  • 刪除欄位:ALTER TABLE t1 DROP age;
  • 刪除資料表:DROP TABLE IF EXISTS users;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved