当前位置: 首页 > news >正文

Mysql列的完整性约束详解(主键约束)

文章目录

  • 前言
  • 一、设置表字段的主键约束(PRIMARY KEY,PK)
    • 1.单字段主键
    • 2.多字段主键
  • 总结


前言

        完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。MySQL中基本的完整性约束条件如表3-11所示。下表是完整性约束条件:


设置表字段的主键约束(PRIMARY KEY,PK)

        主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份,每个人都具有唯一的身份证号。设置表的主键是指在创建表时设置表的某个字段为该表的主键。

        主键的主要目的是帮助数据库管理系统以最快的速度查找到表的某一条信息。主键必须满足的条件就是主键必须是唯一的,表中任意两条记录的主键字段的值不能相同,并且是非空值。主键可以是单一的字段,也可以是多个字段的组合。

1.单字段主键

单字段主键的语法规则如下:

CREATE TABLE tablename(

    propName propType PRIMARY KEY, ......

);

CREATE TABLE tablename(

    propName propType , ......

PRIMARY KEY(propType)

);

创建表school,设置id字段为PK约束,再查看class表信息,SQL语句如下

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school

mysql> create table class(id int PRIMARY KEY, name varchar(128), teacher varchar(64));         #创建表class

mysql> desc class ;  #查询表class 的定义, describe class 效果等同

mysql> show create table class ;  #同样可以实现查询表class 的定义

mysql> insert into class VALUES(1,'一班','martin');  #插入成功

mysql> insert into class VALUES(1,'二班','rock');    #因主键约束,插入失败

Mysql 支持给主键设置名字:

CREATE TABLE tablename(

    propName propType , ......

CONSTRAINT pk_name PRIMARY KEY(propType)

);

给id字段的PK约束设置一个名字,可以执行SQL语句CONSTRAINT。创建表class:

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school

mysql> create table class(id int , name varchar(128), teacher varchar(64), CONSTRAINT id_pk PRIMARY KEY (id));         #创建表class

mysql> desc class ;  #查询表class 的定义, describe class 效果等同

mysql> show create table class ;  #同样可以实现查询表class 的定义

mysql> insert into class VALUES(1,'一班','martin');  #插入成功

mysql> insert into class VALUES(1,'二班','rock');    #因主键约束,插入失败

2.多字段主键

主键是由多个属性组合而成时,在属性定义完之后统一设置主键。语法规则如下:

CREATE TABLE tablename( 

    propName1 propType ,

    propName2 propType ,

    ......                    

[CONSTRAINT pk_name]PRIMARY KEY(propName1, propName2)

);

多字段主键的设置。

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school

mysql> create table class3(id int, name varchar(128), teacher varchar(64), CONSTRAINT id_pk PRIMARY KEY(id,name));         #创建表class3,设置联合主键

mysql> desc class3 ;  #查询表class3 的定义, describe class3 效果等同

mysql> insert into class VALUES(1,'一班','martin');  #插入成功

mysql> insert into class VALUES(1,'一班','rock');    #因联合主键约束,插入失败


总结

多字段主键格式:

