SQL Server主键约束(PRIMARY KEY)
作者:Michael?Shen 时间:2024-01-24 04:46:56
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
标签:SQL,Server,主键,约束
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python得到windows自启动列表的方法
2023-12-18 14:49:13
对Python中range()函数和list的比较
2021-08-26 14:59:47
在IE浏览器下面指定表单编码方式
2009-10-02 16:47:00
SWFObject 2.1以上版本语法介绍
2024-04-10 10:49:18
Python+Matplotlib实现给图像添加文本标签与注释
2022-05-02 12:40:16
![](https://img.aspxhome.com/file/2023/0/134960_0s.png)
Python实现的爬取小说爬虫功能示例
2022-07-14 20:36:16
python pandas中DataFrame类型数据操作函数的方法
2022-10-22 09:33:12
ASP.NET连接 Access数据库的几种方法
2024-01-25 15:31:09
六个Python3中使用最广泛的内置函数总结
2021-12-06 09:12:34
Python常见数据类型转换操作示例
2022-11-20 19:13:05
MySQL表的增删改查(CRUD)
2024-01-12 18:55:34
![](https://img.aspxhome.com/file/2023/5/67515_0s.png)
不支持RSS,如何跟踪网站的内容更新?
2008-09-08 12:38:00
JavaScript 组件之旅(三):用 Ant 构建组件
2009-10-09 16:56:00
python SVM 线性分类模型的实现
2021-04-04 03:51:57
![](https://img.aspxhome.com/file/2023/0/99080_0s.png)
python通过cookie模拟已登录状态的初步研究
2022-10-25 08:20:46
![](https://img.aspxhome.com/file/2023/4/114634_0s.jpg)
Python高级特性之闭包与装饰器实例详解
2021-09-19 03:17:25
![](https://img.aspxhome.com/file/2023/3/65473_0s.png)
vue实现一个单独的组件注释
2024-04-27 15:47:04
![](https://img.aspxhome.com/file/2023/6/133156_0s.jpg)
MySQL表设计优化与索引 (三)
2010-10-25 20:05:00
国外新闻报纸排版布局设计欣赏
2008-02-25 23:14:00
![](https://img.aspxhome.com/file/UploadPic/20082/25/2008225234113305s.jpg)
如何理解python面向对象编程
2023-01-01 20:19:56