【你也能从零基础学会网站开发】 SQL结构化查询语言应用基础--创建表约束(table Constraints) 之 PRIMARY KEY 主键约束

🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

什么是SQL数据表约束?

SQL数据表约束的作用是强加在数据库表上的字段规则,用于限制数据进入表中的类型,以确保数据的准确性可靠性,就像是限制条约一样!

这些约束可以在创建表时定义,也可以在表创建后通过特定的SQL语句进行修改添加!

其实不难理解约束这个词汇,你也可以理解成限制条件, 你总不能让一种数据类型的字段,让它随随便便保存乱七八糟的数据类型进来吧! 这就要用到约束了!

总的来说约束有助于保护数据库免受无效数据的污染,确保数据的完整性一致性

接下来我们就看看数据表字段中到底有哪些字段约束,以及如何使用它们!

PRIMARY KEY 主键约束

PRIMARY KEY 约束前面我也讲过,它代表唯一标识数据库表中的每条记录。
主键必须包含唯一的值,并且这个字段不能包含 NULL 值。

在设计表的时候, 每个表应该都一个主键,并且每个表只能有一个主键!

那么我们使用SQL创建主键约束的方法如下:

语法

表字段 数据类型 primary key

举个栗子

下面的 SQL语句 在 Persons表创建时在 id 字段上创建 PRIMARY KEY 约束


create table Persons(id int primary key,  /*设置id字段为主键*/username varchar(20),password varchar(20),age int,sex bit
)

我们打开SQL Server 2000 中的查询分析器去试试看!

我们在test2数据库下执行上面的SQL语句

如图

然后我们打开SQL Server 2000企业管理器 找到刚刚在test2数据库中创建的Persons表, 双击它,即可查看主键是否创建成功!

如图

创建命名 PRIMARY KEY 约束

当我们创建主键约束的时候,最好命名它一下,以便于后期撤销删除主键的操作!

那么具体语法如下:

CONSTRAINT 命名主键名称 PRIMARY KEY (主键字段,主键字段,...)

注意: 这里可以根据实际需求和情况,同时定义多个主键!

举个栗子

还是刚刚上面那个 在 Persons表创建时在 id 字段上创建 PRIMARY KEY 约束,并且给主键约束命名!

create table Persons(id int,username varchar(20),password varchar(20),age int,sex bit,CONSTRAINT pk_id PRIMARY KEY (id)
)

如图


接着我们可以在SQL Server 2000 企业管理器中找到这个 并且右键打开索引管理

如图


然后你就可以看到id字段索引 ,双击现有索引

如图

在这里我们就可以通过可视化清晰的看到刚刚我们定义的主键名称, 至于什么是索引 我们后面再说!

如图

如果我们不给主键约束命名,那么系统将会给我们自动随机产生一个主键约束名称,这可能会导致我们不好管理,也不利于我们记忆!

如图

SQL修改和删除主键约束

当我们的数据表已存在的情况下为,如何来修改或者删除当前的主键约束

这里就要用到我们的SQL PRIMARY KEY Constraint on ALTER TABLE语法了!

删除撤销主键

SQL Server 2000中 表存在的情况下,使用以下方式删除主键约束!

语法规则

ALTER TABLE 表名称 DROP CONSTRAINT 主键名称

这里我们就要使用到主键名称了,所以创建主键的时候,就一定要给定主键名是最好的!

举个栗子

我们要删除刚刚创建的Persons表里面的id字段上的主键约束 名称为: pk_id

ALTER TABLE Persons DROP CONSTRAINT pk_id

如图

我们在企业管理器中查看一下, 果然是没有了!!

如图

修改添加主键

那么我们在表已存在的情况下为某个字段创建 PRIMARY KEY 约束 语法操作如下:

ALTER TABLE 表名称 ADD PRIMARY KEY (字段)

如果需要命名 PRIMARY KEY 约束,以及定义多个字段为 PRIMARY KEY 约束 语法操作如下

ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 PRIMARY KEY (字段1,字段2,...)

举个栗子

ALTER TABLE Persons ADD CONSTRAINT pk_id PRIMARY KEY (id)

如图

表字段不存在的情况下创建主键

