網站首頁 編程語言 正文
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_id
或customer_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
?中的值是不重復的。
原文鏈接:https://www.cnblogs.com/michaelshen/p/16587890.html
相關推薦
- 2023-11-26 XMLHttpRequest的readyState狀態值
- 2021-12-09 帶你一文了解C#中的LINQ_C#教程
- 2022-07-08 python?csv實時一條一條插入且表頭不重復問題_python
- 2022-11-25 jar包在linux服務器已經運行好但是訪問不到地址的問題及解決方法_Linux
- 2022-03-30 .NET?Core使用EF生成數據庫出錯的解決方法_實用技巧
- 2023-02-10 docker安裝nginx容器的方法_docker
- 2022-08-06 Golang使用Consul詳解_Golang
- 2022-06-01 React函數式組件與類組件的不同你知道嗎_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支