数据库中的约束纯干货——主键约束

news/2024/5/11 4:11:58

目录

(一)特点:

(二)添加主键约束

2.1格式:

2.2举例:

2.3建立表级约束:

2.4建立表后增加主键约束

(三)复合主键

3.1格式:

3.2举例:


作用:用来唯一标识表中的一行记录

关键字:PRIMARY KEY

(一)特点:

1.主键约束相当于唯一约束+非空约束的组合。

2.主键约束列不允许重复,也不允许出现空值。

3.一个表最多只能有一个主键约束,可以在列级创建,也可以在表级别上创建

4.主键约束对应表中的一列或多列(复合主键)

5.当创建主键约束时,系统默认会在所在的列或列组合上建立对应的主键索引(主键查询的效率更高)

6.删除主键约束了,主键约束对应的索引就自动删除

7.不要修改主键字段的值,因为主键是数据记录的唯一标识,修改了就有可能破坏数据完整性


(二)添加主键约束

2.1格式:

CREATE TABLE 表明(
字段名 数据类型 PRIMARY KEY ,
字段名 数据类型
);
CREATE TABLE 表明(
字段名 数据类型,
字段名 数据类型,
CONSTRAINT 约束名 PRIMARY KEY(字段名)
);

2.2举例:

CREATE TABLE students(
id INT PRIMARY KEY ,
name VARCHAR(10)
);

添加值:

INSERT INTO students
values(1,'zha'),
(2,'zha'),#添加成功
(1,'zhang ')#添加失败,因为id重复
(3,null)#添加成功
(null,'asd')#添加失败,id不能为空

如果一个表建立两个主键约束:

CREATE TABLE students(
id INT PRIMARY KEY ,
name VARCHAR(10) PRIMARY KEY
);

报错:Multiple多重的

2.3建立表级约束:

CREATE TABLE students(
id INT  ,
name VARCHAR(10),
CONSTRAINT stu_id_test PRIMARY KEY(id) 
);

2.4建立表后增加主键约束

ALTER TABLE 表名称 ADD PRIMARY KEY(id);#字段列表可以是一个字段也可以是多个字段,如果是多个字段的话,是复合主键

(三)复合主键

3.1格式:
 

CREATE TABLE 表名(
字段名 数据类型,
字段名 数据类型,
PRIMARY KEY (字段名1,字段名2)
);

3.2举例:

CREATE TABLE students(
id INT  ,
name VARCHAR(10) ,
PRIMARY KEY(id,name)
);

添加值:

INSERT INTO students
values(1,'zha'),
(1,'sa'),#添加成功
(2,'sa ')#添加成功
(1,zha)#添加失败与第一条重复

(四)删除主键

ALTER TABLE 表名称
DROP PRIMARY KEY;

注:删除时,不需要指定主键名,因为一个表只有一个主键,删除主键约束后,非空还存在


http://www.mrgr.cn/p/55437870

相关文章

蓝桥杯真题Day40 倒计时19天 纯练题!

蓝桥杯第十三届省赛真题-统计子矩阵 题目描述 给定一个 N M 的矩阵 A,请你统计有多少个子矩阵 (最小 1 1,最大 N M) 满足子矩阵中所有数的和不超过给定的整数 K? 输入格式 第一行包含三个整数 N, M 和 K. 之后 N 行每行包含 M 个整数&#xf…

利用python搭建临时文件传输服务

场景 如果想从一台服务器上传输文件又多种方法,其中常见的是利用scp进行传输,但是需要知道服务器的账号密码才能进行传输,但有时候我们并不知道账号密码,这个时候我们就可以通过python -m SimpleHTTPServer 命令进行传输文件 启…

[ Linux ] git工具的基本使用(仓库的构建,提交)

1.安装git yum install -y git 2.打开Gitee,创建你的远程仓库,根据提示初始化本地仓库(这里以我的仓库为例) 新建好仓库之后跟着网页的提示初始化便可以了 3.add、commit、push三板斧 git add . //add仓库新增(变…

前端Web移动端学习day05

移动 Web 第五天 响应式布局方案 媒体查询Bootstrap框架 响应式网页指的是一套代码适配多端,一套代码适配各种大小的屏幕。 共有两种方案可以实现响应式网页,一种是媒体查询,另一种是使用bootstrap框架。 01-媒体查询 基本写法 max-wid…

Linux系统使用Docker部署Portainer结合内网穿透实现远程管理容器和镜像

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

放弃 Rust 选择 Zig,Xata 团队推出 pgzx —— 计划使用 Zig 开发基于 PG 的分布式数据库

