5.1 主鍵約束

来源:https://www.cnblogs.com/michaelshen/archive/2022/08/15/16587890.html
-Advertisement-
Play Games

#主鍵約束(PRIMARY KEY) ##SQL Server PRIMARY KEY(主鍵)約束簡介 主鍵是唯一標識表中每一行的一列或一組列。您可以使用主鍵約束為表創建主鍵。 如果主鍵僅包含一列,你可以使用PRIMARY KEY約束作為列約束: CREATE TABLE table_name ( ...


主鍵約束(PRIMARY KEY)

目錄

SQL Server PRIMARY KEY(主鍵)約束簡介

主鍵是唯一標識表中每一行的一列或一組列。您可以使用主鍵約束為表創建主鍵。
如果主鍵僅包含一列,你可以使用PRIMARY KEY約束作為列約束:

CREATE TABLE table_name (
    pk_column data_type PRIMARY KEY,
    ...
);

如果主鍵有兩列或多列,則必須將主鍵約束用作表約束:

CREATE TABLE table_name (
    pk_column_1 data_type,
    pk_column_2 data type,
    ...
    PRIMARY KEY (pk_column_1, pk_column_2)
);

每個表只能包含一個主鍵,一個主鍵可以包含多個列,即多個列的組合不能重覆。參與主鍵的所有列必須定義為NOT NULL。如果未為所有主鍵列指定NOT NULL約束,SQL Server會自動為這些列設置非空約束。

SQL Server PRIMARY KEY約束示例

以下示例創建了一個具有主鍵的表,主鍵由一列組成:

CREATE TABLE dbo.activities (
    activity_id INT PRIMARY KEY IDENTITY,--主鍵
    activity_name VARCHAR (255) NOT NULL,
    activity_date DATE NOT NULL
);

在表dbo.activities中,activity_id列是主鍵列,意味著這一列的值不能重覆

IDENTITY屬性用於activity_id列自動生成唯一的整數值。

下麵創建一個由兩列組成外鍵的新表:

CREATE TABLE dbo.participants(
    activity_id int,
    customer_id int,
    PRIMARY KEY(activity_id, customer_id)
);

在本例中,activity_idcustomer_id列中的值可以重覆,但兩列中的每個值組合都必須是唯一的。

通常,表總是在創建時定義主鍵。然而,有時,現有表可能沒有定義主鍵。在這種情況下,可以使用ALTER TABLE語句向表中添加主鍵。比如示例:

先創建一個沒有主鍵列的表:

CREATE TABLE dbo.events(
    event_id INT NOT NULL,
    event_name VARCHAR(255),
    start_date DATE NOT NULL,
    duration DEC(5,2)
);

然後使event_id列成為主鍵:

ALTER TABLE sales.events 
ADD PRIMARY KEY(event_id);

註意,如果 sales.events 表已經有數據,在將 event_id 列提升為主鍵之前,必須確保 event_id 中的值是不重覆的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • podman的部署和應用 podman官方網站(https://podman.io/) 什麼是podman Podman是一個無守護進程的容器引擎,用於在Linux系統上開發、管理和運行OCI容器。容器可以作為根運行,也可以以無根模式運行。簡單地說:別名docker=podman 它是一款集合了命令 ...
  • Charles:讓天底下沒有難抓的包。 前言 今天給大家推薦一個我所使用過的抓包工具中最好用的抓包工具-Charles(音譯:查爾斯),它可以抓各端發起的網路請求,我主要用來抓移動設備上的請求,上次小明就通過這種方式找到了一款付費App課程的漏洞,咳咳,不展開說了,畢竟web端的瀏覽器網路請求,打開 ...
  • office 2021 for Mac商業預覽Mac版office 2021 包括Word,Excel,PowerPoint,Outlook,OneDrive,最新版本的office將附帶新的深色模式支持,輔助功能改進,對Word、Excel、PowerPoint、Outlook的性能改進對exce ...
  • Podman部署及應用 什麼是podman Podman是一個開源項目,可在大多數Linux平臺上使用並開源在GitHub上。Podman是一個無守護進程的容器引擎,用於在Linux系統上開發,管理和運行Open Container Initiative(OCI)容器和容器鏡像。Podman提供了一 ...
  • 今天有個小伙伴問我,什麼是謂詞下推,然後我就開啟巴拉巴拉模式,說了好長一段時間,結果發現他還是懵的。 最後我概述給他一句話:所謂謂詞下推,就是將儘可能多的判斷更貼近數據源,以使查詢時能跳過無關的數據。用在SQL優化上來說,就是先過濾再做聚合等操作。 看到這裡的朋友可能就已經明白了什麼是謂詞下推,如果 ...
  • 背景介紹 StoneDB 是一款相容 MySQL 的開源 HTAP 資料庫。StoneDB 的整體架構分為三層,分別是應用層、服務層和存儲引擎層。應用層主要負責客戶端的連接管理和許可權驗證;服務層提供了 SQL 介面、查詢緩存、解析器、優化器、執行器等組件;Tianmu 引擎所在的存儲引擎層是 Sto ...
  • Mysql資料庫 資料庫 資料庫【按照數據結構來組織、存儲和管理數據的倉庫】。是一個長期存儲在電腦內的、有組織的、可共用的、統一管理的大量數據的集合。 數據對於公司來說最寶貴的財富,程式員的工作就是對數據進行管理,包括運算、流轉、存儲、展示等,資料庫最重要的功能就是【存儲數據】,長期保存數據。 M ...
  • 本篇介紹SQL:2016(ISO/IEC 9075:2016)標準中定義的序列生成器(Sequence generator)和相關操作,以及六種主流資料庫中的實現及差異:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、Db2、SQLite。 ————————... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...