数据库----------约束、主键约束

news2024/11/9 4:04:07

目录

1.简介

1.概念

2.作用

3.分类

2.主键约束 

1.概念

2.操作

1.添加单列主键

2.添加多列联合主键

3. 通过修改表结构添加主键

4.删除主键


1.简介

1.概念

约束英文: constraint

约束实际上就是表中数据的限制条件

2.作用

表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值

(手机号)不能为空,有些列的值(身份证号)不能重复。

3.分类

  • 主键约束(primary key) PK
  • 自增长约束(auto_increment)
  • 非空约束(not null)
  • 唯一性约束(unique)
  • 默认约束(default)
  • 零填充约束(zerofill)
  • 外键约束(foreign key) FK

2.主键约束 

1.概念

  • MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在RDBMS中尽快的找到某一行
  • 主键约束相当于 唯一约束+非空约束 的组合,主键约束列不允许重复,也不允许出现空值。
  • 每个表最多只允许一个主键
  • 主键约束的关键字是: primary key
  • 当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引

2.操作

1.添加单列主键

创建单列主键有两种方式,一种是在定义字段的同时指定主键,一种是定义完字段之后指定主键

方式1-语法:

-- 在 create table 语句中,通过 PRIMARY KEY关键字来指定主键。
-- 在定义字段的同时指定主键,语法格式如下:
create table表名(
        ...
        <字段名><数据类型>primary key
		...
)

方式1-实现:

use abc;
create table emp1(
        eid int primary key,
		name varchar(20),
		deptId int,
		salary double
);

方式2-语法:

--在定义字段之后再指定主键,语法格式如下:
create table表名(
    ...
    [constraint <约束名>] primary key [字段名]
) ;

方式2-实现:

use abc;
create table emp2(
         eid int,
		 name varchar(20),
		 deptId int,
		 salary double,
		 constraint pk1 primary key(eid)
);

也可以省略“constra pk1” 

use abc;
create table emp2(
         eid int,
		 name varchar(20),
		 deptId int,
		 salary double,
		 primary key(eid)
);

2.添加多列联合主键

所谓的联合主键,就是这个主键是由一张表中多个字段组成的。

注意:

  1. 当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。
  2. 一张表只能有一个主键,联合主键也是一个主键

语法:

create table 表名(
     ...
     primary key(字段1,字段2,...,字段n)
);

实现:

create table emp3(
         eid int,
		 name varchar(20),
		 deptId int,
		 salary double,
		 primary key(eid,name)
);

3. 通过修改表结构添加主键

主键约束不仅可以在创建表的同时创建,也可以在修改表时添加。

语法:

create table 表名(
      ...
);
alter table <表名> add primary key(字段列表);

实现:

*添加单列主键

create table emp4(
         eid int,
		 name varchar(20),
		 deptId int,
		 salary double
);
alter table emp4 add primary key (eid);

*添加多列主键 

create table emp4(
         eid int,
		 name varchar(20),
		 deptId int,
		 salary double
);
alter table emp4 add primary key (eid,deptId);

4.删除主键

一个表中不需要主键约束时,就需要从表中将其删除。删除主键约束的方法要比创建主键约束容易

的多。

格式:

alter table <数据表名> drop primary key;

实现:

-- 删除单列主键
alter table emp1 drop primary key;
-- 删除联合主键
alter table emp5 drop primary key;

 所以不管是单列还是联合,都是同样的格式


 

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

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

相关文章

系统无损迁移、硬盘系统复制完整教程(常用于升级更大硬盘的场景)

阿酷TONY / 2023-4-15 / 长沙 这个教程的应用背景或场景是这样的&#xff1a; 原本使用的ThinkPad笔记本电脑是250G的SSD固态硬盘&#xff0c;使用了一两年后&#xff0c;空间不足了&#xff0c;这个时候需要换一块500G或更大的SSD硬盘&#xff0c;那么问题来了&#xff0c;通…

人员跌倒识别检测系统 yolov7

人员跌倒识别检测系统通过PythonYOLO7网络模型算法&#xff0c;人员跌倒识别检测算法模型对现场画面中有人员倒地摔倒行为实时分析预警&#xff0c;发现则立即抓拍存档告警同步提醒后台值班人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff0c;研究团队…

(十二)排序算法-插入排序

1 基本介绍 1.1 概述 插入排序属于内部排序法&#xff0c;是对于欲排序的元素以插入的方式找寻该元素的适当位置&#xff0c;以达到排序的目的。 插入排序的工作方式非常像人们排序一手扑克牌一样。开始时&#xff0c;我们的左手为空并且桌子上的牌面朝下。然后&#xff0c;…

Flink处理大型离线任务稳定性与性能调优探索

Apache Flink作为分布式处理引擎&#xff0c;用于对无界和有界数据流进行状态计算。其中实时任务用于处理无界数据流&#xff0c;离线任务用于处理有界数据。通过本文你将掌握让大型离线任务运行稳定的能力&#xff0c;同时能够通过分析离线任务运行特点&#xff0c;降低任务运…

150.网络安全渗透测试—[Cobalt Strike系列]—[DNS Beacon原理/实战测试]

我认为&#xff0c;无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感&#xff01;&#xff01;&#xff01; 文章目录一、DNS Beacon原理1、DNS Beacon简介2、DSN Beacon工作原理二、DNS Beacon实战测试1、实战测试前提2、实战测试过程一、DNS Beacon原理 1、…

大数据分析工具Power BI(三):导入数据操作介绍