Summary Xata 公司在基于 PostgresSQL 开发自己的分布式数据库,出于 Zig 和 C 语言以及 PostgreSQL 的 API 有更好的互操作性的考虑,他们选择了 Zig 而非当红炸子鸡语言 Rust。他们的博客文章中对 pgzx 进行了介绍。让我们来看下他们对 Zig 和 Rust 语言…

Qt消息机制和事件

Qt消息机制和事件 Qt消息机制和事件--2 事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出&…

IP组播基础

原理概述 IANA ( Internet Assigned Numbers Authority )将 IP 地址分成了 A 、 B 、 C 、 D 、 E5类,其中的 D 类为组播 IP 地址,范围是224.0.0.0~239.255.255.255。 一个 IP 报文,其目的地址如果是单播 IP 地址&#xff…

MLIR多层中间表示——用MLIR构建编译器(中)

1.3. 玩具语言IR方言 玩具语言方言:方言 在TableGen中声明性指定 def Toy_Dialect : Dialect {let summary = Toy IR Dialect;let description = [{这是对玩具语言方言的一个更长的描述...}];// 方言的命名空间.let name = toy;// 方言类定义所在的C++命名空间let cppNamespac…

Gitlab的流水线任务【实现每小时自动测试 dev分支的更新】

背景 在现代软件开发实践中,持续集成(Continuous Integration, CI)是确保代码质量和快速响应软件缺陷的关键策略。GitLab 提供了强大的 CI/CD 功能,允许开发者自动化测试和部署流程。本文将介绍如何设置 GitLab 流水线计划任务&a…

【iOS ARKit】3D文字

首先,3D场景中渲染的任何虚拟元素都必须具有网格(顶点及顶点间的拓扑关系),没有网格的元素无法利用GPU 进行渲染,因此,在3D 场景申渲染 3D文字时,文字也必须具有网格。在计算机系统中&#xff0…

OSCP靶场--pc

OSCP靶场–pc 考点(CVE-2022-35411[rpc漏洞chisel端口转发]) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV 192.168.178.210 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-28 04:07 EDT Nmap scan rep…

景联文科技高质量大模型训练数据汇总!

3月25日,2024年中国发展高层论坛年会上,国家数据局局长刘烈宏在“释放数据要素价值,助力可持续发展”的演讲中表示,中国10亿参数规模以上的大模型数量已超100个。 当前,国内AI大模型发展仍面临诸多困境。其中&#xff…

快速创建zookeeper集群

先说明,zookeeper集群的3个节点都放在同一个虚拟机(穷),所以搭建是一个伪集群,因为一个服务器挂机,所有节点都会停止。工作实际情况安装到三个服务器,并修改节点配置的ip地址即可(红…

itextPdf生成pdf简单示例

文章环境 jdk1.8&#xff0c;springboot2.6.13 POM依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><dependency><groupId>com.ite…

C++多重继承与虚继承

多重继承的原理 多重继承(multiple inheritance)是指从多个直接基类中产生派生类的能力。 多重继承的派生类继承了所有父类的属性。 在面向对象的编程中&#xff0c;多重继承意味着一个类可以从多个父类继承属性和方法。 就像你有一杯混合果汁&#xff0c;它是由多种水果榨取…

Visio中存在问题的解决方法

公式缩放 mathtype公式在visio缩放之后&#xff0c;出现了变形。 解决方法&#xff1a;每次输入公式都通过 插入->对象->mathType Equation 新建一个公式。可以避免 注&#xff1a;网上有的说在word中使用mathtype编写公式&#xff0c;之后复制到visio中。 插入波形 选择…

python知识点总结(十)

python知识点总结十 1、装饰器的理解、并实现一个计时器记录执行性能&#xff0c;并且将执行结果写入日志文件中2、队列和栈的区别&#xff0c;并且用python实现3、设计实现遍历目录与子目录4、CPU处理进程最慢的情况通常发生在以下几种情况下&#xff1a;5、CPU处理线程最慢的…

C# 获取程序路径的几种方法及其区别【WPF】

遇到的问题 但最近发现一个问题:如果程序是由用户通过exe文件直接打开的,获取同目录下配置文件不会有问题;但如果程序是由第三方应用启动的,通过不同方式获取的“当前目录”会有不同。以下是常用的记住获取当前目的的方法: System.Environment.CurrentDirectory System.IO…

C语言分支循环语句详解

分支和循环语句是什么 在我们写程序的时候&#xff0c;总会遇到想一直循环执行某种语句的时候&#xff0c;这时候我们就要使用一种语句叫循环语句&#xff0c;或者带一些判断条件的语句&#xff0c;在C语言中提供了像这些的循环语句和分支语句 if else 语句 这是一种判断语句…