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

MySQL 入門全攻略:授權、安裝、數據類型、SQL 兼容性與核心特性

     編輯:MySQL 資料庫相關知識

1. 授權模式與成本

平台安裝方式費用
Windows NT/9x任意$200
Unix/Linux自行安裝免費
Unix/Linux第三方安裝$200
嵌入應用組件—$200

企業級支持合同另行購買,詳見官網最新報價。

2. 安裝部署

  • 提供 RPM、DEB、TGZ 等多種包格式
  • RPM 安裝自動生成 /etc/rc.d/init.d/mysql 啟動腳本,多用戶模式自啟動
  • 守護進程 mysqld 內存佔用極低(~500KB + 4MB 共享),按需載入 CPU,適合資源受限環境
  • 客戶端庫、語言綁定(Perl/Python/PHP/Java/C)可獨立安裝

3. 核心數據類型

數值類型

類型範圍(有符號)存儲
TINYINT-128 ~ 1271 字節
SMALLINT-32768 ~ 327672 字節
MEDIUMINT-8388608 ~ 83886073 字節
INT-2147483648 ~ 21474836474 字節
BIGINT-9223372036854775808 ~ 92233720368547758078 字節
FLOAT±1.175E-38 ~ ±3.402E+384 字節
DOUBLE±2.225E-308 ~ ±1.797E+3088 字節
DECIMAL(M,D)精確定點數,M 總位數,D 小數位M+2 字節

選型原則:能滿足業務範圍的最小類型,節省空間提升緩存命中。

字符串類型

類型最大長度存儲開銷適用場景
CHAR(M)M ≤ 255M 字節定長,如 MD5、郵編
VARCHAR(M)M ≤ 65535L+1 字節變長通用文本
TINYTEXT/BLOB255L+1極短文本/二進制
TEXT/BLOB64KBL+2普通長文本/圖片
MEDIUMTEXT/BLOB16MBL+3長文章/文檔
LONGTEXT/BLOB4GBL+4超大對象
ENUM65535 成員1-2 字節單選枚舉,如狀態碼
SET64 成員1-8 字節多選集合,如標籤

日期時間類型

類型格式範圍存儲
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-313 字節
TIMEHH:MM:SS-838:59:59 ~ 838:59:593 字節
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 ~ 9999-12-318 字節
TIMESTAMPYYYYMMDDHHMMSS1970-01-01 ~ 2038-01-194 字節
YEARYYYY1901 ~ 21551 字節

4. SQL 兼容性與擴展

  • 不區分大小寫比較:默認 CHAR/VARCHAR 比較忽略大小寫
  • 用戶自定義函數 (UDF):編譯為 .so 共享庫,CREATE FUNCTION 載入,與內建函數同權
  • 缺失標準特性:無子查詢(早期版本)、無視圖、無存儲過程(5.0 前)、無標準外鍵/級聯/檢查約束(MyISAM)
  • 兼容性妥協:解析器接受但忽略 FOREIGN KEY、CHECK 語法,便於遷移腳本無報錯運行

5. 存儲引擎與事務

  • 早期僅 MyISAM:表級鎖、無事務、全文索引
  • 5.0+ 引入 InnoDB:行級鎖、ACID 事務、外鍵、崩潰恢復
  • 可混合使用:CREATE TABLE t (...) ENGINE=InnoDB

6. 安全體系

  • 基於「主機+用戶+密碼」三元組的權限矩陣
  • GRANT/REVOKE 後需 FLUSH PRIVILEGES 生效(早期版本)
  • 權限表:user、db、tables_priv、columns_priv

7. 備份與恢復

  • 邏輯備份:mysqldump --single-transaction --routines --triggers 導出 SQL
  • 物理備份:停庫或 FLUSH TABLES WITH READ LOCK 後拷貝數據目錄(MyISAM 適用)
  • 二進制日誌:記錄所有 DML/DDL,支持時間點恢復(PITR)
  • 複製:主從異步/半同步複製,讀寫分離、災備

8. 連接生態

  • C API (libmysqlclient) 為基礎
  • 語言綁定:PHP (mysqli/PDO)、Python (mysqlclient/PyMySQL)、Java (Connector/J)、Go (go-sql-driver)、Node.js (mysql2)
  • ODBC/JDBC/ADO.NET 標準驅動

9. 總結定位

MySQL 定位「輕量級、高性能、易部署」的 Web 應用首選數據庫。犧牲了部分企業級特性(早期無事務、存儲過程、完整 RI),換取極致的讀寫吞吐與運維簡單度。隨著 InnoDB 成熟、8.0 引入 CTE、窗口函數、JSON、GIS 等現代特性,已能覆蓋絕大多數中大型業務場景。

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