导入数据操作介绍进入PowBI&#xff0c;弹出的如下页面也可以直接关闭&#xff0c;在Power BI中想要导入数据需要通过Power Query 编辑器&#xff0c;Power Query 主要用来清洗和整理数据。文件资料下载&#xff1a;https://download.csdn.net/download/xiaoweite1/87587711一、…

Wijmo JavaScript UI 5.20222.877 Crack

Wijmo使用更快、更灵活的 JavaScript UI 组件构建更好的应用程序 使用 Wijmo&#xff0c;利用我们引人注目的 UI 组件库&#xff0c;将更多时间花在应用程序的核心功能上。要求零依赖&#xff0c;Wijmo sports弹性网格&#xff0c;业内最好的 JavaScript 数据网格&#xff0c;提…

JVM性能调优方法和模板

每天 100 万次登陆请求&#xff0c;8G 内存该如何设置 JVM 参数&#xff0c;大概可以分为以下 8 个步骤 。 第一步、新系统上线如何规划容量&#xff1f; 1. 套路总结 任何新的业务系统在上线以前都需要去估算服务器配置和 JVM 的内存参数&#xff0c;这个容量与资源规划并不…

关于 AI ,大家关心的问题

阅读本文大概需要 1.46 分钟。兄弟们&#xff0c;自从我跟曹老师准备合伙做一个 AI 生态的新社群之后&#xff0c;很多人问我最多的问题就是&#xff1a;AI 时代对我们普通人来说意味着什么&#xff1f;普通人又该如何去把握 AI 时代的机会&#xff1f;那么&#xff0c;今天&am…

nodejs+vue家庭菜谱食谱管理系统

目 录 摘 要 I ABSTRACT I 目 录 III 第1章 绪论 1 1.1开发背景 1 1.2开发意义 1 1.3研究内容 1 第2章 主要技术和工具介绍 5 第3章 系统分析 4 3.1可行性分析 4 3.1.1经济可行性 4 3.1.2技术可行性 4 3.1.3操作可行性 4 3.2需求分…

【云原生】k8s Ingress 实现流量路由规则控制

文章目录前言什么是 IngressIngress 的定义格式Ingress 的类型有哪几种&#xff1f;1. Simple fanout2. Name-based virtual hosting3. Path-based routing该如何实现更新 IngressIngress ControllerIngress Class总结前言 在 Kubernetes 中&#xff0c;Ingress 是一个非常重要…

【数据结构与算法分析inC-MarkAllen】1-数学基础

文章目录1. 第一章1.1 进行算法分析目的1.1.1 适应大量数据情况从 NNN 个数中选择第 kkk 大的数递减排序&#xff0c;取第K大的数插入排序思想1.1.2 边界条件正确1.2 数学知识复习1.2.1 指数1.2.2 对数1.2.3 级数几何级数算术级数1.2.4 模运算性质1.2.5 证明方法归纳法斐波那契…

CRM系统和ERP管理系统二者有何区别?

我们常提到的企业管理系统有CRM系统和ERP管理系统&#xff0c;那么二者有何区别呢&#xff1f; 一、目的。 CRM客户关系管理系统主要的目的是已客户关系的建立、发展以及维护。ERP系统主要强调的业务目的是未来提高整个业务的生产力。 二、重点。 …

回顾|伍鸣博士出席《华人之光-世界瞩目的华人 Web3 项目》圆桌论坛

*本文节选自Foresight News《华人之光——世界瞩目的华人 Web3 项目》的圆桌论坛由 Foresight Ventures 与 Foresight News 联合主办的「FORESIGHT 2023 」年度峰会上&#xff0c;在《华人之光——世界瞩目的华人 Web3 项目》的圆桌论坛中&#xff0c;Conflux Co-Founder 伍鸣、…

LiveData数据倒灌?你真的用对了吗?源码解析

文章目录livedata/lifecycleandroidx-lifecycle基本使用uml-关键角色关系观察者模式关键源码分析livedata基本使用源码分析还是从observe开始livedata变化通知观察者viewmodel源码分析FAQlifecycle用到的设计模式lifecycle是如何监听aty生命周期的一些废弃和原因为什么废弃注解…

理解RESTful架构

越来越多的人开始意识到&#xff0c;网站即软件&#xff0c;而且是一种新型的软件。 这种"互联网软件"采用客户端/服务器模式&#xff0c;建立在分布式体系上&#xff0c;通过互联网通信&#xff0c;具有高延时&#xff08;high latency&#xff09;、高并发等特点。…

【华为机试真题详解JAVA实现】—配置文件恢复

目录 一、题目描述 二、解题代码 一、题目描述 有6条配置命令,它们执行的结果分别是: 命 令执 行resetreset whatreset boardboard faultboard addwhere to add<

Flash Linux to eMMC

实验目的&#xff1a;从eMMC启动Linux系统 Step1:确定eMMC被挂在哪个设备 哪个设备含有boot0分区和boot1分区&#xff0c;就是eMMC。实验中是位于mmcblk1上。 rootam64xx-evm:~# ls -l /dev/mmcblk* brw-rw---- 1 root disk 179, 0 Feb 27 13:25 /dev/mmcblk0 brw-rw---- …

实验三、图像复原

1. 实验目的 (1) 理解退化模型。 (2) 掌握常用的图像复原方法。 2. 实验内容 (1) 模拟噪声的行为和影响的能力是图像复原的核心。 示例 1 &#xff1a;使用 imnoise 添加噪声。 J imnoise(I,gaussian) 将方差为 0.01 的零均值高斯白噪声添加到灰度图像 I。 J imnoise(I,g…

简单的做一个学校毕业啊项目

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…