Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SQL主键怎么使用,你会了吗?

SQL主键怎么使用,你会了吗?

原创
作者头像
霍格沃兹测试开发Muller老师
发布于 2023-09-07 03:00:42
发布于 2023-09-07 03:00:42
6490
举报

Primary Key 的重要性和使用方法

SQL主键(Primary Key)是关系数据库中的一个重要概念,它用于唯一标识表中的每一行数据,并确保数据的完整性和一致性。本文将介绍SQL主键的定义、作用以及在数据库设计和查询中的使用方法。

Primary Key

主键是一列或一组列,用于唯一标识表中的每一行数据。主键有如下作用:

  1. 唯一标识数据:主键确保表中的每一行数据都具有唯一的标识符,避免了数据冗余和重复。
  2. 数据完整性:主键约束确保表中的主键列不包含空值(NULL),并且每个主键值都是唯一的。这样可以防止数据不完整或不一致的情况发生。
  3. 关系建立:主键可以用作与其他表之间建立关系的依据,实现表之间的连接和引用。

当主键包含多个字段时,又称为复合键(Composite Primary Key)。

注意事项

在设计主键时,应使用尽可能少的字段,这不但能减少存储空间,还能提升查询性能。主键包含的字段越少,所需要的存储空间就越小,就性能而言,更少的数据意味着更快速地处理。

SQL 规定,主键长度不能超过 900 个字节。Oracle 规定,主键不能超过 32 个字段。

创建主键

我们可以通过如下方法创建主键:

  1. 在创建表时定义主键,代码如下:
代码语言:sql
AI代码解释
复制
CREATE TABLE 表名 (1 数据类型 PRIMARY KEY,2 数据类型,
    ...
);
  1. 创建表后定义主键,代码如下:
代码语言:sql
AI代码解释
复制
ALTER TABLE 表名
ADD PRIMARY KEY (1);

删除主键

使用下面的语句可以删除表的主键约束:

代码语言:sql
AI代码解释
复制
ALTER TABLE 表名 DROP PRIMARY KEY;

主键的约束和属性

主键可以具有以下约束和属性:

  • 唯一性约束(UNIQUE):主键的值必须是唯一的,不能重复。
  • 非空约束(NOT NULL):主键的值不能为NULL,确保数据完整性。
  • 自动递增属性(AUTO_INCREMENT):主键的值可以自动增长,简化插入操作。

主键使用原则

在使用主键时,我们可以遵循下列原则,提升数据库的性能,方便我们的使用:

  • 选择合适的列作为主键:主键应选择那些稳定、唯一且不可更改的列作为标识符。
  • 避免过度使用复合主键:复合主键由多个列组成,但过多的复合主键可能导致查询和维护复杂性增加。
  • 考虑性能因素:主键的选择和设计应考虑查询性能,尽量避免使用过长的列作为主键。
  • 处理主键冲突:在插入数据时,需要处理可能出现的主键冲突情况,如使用自动递增主键或手动处理。

使用示例

比如我们要创建一个Customers的表,包含id等字段,如下:

代码语言:sql
AI代码解释
复制
CREATE TABLE Customers (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    age     TINYINT UNSIGNED NOT NULL,
    city    INT UNSIGNED     NOT NULL,
    Consumption amount      FLOAT       DEFAULT '0.0',
    country CHAR(3)          NOT NULL   DEFAULT '',
    email   VARCHAR(30)  UNIQUE  NOT NULL,
    PRIMARY KEY (id)
);

我们将id设置为了Customers的主键,并且将其设置为自增。

如果 Customers 表和 id字段都已经存在,则可以使用 ALTER TABLE命令添加主键,语法如下:

代码语言:sql
AI代码解释
复制
ALTER TABLE Customers ADD PRIMARY KEY (id);

注:只有在首次创建数据表时,那些被声明为不能包含 NULL 值的字段,才能使用 ALTER TABLE 命令添加为主键。

如果我们在创建表时,需要添加多个主键,语法如下:

