WeHelp
MySQL 是一套穩定、高效能的資料庫管理系統,是全球網頁開發與應用程式最常搭配的核心工具之一。
  1. MySQL 下載安裝
  2. 啟動、連線測試
  3. Database 管理
  4. SQL 資料表管理
  5. SQL 資料管理
  6. SQL 資料取得、篩選
  7. 欄位的資料型態
  8. 資料交易簡介、操作
  9. 使用者管理
  10. Python 程式連線
  11. Node.js 程式連線
  12. PHP 程式連線
欄位的資料型態
MySQL 的欄位資料型態可大致分為以下幾類: ## 1. 數值型態 ### 整數型態 | 型態 | 說明 | 有號範圍概略 | |---|---|---| | `TINYINT` | 非常小的整數,通常佔 1 位元組 | -128 ~ 127 | | `SMALLINT` | 小型整數,佔 2 位元組 | -32,768 ~ 32,767 | | `MEDIUMINT` | 中型整數,佔 3 位元組 | 約 -838 萬 ~ 838 萬 | | `INT` 或 `INTEGER` | 最常用的整數,佔 4 位元組 | 約 -21 億 ~ 21 億 | | `BIGINT` | 大型整數,佔 8 位元組 | 非常大的整數範圍 | 可搭配 `UNSIGNED`,表示不允許負數,並將可用範圍移至正數。例如: ```sql age TINYINT UNSIGNED id BIGINT UNSIGNED ``` > `INT(11)` 中的 `11` 並不是儲存長度,而是舊版 MySQL 的顯示寬度,目前通常不需要使用。 ### 固定或浮點數型態 | 型態 | 說明 | |---|---| | `DECIMAL(M,D)` | 精確小數,適合金額、財務資料 | | `FLOAT` | 單精度浮點數,適合一般近似數值 | | `DOUBLE` | 雙精度浮點數,精確度高於 `FLOAT` | 例如: ```sql price DECIMAL(10,2) ``` 表示最多 10 位數,其中 2 位為小數,適合儲存 `12345678.90` 這類金額。 --- ## 2. 字串型態 ### `CHAR` 固定長度字串。 ```sql country_code CHAR(2) ``` 適合長度固定的資料,例如國家代碼、固定格式的編號。若實際內容較短,MySQL 會以空白補足。 ### `VARCHAR` 可變長度字串,最常用的文字型態。 ```sql name VARCHAR(100) email VARCHAR(255) ``` 適合姓名、電子郵件、地址等長度不固定的資料。`VARCHAR(n)` 中的 `n` 表示最大字元數,但實際限制也會受到字元集和資料列總長度影響。 ### `TEXT` 系列 適合儲存較長的文字: | 型態 | 最大大小概略 | |---|---:| | `TINYTEXT` | 255 bytes | | `TEXT` | 65,535 bytes | | `MEDIUMTEXT` | 約 16 MB | | `LONGTEXT` | 約 4 GB | 例如文章內容、備註、HTML 或大量文字可使用 `TEXT`。 > `TEXT` 欄位通常不能設定一般的預設值,且索引使用上也比 `VARCHAR` 受限制。 ### `ENUM` 從預先定義的選項中選擇一個值。 ```sql status ENUM('pending', 'paid', 'cancelled') ``` 適合選項固定且數量少的欄位,但若選項經常變更,通常改用獨立資料表或 `VARCHAR` 會較有彈性。 ### `SET` 可從多個預先定義的選項中選擇多個值。使用情境較少,設計上需謹慎。 --- ## 3. 日期與時間型態 | 型態 | 說明 | |---|---| | `DATE` | 日期,例如 `2025-03-08` | | `TIME` | 時間,例如 `14:30:00` | | `DATETIME` | 日期與時間,例如 `2025-03-08 14:30:00` | | `TIMESTAMP` | 日期與時間,常用於建立時間、更新時間 | | `YEAR` | 年份 | ### `DATETIME` 與 `TIMESTAMP` - `DATETIME` 儲存指定的日期時間,範圍較大。 - `TIMESTAMP` 通常以 UTC 儲存,顯示時依時區轉換,適合記錄建立時間和更新時間。 - `TIMESTAMP` 的可表示範圍通常小於 `DATETIME`。 常見寫法: ```sql created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ``` --- ## 4. 二進位資料型態 ### `BINARY` 與 `VARBINARY` 用於儲存二進位資料,例如雜湊值、加密資料或特殊編碼內容。 ```sql hash_value BINARY(32) ``` ### `BLOB` 系列 用於儲存大量二進位資料,例如圖片、檔案或影音資料。 | 型態 | 最大大小概略 | |---|---:| | `TINYBLOB` | 255 bytes | | `BLOB` | 65,535 bytes | | `MEDIUMBLOB` | 約 16 MB | | `LONGBLOB` | 約 4 GB | 實務上,大型檔案通常會放在檔案系統或物件儲存服務,資料庫只保存檔案路徑或 URL。 --- ## 5. JSON 型態 `JSON` 用於儲存 JSON 格式資料: ```sql profile JSON ``` 例如: ```json { "nickname": "Amy", "interests": ["music", "travel"] } ``` 優點: - 可儲存結構不固定的資料 - MySQL 提供 JSON 查詢與操作函式 - 某些 JSON 路徑可以建立索引 但若資料結構固定且需要大量查詢,通常仍建議使用一般欄位或關聯式資料表。 --- ## 6. 空間資料型態 MySQL 也支援地理與幾何資料,例如: - `GEOMETRY` - `POINT` - `LINESTRING` - `POLYGON` 常用於地圖座標、路徑、區域範圍等資料。 例如: ```sql location POINT ``` --- ## 7. 其他常見欄位屬性 資料型態之外,欄位還可以設定以下屬性: ```sql id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ``` - `NOT NULL`:不允許儲存 `NULL` - `NULL`:允許沒有值 - `DEFAULT`:指定預設值 - `AUTO_INCREMENT`:自動遞增,常用於流水號主鍵 - `PRIMARY KEY`:主鍵,唯一識別資料列 - `UNIQUE`:不允許重複值 - `COMMENT`:欄位註解 - `COLLATE`:指定字串排序與比較規則 ## 常見選擇建議 - 整數編號:`INT UNSIGNED` 或 `BIGINT UNSIGNED` - 金額:`DECIMAL(10,2)`,不要使用 `FLOAT` - 一般短文字:`VARCHAR` - 長篇文字:`TEXT` - 建立、更新時間:`DATETIME` 或 `TIMESTAMP` - 固定選項:視情況使用 `ENUM` - 結構彈性的資料:`JSON` - 圖片或檔案:通常儲存路徑,避免直接存入 `BLOB`,除非有特殊需求。
相關學習地圖、教學課程
Python 後端工程、資料庫
從 0 開始,成為後端工程師的學習路徑。