<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      主鍵約束、唯一性約束、唯一性索引的區別

      今天我們一起來理一理數據庫中保證數據 唯一性 的三種機制,它們分別是 主鍵約束(Primary Key Constraint)、唯一性約束(Unique Constraint)、唯一性索引(Unique Index)。

      一、主鍵約束(Primary Key Constraint)

      1、定義:主鍵約束是表中用于 唯一標識每條記錄 的約束,通過一列或多列(復合主鍵)的組合,確保表中不存在兩條完全相同的記錄,且 不允許空值(NULL)

      2、核心特性:

      • 唯一性:主鍵列(或列組合)的值必須唯一,不能重復。
      • 非空性:主鍵列的值絕對不允許為 NULL(所有列都不能空)。
      • 標識性:是表的 "唯一身份證",用于明確區分每條記錄,通常作為其他表的外鍵引用的目標(如訂單表的user_id引用用戶表的主鍵id)。
      • 自動關聯索引:數據庫會自動為 - primary key 創建唯一索引(多數數據庫默認是聚集索引,如 SQL Server;Oracle 默認是非聚集索引),以高效維護唯一性。關于 聚集索引與非聚集索引,大家可以看下這篇文章 聚集索引與非聚集索引的區別

      3、示例:

      CREATE TABLE user (
          id INT PRIMARY KEY, -- 主鍵
          name VARCHAR(50)
      );

      二、唯一性約束(Unique Constraint)

      1、定義:唯一性約束是用于保證表中 指定列(或列組合)的值在全表范圍內唯一 的約束,主要用于業務邏輯上的唯一性要求(比如 "身份證號不重復")。

      2、核心特性:

      • 唯一性:約束列(或列組合)的值必須唯一,不能重復。
      • 允許空值:允許列值為 NULL,且 允許多個 NULL(因為 NULL 不等于任何值,包括自身,所以多個 NULL 不違反唯一性)。
      • 業務性:不用于標識記錄,僅用于保證業務規則(比如 "一個用戶只能有一個身份證號")。
      • 自動關聯索引:數據庫會 自動為 unique constraint 創建唯一索引(默認是非聚集索引),以高效檢查唯一性。

      3、示例:

      CREATE TABLE user (
          id INT PRIMARY KEY, -- 主鍵
          id_card VARCHAR(100) UNIQUE -- 唯一約束
      );

      三、唯一性索引(Unique Index)

      1、定義:唯一性索引是一種 物理存儲結構,通過對指定列(或列組合)創建索引,強制該列值唯一,同時 加速基于該列的查詢(如WHERE條件過濾、JOIN關聯)。

      2、核心特性:

      • 唯一性:索引列(或列組合)的值必須唯一,不能重復。
      • 允許空值:同唯一性約束,允許列值為 NULL,且允許多個 NULL。
      • 性能導向:核心作用是 優化查詢速度(減少數據掃描范圍),"唯一性" 是附加特性。
      • 手動創建:需要顯式通過 CREATE UNIQUE INDEX 語句創建,不依賴約束存在。

      3、示例:

      CREATE UNIQUE INDEX idx_id_card ON user(id_card); -- 唯一索引

      對比表格

      維度 主鍵約束(Primary Key) 唯一性約束(Unique Constraint) 唯一性索引(Unique Index)
      約束類型 邏輯約束(數據完整性規則) 邏輯約束(數據完整性規則) 物理結構(索引,優化查詢)
      空值允許 不允許任何列為 NULL 允許列值為 NULL(允許多個) 允許列值為 NULL(允許多個)
      數量限制 一個表只能有 1 個主鍵(可復合) 一個表可以有多個唯一性約束 一個表可以有多個唯一性索引
      與索引的關系 自動創建唯一索引(不可單獨刪除) 自動創建唯一索引(不可單獨刪除) 本身就是索引(可單獨創建 / 刪除)
      作用核心 標識記錄(表的 "身份證") 保證業務唯一性(如郵箱不重復) 提升查詢性能(附帶唯一性)
      外鍵引用目標 可被其他表的外鍵引用 通常不被外鍵引用(語義不適合) 不能被外鍵引用(不是約束)
      刪除影響 刪除主鍵約束,自動索引會被刪除 刪除唯一性約束,自動索引會被刪除 刪除索引,不影響約束(若存在)

      總結

      • 主鍵約束:唯一標識記錄,非空,表中唯一,是表的 "核心身份標識"。
      • 唯一性約束:保證業務字段唯一,允許空,可多個,是 "業務規則的守護者"。
      • 唯一性索引:優化查詢速度,附帶唯一性,可多個,是 "性能優化工具"。

      世上沒有完美的人,也沒有完美的事。-- 煙沙九洲

      ?

      posted @ 2025-08-13 23:15  煙沙九洲  閱讀(173)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 新和县| 国内熟妇人妻色在线视频| 亚洲va在线∨a天堂va欧美va| 日韩午夜福利视频在线观看| 国产在线中文字幕精品| 亚洲欧美日韩精品色xxx| 人妻少妇偷人精品免费看| 26uuu另类亚洲欧美日本| 亚洲色婷婷久久精品av蜜桃久久 | 一亚洲一区二区中文字幕| 偷窥国产亚洲免费视频| 国产一区在线观看不卡| 国产精品国产三级国产av剧情| 日韩AV高清在线看片| 国产精品中文字幕一区| 亚洲国产综合性亚洲综合性| 亚洲一区二区三区18禁| 无码av永久免费专区麻豆| 国产av中文字幕精品| 国精品无码一区二区三区在线| 国产精品一区二区三区四区| 少妇太爽了在线观看免费视频| 日本精品一区二区不卡| 国产边打电话边被躁视频| 日本国产一区二区三区在线观看| 国产一区二区日韩经典| 狠狠久久五月综合色和啪| 乱码中文字幕| 性XXXX视频播放免费直播| 国产精品视频第一第二区| 久久狠狠高潮亚洲精品| 日韩成av在线免费观看| 精品视频在线观看免费观看| av无码免费一区二区三区| 亚洲一区二区av高清| 久久精品国产亚洲AV麻豆长发| 免费吃奶摸下激烈视频| 国产亚洲精品第一综合麻豆| 国产婷婷精品av在线| 精品无码久久久久国产电影| 亚洲综合精品第一页|