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

news2024/11/15 11:35:16

文章目录

  • 前言
  • 一、设置表字段的主键约束(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(索引名));

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

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

相关文章

AUTOSAR文档如何阅读 -- 这些缩写是干嘛的!!!

目录 1 Autosar BSW Module List 2 Autosar规范文档的类型 2.1 Autosar文档中提到的缩写 3 如何快速查看相邻CP Autosar版本之间的差异 结尾 优质博文推荐阅读(单击下方链接,即可跳转): 点击返回「《Autosar从入门到精通-实…

[入门必看]数据结构5.2:二叉树的概念

[入门必看]数据结构5.2:二叉树的概念 第五章 树与二叉树5.2 二叉树的概念知识总览5.2.1_1 二叉树的定义和基本术语5.2.1_2 二叉树的性质5.2.2 二叉树的存储结构 5.2.1_1 二叉树的定义和基本术语二叉树的基本概念二叉树的五种状态几个特殊的二叉树满二叉树&#xff1…

智慧医院的信息集成平台建设与配电设计方案

摘要:随着云计算、5G、大数据、物联网等技术的不断发展与进步,推动着智慧医院建设的飞速发展。智慧医院建设强调医院内部业务的多流程联动和医疗信息互联互通的高协同效率,突出了数据驱动下构建高质量数据的必要性。文章提出并分析智慧医院发…

操作Redis只有RedisTemplate吗?

还在只用 RedisTemplate 访问 Redis 吗?这几种方式给你安排上! 开始准备RedisTemplateJPA RepositoryCache总结 开始准备 开始之前我们需要有Redis安装,我们采用本机Docker运行Redis,主要命令如下 docker pull redis docker ru…

细数Java集合List的10个坑

1 Arrays.asList转换基本类型数组的坑 在实际的业务开发中,我们通常会进行数组转List的操作,通常我们会使用Arrays.asList来进行转换 但是在转换基本类型的数组的时候,却出现转换的结果和我们想象的不一致。 上代码 int[] arr {1, 2, 3}…

Centos安装python3详细教程

Centos安装python3详细教程 转载:https://blog.csdn.net/qq_32742573/article/details/119849634?spm1001.2014.3001.5502 文章目录 Centos安装python3详细教程 1、先查看系统python的位置在哪儿2、下载python3的包之前,要先安装相关的依赖包&#xff0…

接打电话的蓝牙耳机哪个牌子好?接听电话蓝牙耳机推荐

耳机已经成为人们生活中不可或缺的重要物件,乘坐公共交通,在图书馆学习,在操场上运动,可以看到许多不同种类的蓝牙耳机,可知耳机品牌、种类众多,质量良莠不齐,耳机产品的价格区间也相差巨大&…

DAB-Deformable-DETR代码学习记录之模型构建

DAB-DETR的作者在Deformable-DETR基础上,将DAB-DETR的思想融入到了Deformable-DETR中,取得了不错的成绩。今天博主通过源码来学习下DAB-Deformable-DETR模型。 首先我么看下Deformable的创新之处: Deformable-DETR创新 多尺度融合 首先便是…

如何真正认识 Linux 系统结构?这篇文章告诉你

Linux 系统一般有 4 个主要部分:内核、shell、文件系统和应用程序。内核、shell 和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。 Linux内核 内核是操作系统的核心,具有很多最基本功能,…

Springboot获取jar包中resources资源目录下的文件

阿萨斯多问题现象: 今天在项目中遇到一个业务场景,需要用到resources资源目录下的文件,然后就在思考一个问题: 当项目打成jar后,Springboot要如何获取resources资源目录下的文件呢? 问题分析: 如…

基于GPT-3和DALL-E的原创漫画生成

我花了上个月的时间探索如何使用 OpenAI 的 GPT-3 文本生成器和他们的 DALL-E 图像到文本系统来创建新的漫画,而无需编写任何源代码。 请注意,这两个系统都处于测试阶段,在我用完所有免费代币后,它们开始收取象征性的使用费。 不过…

数据湖Iceberg-简介(1)

文章目录 Iceberg简介概述特性数据存储、计算引擎插件化实时流批一体数据表演化(Table Evolution)模式演化(Schema Evolution)分区演化(Partition Evolution)列顺序演化(Sort Order Evolution&a…

Inpaint9.1最新网页版下载及inpaint怎么去水印教程

市面上去水印的软件很多,但专业去除水印的,除了Photoshop,inpaint占有一席之地。在今天的数字时代,我们经常会遇到需要处理图片的情况。然而,当我们遇到水印在图片上,我们就需要寻找一个有效的方式来去除它…

总结831

学习目标: 4月(复习完高数18讲内容,背诵21篇短文,熟词僻义300词基础词) 学习内容: 暴力英语:背诵《start with you》,《大独裁者》第四段,默写《start with you》 高等数学&#x…

信号量【Linux】

文章目录 1. POSIX信号量1.1 引入1.2 概念1.3 PV原语(原理)1.4 相关接口 2. 二进制信号量3. 基于环形队列的生产消费模式3.1 介绍3.2 为什么要使用环形队列3.3 环形队列的作用3.4 实现互斥和同步两个信号量框架生产和消费的逻辑完善环形队列1信号量完善环…

MyBatis-学习修改尚硅谷最新教程笔记

一、MyBatis mybatis mybatis.xml配置文件 mapper接口类 mapper.xml映射处理配置文件 1、MyBatis简介 1.1、MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下…

【图像抠图】【深度学习】Ubuntu18.04下GFM官方代码Pytorch实现

【图像抠图】【深度学习】Ubuntu18.04下GFM官方代码Pytorch实现 提示:最近开始在【图像抠图】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像抠图】【深度学习】Ubuntu18.04下GFM官方代码Pytorch实现前言数据集说明1.AM-2k【自然动物】2.B…

银行数字化转型导师坚鹏:学习贯彻二十大精神 解码乡村振兴之道

学习贯彻二十大精神 解码乡村振兴之道(保险客户) 课程背景: 很多保险公司从业人员存在以下问题: 不知道如何准确解读二十大精神? 不清楚乡村振兴相关政策要求? 不知道如何有效推动乡村振兴&#xf…

【JavaEE初阶】多线程(三)volatile wait notify关键字 单例模式

摄影分享~~ 文章目录 volatile关键字volatile能保证内存可见性 wait和notifywaitnotifynotifyAllwait和sleep的区别小练习 多线程案例单例模式饿汉模式懒汉模式 volatile关键字 volatile能保证内存可见性 import java.util.Scanner;class MyCounter {public int flag 0; }p…

2023新型智慧城市解决方案(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 智慧城市建设整体框架 智慧城市建设内容 智慧城市云基础架构的必要性 智慧城市建设效益 智慧城市建设效益17 智慧城市建设模式建议 智慧城市建设-整体解决法方案 智慧城市建设…