MySQL数据库基础(九):SQL约束

文章目录

SQL约束

一、主键约束

二、非空约束

三、唯一约束

四、默认值约束

五、外键约束(了解)

六、总结


SQL约束

一、主键约束

  1. PRIMARY KEY 约束唯一标识数据库表中的每条记录。
  2. 主键必须包含唯一的值。
  3. 主键列不能包含 NULL 值。
  4. 每个表都应该有一个主键,并且每个表只能有一个主键。

遵循原则:

  1. 主键应当是对用户没有意义的
  2. 永远也不要更新主键。
  3. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
  4. 主键应当由计算机自动生成。

创建主键约束:创建表时,在字段描述处,声明指定字段为主键

删除主键约束:如需撤销 PRIMARY KEY 约束,请使用下面的 SQL

alter table persons2 drop primary key;

补充:自动增长

我们通常希望在每次插入新记录时,数据库自动生成字段的值。

我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整型,自动增长列必须为键(一般是主键)。

下列 SQL 语句把 "Persons" 表中的 "Id" 列定义为 auto_increment 主键

create table persons3(id int auto_increment primary key,first_name varchar(255),last_name varchar(255),address varchar(255),city varchar(255)
) default charset=utf8;

向persons添加数据时,可以不为Id字段设置值,也可以设置成null,数据库将自动维护主键值:

insert into persons3(first_name,last_name) values('Bill','Gates');
insert into persons3(id,first_name,last_name) values(null,'Bill','Gates');

运行效果:

二、非空约束

NOT NULL 约束强制列不接受 NULL 值。

NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

下面的 SQL 语句强制 "id" 列和 "last_name" 列不接受 NULL 值:

 

三、唯一约束

UNIQUE 约束唯一标识数据库表中的每条记录。

UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

请注意: 每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

 

四、默认值约束

default 默认值

五、外键约束(了解)

外键约束(多表关联使用)

比如:有两张数据表,这两个数据表之间有联系,通过了某个字段可以建立连接,这个字段在其中一个表中是主键,在另外一张表中,我们就把其称之为外键

六、总结

主键约束:唯一标示,不能重复,不能为空。

  • 主键应当是对用户没有意义的
  • 永远也不要更新主键。
  • 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
  • 主键应当由计算机自动生成。

自动增长:

我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整型,自动增长列必须为键(一般是主键)。

非空约束:

NOT NULL 约束强制列不接受 NULL 值。

唯一约束:

  • UNIQUE 约束唯一标识数据库表中的每条记录。
  • UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
  • PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

  • 📢博客主页:https://lansonli.blog.csdn.net

  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉

  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

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

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

相关文章

String为什么是不可变的?

原因一、String字符串类型的数据结构 字符串在String类的内部是用一个char[]数组表示的,而这个数组使用final关键字修饰的,所以不能修改。 举例说明: String ip"127.0.0.1"; String retip.replace(".","#"); System.out.…

spring通过类名称获取名字