代码语言:sql
AI代码解释
复制
CREATE TABLE Customers (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    age     TINYINT UNSIGNED NOT NULL,
    city    INT UNSIGNED     NOT NULL,
    Consumption amount      FLOAT       DEFAULT '0.0',
    country CHAR(3)          NOT NULL   DEFAULT '',
    email   VARCHAR(30)  UNIQUE  NOT NULL,
    PRIMARY KEY (id, email)
);

上述语法即将idemail设置为主键。

如果 Customers 表已经存在,则可以使用下面的 SQL 语句在 idemail字段上添加主键:

代码语言:sql
AI代码解释
复制
ALTER TABLE Customers
ADD CONSTRAINT PK_CUSTID PRIMARY KEY (id, email);

当我们要删除 Customers 表主键时,语法如下:

代码语言:sql
AI代码解释
复制
ALTER TABLE Customers DROP PRIMARY KEY;

总结

SQL主键是关系数据库中确保数据完整性和一致性的重要机制。通过为表中的每一行数据定义唯一的标识符,主键保证了数据的唯一性,允许有效地进行数据操作和查询。使用主键,可以建立表之间的关系,并提高数据库的性能和可维护性。因此,在数据库设计和查询过程中,合理定义和使用主键是至关重要的一步。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL约束:主键、非空、唯一、外键 ️
大家好,我是默语,擅长全栈开发、运维和人工智能技术。在这篇博客中,我将详细介绍MySQL中各种约束的使用,包括主键约束、非空约束、唯一约束和外键约束。这些约束是保证数据库完整性和数据一致性的关键。关键词:MySQL约束、主键、非空、唯一、外键、数据库设计。
默 语
2024/11/22
3190
数据库MySQL-数据完整性
1、只有innodb才能支持外键 2、公共字段的名字可以不一样,但是数据类型要一样
cwl_java
2020/03/27
9640
SQL 约束:确保数据完整性和一致性的关键
在数据库设计中,约束(Constraints) 是一种用于限制表中字段数据类型、范围、操作方式等的规则。通过约束,数据库能够保证数据的正确性、完整性和有效性,避免错误数据的插入或修改。合理的约束设计是数据库设计的核心之一,对于确保数据质量至关重要。本文将详细讲解 SQL 中的常见约束,并通过实例帮助大家理解如何在实际应用中运用这些约束。
平凡之路.
2025/04/01
1380
MySQL【一】基本使用----超详细教学
win10下MySQL安装教程(MySql-8.0.26超级详细)_丨汀、的博客-CSDN博客
汀丶人工智能
2022/12/21
7800
MySQL【一】基本使用----超详细教学
SQL如何确保数据唯一性?
在SQL数据库中,UNIQUE约束是一种用于确保数据唯一性的重要工具。本文将深入探讨UNIQUE约束的概念、应用场景以及使用方法,以帮助读者更好地理解和利用UNIQUE约束来保证数据的一致性和准确性。
霍格沃兹测试开发Muller老师
2023/09/07
4880
MySQL基本操作
表是数据库存储数据的基本单位,由若干个字段组成,主要用来存储数据记录。表的操作 包括创建表、查看表、修改表和删除表。
星哥玩云
2022/08/18
2.1K0
MySQL基本操作
第三章《数据表的基本操作》
1.关于表 表示数据库存储数据的基本单位。一个表可以包含若干个字段或者是记录。表的操作包括创建表、修改表、删除表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。 1.创建表: 数据表属于数据库,在创建数据表之前,应该使用“USE <数据库名>”移动到指定的数据库下。 如果没有选择数据库,创建表时会报错; 创建表的语法: CREATE TABLE table_name ( 字段1 数据类型 [完整性约束条件], 字段2 数据类型 [完整性约束条件], … );
全栈程序员站长
2021/06/08
1.4K0
第三章《数据表的基本操作》
【MySql】表的约束
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过技术收到逼迫程序员插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。约束的最终目标:保证数据的完整性和可预期性所以需要更多的约束。 表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primarykey,auto_increment,unique key 。
平凡的人1
2023/10/15
3190
【MySql】表的约束
【MySQL】SQL语句查询、约束、备份与恢复
SELECT * FROM product ORDER BY price DESC;
陶然同学
2023/02/24
2K0
【MySQL】SQL语句查询、约束、备份与恢复
软件测试|MySQL主键约束详解:保障数据完整性与性能优化
主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。
霍格沃兹测试开发Muller老师
2023/10/25
3550
一篇文章带你彻底了解MySQL各种约束
MySQL约束 <1> 概念 是一种限制,它是对表的行和列的数据做出约束,确保表中数据的完整性和唯一性。 <2> 使用场景 创建表的时候,添加约束 <3> 分类 default: 默认约束, 域完整性 not null: 非空约束,域完整性 unique: 唯一约束,实体完整性 primary key: 主键约束,实体完整性 foreign key: 外键约束,参照完整性 check: 检查约束(MySQL不支持),域完整性 auto_increment: 自增长约束 unsigned: 无符号约束 zer
ruochen
2021/02/14
1K0
一篇文章带你彻底了解MySQL各种约束
SQL笔记(1)——MySQL创建数据库
其中,主键列指定了 PRIMARY KEY 约束,强制该列的值在表中唯一,并且使用 AUTO_INCREMENT 关键字,表示该列的值会自动递增生成。
MinChess
2023/04/22
3.2K0
SQL笔记(1)——MySQL创建数据库
【重学 MySQL】六十一、数据完整性与约束的分类
在MySQL中,数据完整性是确保数据库中数据的准确性和一致性的关键。为了实现数据完整性,MySQL提供了多种约束类型,这些约束可以根据其功能和作用进行分类。
用户11332765
2024/10/28
1950
【重学 MySQL】六十一、数据完整性与约束的分类
MySQL从删库到跑路_高级(一)——数据完整性
数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况。 数据的完整性是指数据的可靠性和准确性,数据完整性类型有四种: A、实体完整性:实体的完整性强制表的标识符列或主键的完整性(通过唯一约束,主键约束或标识列属性)。 B、域完整性:限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则)。 C、引用完整性:在删除和输入记录时,引用完整性保持表之间已定义的关系。引用完整性确保键值在所有表中一致,不能引用不存在的值.如果一个键。 D、自定义完整性:用户自己定义的业务规则,比如使用触发器实现自定义业务规则。
良月柒
2019/03/19
1.9K0
linux 之mysql——约束(constraint)详解
比如name字段中要让其用户名不重复,这就需要添加约束。或者必须注册的时候需要添加邮箱等
用户4877748
2020/07/21
2.5K0
2024Mysql And Redis基础与进阶操作系列(3)作者——LJS[含MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法]
数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。
盛透侧视攻城狮
2024/10/22
2350
2024Mysql And Redis基础与进阶操作系列(3)作者——LJS[含MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法]
【MySQL】表的约束
表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼用户,插入正确的数据。反过来,在 mysql 角度,凡是插入进来的数据,都是符合数据约束的!约束的最终目的就是保证数据的完整性和可预期性。因此我们需要更多的约束条件!
YoungMLet
2024/03/01
2240
【MySQL】表的约束
【Java 进阶篇】MySQL主键约束详解
MySQL是一个强大的关系型数据库管理系统,用于存储和管理大量数据。在数据库中,主键约束是一项非常重要的概念,它有助于确保数据的完整性和唯一性。本文将详细介绍MySQL主键约束,包括什么是主键、为什么需要主键、如何创建主键以及主键的最佳实践。
繁依Fanyi
2023/10/12
3860
【Java 进阶篇】MySQL主键约束详解
【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)
这篇文章只是对以前的内容作个详细补充,想要速成操作的,可以参考这篇博客 【MySQL学习】:关系数据库标准语言SQL
IsLand1314
2025/02/09
710
【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)
SQL基础--> 约束(CONSTRAINT)
约束是表、列级的强制规定、是防止那些无效或有问题的数据输入到表中。当对该表进行DML
Leshami
2018/08/07
1.8K0
推荐阅读
相关推荐
MySQL约束:主键、非空、唯一、外键 ️
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档