MySQL約束有哪些

MySQL是一種關係型資料庫管理系統,約束是確保數據完整性和一致性的重要機制之一。本文將從MySQL的約束種類、條件、類型、設置、常見示例等多個方面詳細介紹MySQL約束有哪些。

一、MySQL約束種類

MySQL提供了多種類型的約束,包括:

1. 主鍵約束 (PRIMARY KEY): 主鍵是一種唯一的索引,通常用於標識表中的每一行數據。主鍵約束可以保證每行數據都有唯一的標識,避免了數據衝突的問題。例如:


CREATE TABLE student (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   age INT(3) NOT NULL 
);

2. 唯一約束(UNIQUE): 唯一約束用於保證在特定的表列中數據的唯一性。例如:


CREATE TABLE student (
   id INT(11) NOT NULL,
   name VARCHAR(50) NOT NULL UNIQUE,
   age INT(3) NOT NULL 
);

3. 外鍵約束(FOREIGN KEY): 外鍵約束用於保持關係型資料庫表之間的關聯關係。例如:


CREATE TABLE course (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   cid INT(11) NOT NULL,
   FOREIGN KEY (cid) REFERENCES student(id)
);

二、MySQL約束條件

約束條件是用於控制表中數據的一致性和完整性的規則。MySQL支持以下約束條件:

1. NOT NULL:保證表中列不包含NULL值。例如:


CREATE TABLE student (
   id INT(11) NOT NULL,
   name VARCHAR(50) NOT NULL,
   age INT(3) NOT NULL 
);

2. DEFAULT:默認值約束,對於未提供值的列設置默認值。例如:


CREATE TABLE student (
   id INT(11) NOT NULL DEFAULT 0,
   name VARCHAR(50) NOT NULL DEFAULT 'No Name',
   age INT(3) NOT NULL DEFAULT 18 
);

三、MySQL約束類型

MySQL支持以下約束類型:

1. 表級約束:對表中的數據整體進行約束控制,可以在表創建之後或表上已存在的數據上執行。例如:


ALTER TABLE student ADD CONSTRAINT pk_id PRIMARY KEY(id);

2. 列級約束:對表中的數據列進行約束控制,只有在列添加時才能定義。例如:


CREATE TABLE student (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL UNIQUE,
   age INT(3) NOT NULL CHECK (age >= 18)
);

四、MySQL設置約束名

MySQL約束名是指將約束命名的規則或慣例。要給約束定義名稱,可以使用以下語法:


CREATE TABLE student (
   id INT(11) NOT NULL PRIMARY KEY CONSTRAINT pk_student_id,
   name VARCHAR(50) NOT NULL UNIQUE CONSTRAINT uk_student_name,
   age INT(3) NOT NULL CHECK (age >= 18) CONSTRAINT check_student_age 
);

五、MySQL常見的約束

MySQL的主鍵、外鍵和唯一鍵是最常見的約束類型。這裡分別給出代碼示例:

1. 主鍵約束


CREATE TABLE student (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   age INT(3) NOT NULL 
);

2. 唯一約束


CREATE TABLE student (
   id INT(11) NOT NULL,
   name VARCHAR(50) NOT NULL UNIQUE,
   age INT(3) NOT NULL 
);

3. 外鍵約束


CREATE TABLE course (
   id INT(11) NOT NULL PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   cid INT(11) NOT NULL,
   FOREIGN KEY (cid) REFERENCES student(id)
);

小結

MySQL約束是一種保證數據完整性和一致性的重要機制。本文從多個方面詳細介紹了MySQL約束的種類、條件、類型、設置方法和常見示例。通過深入了解MySQL約束,可以更好地保護資料庫中的數據。

原創文章,作者:LTAC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134539.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LTAC的頭像LTAC
上一篇 2024-10-04 00:06
下一篇 2024-10-04 00:06

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python通配符有哪些

    Python通配符是一種表示字元串中模糊匹配的有效工具,用於匹配與具有特定模式匹配的字元串。Python中主要的通配符有:*,?,[]和{}。 一、星號通配符 * 在Python中…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • Python函數類型有哪些

    本文將從以下幾個方面詳細闡述Python函數類型。 一、內置函數 Python的內置函數是指在Python編程語言中提供的可以直接使用的函數,不需要通過導入模塊等方式引入。 部分常…

    編程 2025-04-29
  • Python程序變數名有哪些

    Python是一種高級、面向對象、解釋型編程語言,它因為其簡潔明了的語法和廣泛的應用領域而被廣泛使用。在Python中,變數名是關鍵的標識符,它們用於訪問存儲在內存中的值。本文將介…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL資料庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論