在Spring中,可以使用反射来根据类的全限定名获取其对应的Bean名称。 下面是示例代码: import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {publi…

BUGKU-WEB 留言板1

题目描述 题目截图如下: 进入场景看看: 解题思路 之间写过一题类似的,所以这题应该是有什么不同的那就按照之前的思路进行测试试试提示说:需要xss平台接收flag,这个和之前说的提示一样 相关工具 xss平台&#xf…

银河麒麟操作系统自动同步时间更新

1、银河麒麟操作系统基于Centos8的,因centos8取消了ntp服务器,所以导致之前使用ntpdate命令无法同步时间 2、centos默认使用chrony模块来进行同步时间 3、修改chrony配置同步时间服务器 vim /etc/chrony.conf 4、目前使用的是阿里云的时间服务器&…

Postgresql源码(122)Listen / Notify与事务的联动机制

前言 Notify和Listen是Postgresql提供的不同会话间异步消息通信功能,例子: LISTEN virtual; NOTIFY virtual; Asynchronous notification "virtual" received from server process with PID 8448. NOTIFY virtual, This is the payload; Asy…

Unity笔记:数据持久化的几种方式

正文 主要方法: ScriptableObjectPlayerPrefsJSONXML数据库(如Sqlite) 1. PlayerPerfs PlayerPrefs 存储的数据是全局共享的,它们存储在用户设备的本地存储中,并且可以被应用程序的所有部分访问。这意味着&#xf…

深入浅出熟悉OpenAI最新大作Sora文生视频大模型

蠢蠢欲动,惴惴不安,朋友们我又来了,这个春节真的过的是像过山车,Gemini1.5 PRO还没过劲,OpenAI又放大招,人类真的要认输了吗,让我忍不住想要再探究竟,到底是什么让文生视频发生了质的…

头歌C++语言之选择排序练习题

目录 第1关:第二统计数字 任务描述 相关知识 数组声明: 初始化数组: 访问数组元素 选择排序 编程要求 第2关:运动会排名 任务描述 相关知识 多维数组 访问二维数组 编程要求 第3关:单词排序 任务描述 相关知识 strcmp()函数 编程要求

流星蝴蝶剑之七夜听雪中文版下载

软件介绍: 中文名称: 流星蝴蝶剑七夜听雪 英文名称: Meteor 游戏类型: 3D武侠格斗 发行时间: 2002年08月 制作发行: 流星江湖悠悠客栈 语言 :中文 配置要求: 操作系统:Windows 95 / 98 / Me / 2000 / XP 最低配置 CPU:Pentium II 450MHz 以上…

记录 | git win C://User/Administrator/.ssh下没有id_rsa.pub找不到

在用 ssh-keygen -t rsa -C "xxx163.com”生成后,在 C://User/Administrator/.ssh 下找不到 id_rsa.pub 文件 在这个下面找找: C:\Users\Administrator\AppData\Roaming\SPB_Data\.ssh 或者直接看 ssh-keygen 生成的终端日志,上面有说…

单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)

目录 1 主要内容 目标函数 电动汽车负荷建模 算例系统图 程序亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第五章《单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法》…

0206-1-网络层

第 4 章 网络层 网络层提供的两种服务 虚电路服务 数据报服务 概要: 虚电路服务与数据报服务的对比 网际协议 IP 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议: 地址解析协议 ARP (Address Resolution Protocol)逆地…

【鸿蒙系统学习笔记】TypeScript开发语言

一、背景 HarmonyOS 应用的主要开发语言是 ArkTS,它由 TypeScript(简称TS)扩展而来,在继承TypeScript语法的基础上进行了一系列优化,使开发者能够以更简洁、更自然的方式开发应用。值得注意的是,TypeScrip…

34、商城系统(十五):认证服务,短信验证码,密码加盐,OAuth2.0社交登录,SpringSession认证功能,单点登录

目录 一、新建认证服务 1.后端项目启动 2.前端页面复制 3.配置域名 4.配置gateway

在 CentOS 上安装 JDK 1.8

要在 CentOS 上安装 JDK 1.8,您可以按照以下步骤进行操作: 打开终端(命令行界面)。 检查您的系统是否已经配置了正确的软件源。可以执行以下命令来更新软件包索引: sudo yum update使用以下命令安装 OpenJDK 1.8&…

Spring整合Mybatis之DAO层、Service层开发

3. Spring整合Mybatis编程DAO层开发 1. 项目引入相关依赖spring mybatis mysql mybatis-spring druid2. 编写spring.xml整合&#xff1a;spring 接管 mybatis 中 SqlSessionFactory对象的创建<!--创建DataSource--><bean class"com.alibaba.druid.pool.…

8、内网安全-横向移动RDPKerberos攻击SPN扫描WinRMWinRS

用途&#xff1a;个人学习笔记&#xff0c;有所借鉴&#xff0c;欢迎指正 目录 一、域横向移动-RDP-明文&NTLM 1.探针服务&#xff1a; 2.探针连接&#xff1a; 3.连接执行&#xff1a; 二、域横向移动-WinRM&WinRS-明文&NTLM 1.探针可用&#xff1a; 2.连接…

【PyQt】14-绘图-QPainter

文章目录 前言一、QPainter二、绘制文本-drawTextQt里面的文本对齐方式 运行结果 三、像素点总结 前言 1、学会画图方法 一、QPainter 通常可以绘制文本、各种图形&#xff08;点、线、椭圆、弧、扇形、多边形等等&#xff09;、图像。 必须在painrEvent事件方法中绘制各种元…

Eclipse 分栏显示同一文件

Eclipse 分栏显示同一文件 1. Window -> EditorReferences 1. Window -> Editor Toggle Split Editor (Horizontal) &#xff1a;取消或设置水平分栏显示 Toggle Split Editor (Vertical) &#xff1a;取消或设置垂直分栏显示 References [1] Yongqiang Cheng, https:/…