資料型別與約束

Amd794發表於2024-12-10

title: 資料型別與約束
date: 2024/12/10
updated: 2024/12/10
author: cmdragon

excerpt:
在資料庫中,資料型別與約束是定義資料儲存結構的基礎。選擇合適的資料型別不僅可以有效地最佳化儲存空間,還有助於提高資料的準確性和一致性。本節將詳細探討MySQL中常用的資料型別、約束的作用以及如何在表中應用這些技術,幫助讀者更好地設計資料庫。

categories:

  • 前端開發

tags:

  • 資料型別
  • 資料約束
  • MySQL
  • 資料庫設計
  • 約束條件
  • 資料完整性
  • 資料儲存

image
image

掃描二維碼關注或者微信搜一搜:程式設計智域 前端至全棧交流與成長

在資料庫中,資料型別與約束是定義資料儲存結構的基礎。選擇合適的資料型別不僅可以有效地最佳化儲存空間,還有助於提高資料的準確性和一致性。本節將詳細探討MySQL中常用的資料型別、約束的作用以及如何在表中應用這些技術,幫助讀者更好地設計資料庫。

一、資料型別

在MySQL中,資料型別定義了表中每個欄位可以儲存的資料的性質和範圍。MySQL支援多種資料型別,主要可以分為以下幾類:

1.1 字串型別

  • VARCHAR(n): 可變長度字串,最大長度為n。適用於儲存長度不定的字串。

    示例:

    name VARCHAR(50)
    
  • CHAR(n): 固定長度字串。如果儲存的字串長度小於n,MySQL會用空格填充到n長度。

    示例:

    code CHAR(10)
    
  • TEXT: 用於儲存大文字,最大可達65,535個字元,適合存放長文字內容。

  • BLOB: 儲存二進位制大物件,適合儲存影像、音訊等資料。

1.2 數值型別

  • INT: 整型,通常為4位元組,可以表示-2,147,483,648 到 2,147,483,647之間的整數。

    示例:

    age INT
    
  • FLOAT(p): 單精度浮點數,p是精度,主要用於儲存浮點數資料。

  • DOUBLE(p): 雙精度浮點數,適用於需要更高精度的浮點數。

  • DECIMAL(p,s): 精確的定點數,其中p是總位數,s是小數位數,適合儲存需要高精度的財務資料。

1.3 日期和時間型別

  • DATE: 用於儲存日期,格式為'YYYY-MM-DD'。

    示例:

    birth_date DATE
    
  • DATETIME: 儲存日期和時間,格式為'YYYY-MM-DD HH:MM:SS'。

  • TIMESTAMP: 自動記錄資料的建立時間或最後修改時間,格式同DATETIME。

二、資料約束

資料約束用於設定表中資料的規則,確保資料的有效性和一致性。常見的約束包括:

2.1 主鍵約束

主鍵是表中唯一標識每條記錄的欄位。設定主鍵後,該欄位中的值必須唯一且不能為NULL。例如:

customer_id INT AUTO_INCREMENT PRIMARY KEY

2.2 外來鍵約束

外來鍵用於確保表間的關係完整性。透過外來鍵,可以建立表之間的引用,確保在一個表中引用的值在另一個表中存在。例如:

FOREIGN KEY (customer_id) REFERENCES customers(customer_id)

2.3 唯一約束

唯一約束確保某個欄位的值在表中是唯一的,可以防止重複資料。例如:

email VARCHAR(100) UNIQUE

2.4 非空約束

該約束確保某個欄位的值不能為NULL。使用該約束可以確保資料的完整性。示例:

customer_name VARCHAR(100) NOT NULL

2.5 棕色約束

CHECK約束用於限制列中可以儲存的資料範圍。例如,確保年齡欄位的值大於0:

age INT CHECK (age > 0)

三、總結

選擇合適的資料型別和設定適當的約束是資料庫設計的重要步驟。資料型別確保資料能夠以預期的方式儲存和訪問,而約束則保證資料的完整性和一致性。

餘下文章內容請點選跳轉至 個人部落格頁面 或者 掃碼關注或者微信搜一搜:程式設計智域 前端至全棧交流與成長,閱讀完整的文章:資料型別與約束 | cmdragon's Blog

往期文章歸檔:

  • 資料庫的基本操作 | cmdragon's Blog
  • 資料庫設計原則與方法 | cmdragon's Blog
  • 資料庫與資料庫管理系統概述 | cmdragon's Blog
  • Nuxt.js 應用中的 afterResponse 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 request 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 error 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 close 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 render:island 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 render:html 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 render:response 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 dev:ssr-logs 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 webpack:progress 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 webpack:done 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 webpack:error 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 webpack:change 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 webpack:compiled 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 webpack:compile 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 webpack:configResolved事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 vite:compiled 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 vite:serverCreated 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 vite:configResolved 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 vite:extendConfig 事件鉤子 | cmdragon's Blog
  • Nuxt.js 應用中的 schema:written 事件鉤子詳解 | cmdragon's Blog
  • Nuxt.js 應用中的 schema:beforeWrite 事件鉤子詳解 | cmdragon's Blog
  • Nuxt.js 應用中的 schema:resolved 事件鉤子詳解 | cmdragon's Blog
  • Nuxt.js 應用中的 vite:extendConfig 事件鉤子詳解 | cmdragon's Blog
  • Nuxt.js 應用中的 vite:extend 事件鉤子詳解 | cmdragon's Blog
  • Nuxt.js 應用中的 schema:extend事件鉤子詳解 | cmdragon's Blog
  • Nuxt.js 應用中的 listen 事件鉤子詳解 | cmdragon's Blog
  • Nuxt.js 應用中的 prepare:types 事件鉤子詳解 | cmdragon's Blog
  • Nuxt.js 應用中的 build:error 事件鉤子詳解 | cmdragon's Blog

相關文章