如果是我们想在SQL Server 2000 中创建PRIMARY KEY约束 并且该字段不存在的情况下,那么要划分两部来解决!`

我们不能直接使用以下方式:

ALTER TABLE 表名称 ADD 字段名 int NOT NULL;

因为 PRIMARY KEY 约束要求列中的每个值都是唯一的,并且不允许 NULL 值,所以在添加这个约束之前,我们必须确保新列能够满足这些条件!

举个栗子

我们来创建一个表,并且手动往里面加入一些测试数据!

create table Persons(username varchar(20),password varchar(20),age int,sex char(4),
)

如图

但是如果我们现在使用以下语句, 可能会报错!

例如

ALTER TABLE Persons ADD id int NOT NULL;

如图

如果表中没有数据,你可以直接将其设为 NOT NULL,

但是如果有数据,并且要添加一个主键id,那么需要为表中的每一行生成一个唯一的 id值。

比如这里我们可以使用IDENTITY 约束来并 id字段自动分配一个唯一的值。

例如

ALTER TABLE Persons ADD id int IDENTITY not null 

如图


如图

然后再把这个id字段设置成主键!

ALTER TABLE Persons ADD CONSTRAINT pk_id PRIMARY KEY (id);

如图

这样就可以在表存在的情况下,而这个字段不存在时,在SQL Server 2000中添加主键字段, 我们在企业管理器中查看一下!

如图

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多 好玩 好用 好看的干货教程可以 点击下方关注❤️ 微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《“微软蓝屏”敲响警钟:网络安全与系统稳定何去何从》

#“微软蓝屏”事件暴露了网络安全哪些问题?# 近日,一场由微软视窗系统软件更新所引发的全球性“微软蓝屏”事件,犹如一场突如其来的风暴,以雷霆万钧之势席卷了整个科技领域。这一事件宛如一颗投入平静湖面的巨石,瞬间激…

centos系统mysql数据库压缩备份与恢复

文章目录 压缩备份一、安装 xtrabackup二、数据库中创建一些数据三、进行压缩备份四、模拟数据丢失,删库五、解压缩六、数据恢复 压缩备份 一、安装 xtrabackup 确保已经安装了 xtrabackup 工具。可以从 Percona 的官方网站 获取并安装适合你系统的版本。 # 添加…

Study--Oracle-07-ASM相关参数(三)

一、ASM初始化参数 1、ASM全量参数,见附件 2、ASM重要参数 3、ASM权限 ASM的三大系统权限包括SYSDBA、‌SYSOPER和SYSASM。‌ SYSDBA(‌系统管理员)‌:‌这是最高级别的权限,‌允许用户执行所有的数据库管理任务&a…

Windows 11 家庭中文版 安装 VMWare 报 安装程序检测到主机启用了Hyper-V或Device

1、问题 我的操作系统信息如下: 我在安装 VMWare 的时候,报: 因为我之前安装了 docker 桌面版,所以才报这个提示。 安装程序检测到主机启用了 Hyper-v或 Device/credential Guard。要在启用了Hyper-或 Device/Credential Guard …

系统架构师考点--设计模式

大家好。今天来总结一下设计模式的相关考点。这部分考点也有可能在论文中出现,这里总结的可能不够全面,大家自己可以翻一下教材好好了解一下。 架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反…

[k8s源码]9.workqueue

client-go 是一个库,提供了与 Kubernetes API 服务器交互的基础设施。它提供了诸如 Informer、Lister、ClientSet 等工具,用于监听、缓存和操作 Kubernetes 资源。而自定义控制器则利用这些工具来实现特定的业务逻辑和自动化任务。业务逻辑实现&#xff…

【ROS2】演示:为有损网络使用服务质量设置

目录 背景 先决条件 运行演示 命令行选项 添加网络流量 背景 请阅读有关 QoS 设置的文档页面,以获取有关 ROS 2 中可用支持的背景信息。 在这个演示中,我们将生成一个发布相机图像的节点和另一个订阅图像并在屏幕上显示图像的节点。然后,我们…

Fedora40安装telnet-server启用telnet服务

Fedora40安装telnet-server启用telnet服务 安装 telnet-server sudo yum install telnet-server或 sudo dnf install telnet-server启用服务 fedora40 或 CentosStream9 不能用 yum或dnf安装xinetd, telnet-server 的服务名为: telnet.socket 启用 telnet.socket.service …

三、基础语法2(30小时精通C++和外挂实战)

三、基础语法2(30小时精通C和外挂实战) B-02内联函数B-04内联函数与宏B-05_constB-06引用B-07引用的本质B-08-汇编1-X86-X64汇编B-09-汇编2-内联汇编B-10-汇编3-MOV指令C-02-汇编5-其他常见指令C-05-汇编8-反汇编分析C-07-const引用、特点 B-02内联函数 …

TreeSelect增加可筛选功能

TreeSelect官方可筛选示例 <template><el-tree-selectv-model"value":data"data"filterablestyle"width: 240px"/><el-divider /><el-divider />filter node method:<el-tree-selectv-model"value":data&q…

数据安全传输--加密算法

目录 古典加密算法与近代加密算法对比 算法分类 对称加密 常见的对称加密算法 在对称加密算法中密钥共享是一个很麻烦的问题 非对称加密 非对称加密过程 常见非对称加密算法 对称加密和非对称加密两者对比结论 DH算法 身份认证和数据认证技术 hash算法 hash算法特点…

PySide(PyQt),自定义图标按钮

1、在Qt Designer中新建画面&#xff0c;并放置3个按钮&#xff08;QPushButton&#xff09;和一个分组框&#xff08;QGroupBox&#xff09;小部件&#xff0c;分别命名为btn_1&#xff0c; btn_2&#xff0c;btn_3和btnStation。 2、将所有小部件的显示文字内容删除。 3、将…

论文复现:Predictive Control of Networked Multiagent Systems via Cloud Computing

Predictive Control of Networked Multiagent Systems via Cloud Computing论文复现 文章目录 Predictive Control of Networked Multiagent Systems via Cloud Computing论文复现论文摘要系统参数初始化系统模型观测器预测过程控制器设计系统的整体框图仿真结果 论文摘要 翻译…

杰发科技Bootloader(2)—— 基于7840的Keil配置地址

序 在7840的sample代码里面有一个简单的Boot跳转APP的示例 PFlash地址从0开始 DFlash的地址从1000000开始 Boot解析 他的boot地址配置为0 Boot的代码主要是这几行&#xff0c;主要作用就是Flash的跳转 int main(void) {SystemClock_Config();InitDebug();printf("demo…

NSAT-8000与Chroma8000相比,有什么独特优势?

在电源模块的广泛应用推动下&#xff0c;测试效率成为行业关注的焦点。纳米软件响应这一需求&#xff0c;推出了NSAT-8000电源自动测试系统&#xff0c;其0代码操作模式大幅简化了测试流程。那么与Chroma 8000系统相比&#xff0c;有什么不同呢&#xff1f; 一、测试项目搭建 C…

nacos get changed dataId error, code: 403

nacos get changed dataId error, code: 403问题解决 问题出现原因&#xff1a;解决办法&#xff1a;需要在运行项目的配置添加权限账号和密码,重启服务 问题出现原因&#xff1a; 由于nacosserver开启了权限验证&#xff0c;项目启动时出现异常 nacos.core.auth.caching.ena…

数据结构->线性结构->顺序存储->静态链表

一、思路 链表由节点组成。 1、分析需求&#xff0c;画图&#xff1a; 2、定义学生结构体&#xff0c;包含姓名、年龄、性别和下一个学生的指针&#xff1a; #include <stdio.h> #define N 20// 定义性别枚举类型&#xff0c;固定值&#xff0c;不是男就是女 typedef e…

torchscript接口

一、定义 定义script、eager、onnx 模式对比案例生成的模型可以被c调用接口解读 二、实现 定义 可以在高性能环境libtorch&#xff08;C &#xff09;中直接加载&#xff0c;实现模型推理&#xff0c;而无需Pytorch训练框架依赖无需代码&#xff0c;直接加载模型&#xff0c…

国中水务:果汁能救“水”吗?

喝下汇源果汁有什么&#xff08;“功效”&#xff09;&#xff1f;这家公司最有发言权。 今天我们聊聊——国中水务。 最近&#xff0c;国中水务公告称拟通过收购&#xff0c;间接控股北京汇源&#xff0c;即将把“垂涎已久”的汇源收入囊中。 两家的故事得从几年前说起&#…

学习大数据DAY21 Linux基本指令2

目录 思维导图 搜索查看查找类 find 从指定目录查找文件 head 与 tail 查看行 cat 查看内容 more 查看大内容 grep 过滤查找 history 查看已经执行过的历史命令 wc 统计文件 du 查看空间 管道符号 | 配合命令使用 上机练习 4 解压安装类 zip unzip 压缩解压 tar …