create table tablename(字段名  数据类型 ...... primary key(字段名,字段名);

单字段主键格式:

create table tablename( 字段名 数据类型 primary key (索引名)......);

create table tablename(字段名  数据类型 ,......,primary key(索引名));

相关文章:

Mysql列的完整性约束详解(主键约束)

文章目录 前言一、设置表字段的主键约束(PRIMARY KEY,PK) 1.单字段主键2.多字段主键总结 前言 完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再…...

母婴市场竞争激烈,如何通过软文营销脱颖而出

如今,随着宝宝数量增加以及人们对孩子的重视程度的增加,母婴市场愈发火爆。然而,母婴行业的竞争也越来越激烈,企业需要不断开拓新市场才能生存。在这样的情况下,软文营销成为了母婴企业拓展市场的一种有效方式。 首先&…...

java--线程池

目录 1.线程池概 2 为什么要使用线程池 1创建线程问题 2解决上面两个问题思路: 3线程池的好处 4线程池适合应用场景 3 线程池的构造函数参数 1.corePoolSize int 线程池核心线程大小 2.maximumPoolSize int 线程池最大线程数量 3.keepAliveTime long 空闲…...

asp.net765数码手机配件租赁系统

员工部分功能 1.员工登录,员工通过自己的账号和密码登录到系统中来,对租赁信息进行管理 2.配件查询,员工可以查询系统内的配件信息 3.客户信息管理,员工可以管理和店内有业务往来的客户信息 4.配件租赁,员工可以操作用…...

有关态势感知(SA)的卷积思考

卷积是一种数学运算,其本质是将两个函数进行操作,其中一个函数是被称为卷积核或滤波器的小型矩阵,它在另一个函数上滑动并产生新的输出。在计算机视觉中,卷积通常用于图像处理和特征提取,它可以通过滤波器对输入图像进…...

Docker快速部署springboot项目

有很多开发者在项目部署过程中都会遇到一些繁琐的问题,比如打包、上传、部署等。而使用Docker可以非常方便地解决这些问题。在本文中,将详细讲解如何使用IDEA中的docker打包插件,将代码打包并直接发布到服务器上。这样,我们就可以…...

Linux命令rsync增量同步目录下的文件

业务场景描述 最近遇到一个问题,需要编写相应的Linux命令,增量同步/var/mysql里的所有文件到另外一个目录/opt/mysql,但是里面相关的日志文件xx.log是不同步的,这个场景,可以使用rsync来实现 什么是rsync命令&#x…...

项目管理---(1)项目管理一般知识

一、项目管理一般知识 1.1 项目的一般知识 1.1.1 项目的定义: 项目是为创造独特的产品、服务或成果而进行的临时性工作。 1.1.2 项目的目标: 项目的目标包括成果性目标和约束性目标。 成果性目标:指通过项目开发出满足客户要求的产品、系…...

超过50多个热门的免费可用 API 分享

今天吃什么:随机返回一顿美味食物,解决你今天吃什么的难题。万年历:获取公历日期对应的农历、农历节日节气、天干地支纪年纪月纪日、生肖属相、宜忌、星座等信息。支持查询未来15天。笑话大全:各种最新、最及时的幽默、搞笑段子&a…...

记一次死锁问题

最近在做一个需求,碰到了死锁的问题,记录下解决问题的过程 背景 这个需求要改动一个接口,我这边称为A接口,原先的逻辑是A接口内部会调用c方法,c方法是一个dubbo方法, 现在需要再A接口里添加调用B方法&…...

Bean 作⽤域和⽣命周期

目录 1.lombok 1.1 1.添加依赖:(pom.xml) 1.2 在实体类上使用lombok提供的注解 1.3 安装插件 2. Bean 的 6 种作⽤域(Scope) 2.1 singleton(默认模式) 2.2 prototype(原型模式…...

SVN通过备份、过滤、再导入的方式彻底删除废弃目录

文章目录 前言简要步骤操作示例总结 前言 SVN占用的空间随着项目版本迭代越来越大,因为保存了历史记录中的各个版本,所以即使本地把废弃的目录删掉提交,也不会释放出多余的空间,大概率因为操作删除增加了一个版本号,使…...

golang支持优雅关闭和core错误记录

#经过测试,不能使用 ENTRYPOINT ["/modapi/modapi", "1>> /dev/null","2>> ./logs/stderr.log"],原因是虽然这种方案可以 #保证modapi命令为1号程序,能够接收到os的signal信号。但是如果程序core了…...

Basics of Container Isolation 容器隔离的实现原理

目录 容器隔离的实现原理 1. 使用cgroups实现资源隔离 自定义一个cgroup 设置进程的内存使用 启动一个docker 容器,观察cgroup的创建情况 2. 使用Namespaces进行资源分区 namespace继承关系引发的问题 3. 结合来使用Namespaces 和chroot 4. 结论 参考文档…...

EBS R12.1 注册客户化应用的步骤

创建客户化应用目录 登录成 applxxx 用户 -- applxxx 改成所需用户名 # 以标准INV模块作为客户化应用目录的模板 cd $APPL_TOP mkdir -p cust cp -r inv cust/template cd cust # 删除template 目录下的文件,只保留目录结构 cd $APPL_TOP/cust for rm_list in …...

算法记录 | Day38 动态规划

对于动态规划问题,将拆解为如下五步曲 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509.斐波那契数 思路: 确定dp数组(dp table)以及下标的含义&#x…...

PMP项目管理-[第六章]进度管理

进度管理知识体系: 规划进度管理: 定义活动: 排列活动顺序: 估算活动持续时间: 制定进度计划: 6.1 规划进度管理 定义:为规划、编制、管理、执行和控制项目进度而制定政策、程序和文档的过程 作…...

Python变量

一、变量的定义 变量名的命名规范:变量名是标识符的一种,变量名不能随便起,要遵守 Python 标识符命名规范。 ## 常用的命名规范有以下几种: 1. 变量名为单个单词的话全部小写 name "张三" 2. 多个单词组成的话&#…...

准备换工作的看过来~

大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…...

免费AI人工智能在线写作伪原创-百度ai自动写文章

免费伪原创洗稿工具 免费伪原创洗稿工具现在终于推出了!你是否在写作的时候,经常因为缺乏灵感而苦恼?或者,你在撰写文章的时候,发现自己的语言表述不够丰富,缺乏变化,语句重复率太高&#xff1f…...

Linux:模式通配符 * 和globstar **(bash4新增)的使用

相关文章 Linux专栏https://blog.csdn.net/weixin_45791458/category_12234591.html 在bash的使用过程中,模式通配符可以说是最常见、也最实用的一类功能。很多时候我们在命令行里处理文件,并不是靠把完整文件名一个个手工敲出来,而是通过ba…...

网络性能诊断与优化:开源测试工具从入门到精通

网络性能诊断与优化:开源测试工具从入门到精通 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 网络性能问题常常隐藏在复杂的架构背后&a…...

comsol三元锂离子电池模型 NCA111三元锂离子电池21700 电化学-热耦合模型 老化...

comsol三元锂离子电池模型 NCA111三元锂离子电池21700 电化学-热耦合模型 老化模型 容量衰减模型 参数已经设置好 自己更改参数即可进行使用学习 可进行多倍率充放电仿真 有对应参考文献 A17打开COMSOL看到电池仿真模型时,老玩家都知道参数调教才是灵魂。今天咱们来…...

快速体验Seed-Coder-8B-Base:通过简单API调用实现代码自动生成

快速体验Seed-Coder-8B-Base:通过简单API调用实现代码自动生成 1. 为什么选择Seed-Coder-8B-Base 在当今快节奏的开发环境中,代码自动生成工具已经成为提升效率的必备利器。Seed-Coder-8B-Base作为一款专为代码生成优化的开源模型,具有以下…...

Ryujinx:用C重构Switch游戏生态的技术探索之旅

Ryujinx:用C#重构Switch游戏生态的技术探索之旅 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 当游戏主机硬件迭代加速,玩家渴望在更强大平台体验经典游戏时&a…...

双向互转|IEC104↔Modbus 工业网关,电力 / 工业现场一键通联

一、产品核心定位三格电子推出SG-IEC104-TCP与SG-TCP-IEC104两款工业级网关,专为电力、能源、智能制造场景打造,实现IEC104 与 Modbus 双向协议转换,兼容 DLT645 电表采集,支持 MQTT 上云,打通电力主站与现场设备的数据…...

如何在10分钟内构建高质量AI语音克隆模型:Retrieval-based-Voice-Conversion-WebUI完全指南

如何在10分钟内构建高质量AI语音克隆模型&#xff1a;Retrieval-based-Voice-Conversion-WebUI完全指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trendi…...

G-Helper深度解析:华硕笔记本轻量级性能控制架构与实战指南

G-Helper深度解析&#xff1a;华硕笔记本轻量级性能控制架构与实战指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...

wxlivespy:微信视频号直播数据高效捕获与智能分析解决方案

wxlivespy&#xff1a;微信视频号直播数据高效捕获与智能分析解决方案 【免费下载链接】wxlivespy 微信视频号直播间弹幕信息抓取工具 项目地址: https://gitcode.com/gh_mirrors/wx/wxlivespy 在数字化直播浪潮中&#xff0c;实时数据已成为驱动运营决策的核心引擎。wx…...

Qwen3.5-9B-AWQ-4bit与Claude对比评测:开源与闭源模型的技术选型

Qwen3.5-9B-AWQ-4bit与Claude对比评测&#xff1a;开源与闭源模型的技术选型 1. 评测背景与目标 在AI大模型领域&#xff0c;开源与闭源模型的选择一直是开发者面临的重要决策。本次评测聚焦于两款在开发者社区中备受关注的模型&#xff1a;开源的Qwen3.5-9B-AWQ-4bit和闭源的…...