MySQL:数据库的约束

约束类型

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • DEFAULT - 规定没有给列赋值时的默认值。
  • PRIMARY KEY - NOT NULL UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。

1. NOT NULL

指示某列不能存储 NULL

注:如果没有指定非空时,当前列是可以填入非空的,在把某一列定义为一个必填项,就可以使用not null来定义。

此时的id几句成为了一个必填项,null设置为NO

此时的id就不能为null,否则就会报错

满足条件设置成功

 create table student(-> id bigint not null,-> name varchar(10)-> );desc student;
insert into student  values (null,'shangsan');
insert into student  values (123456,'shangsan');select * from student;

2. UNIQUE

保证某列的每行必须有唯一的值(某列的值在整个表中不能有重复)

 

如果插入id相同的,则不满足唯一的条件,则会报错 

 这次插入id不唯一,就可以成功的插入了

 create table student1(-> id bigint unique,-> name varchar(20)-> );
desc student1;
insert into student1 values (123,'zhangsan'),(123,'lisi');
insert into student1 values (123,'zhangsan'),(456,'lisi');select * from student1;

3. DEFAULT

规定没有给列赋值时的默认值(将值为空的设置为默认值)

 随机的插入一个id,但是不给name赋值,则name会自定赋值成已经定义的 ‘无名氏’

 

注:如果我们手动置为null,则显示的值必然是我们手动置成的null

 

 create table student2(-> id bigint,-> name varchar(20) default'无名氏'-> );
desc student2;insert into student2 (id) values (1);select * from student2;
insert into student2 (name) values (null);

 

4.PRIMARY KEY

NOT NULL UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 (主键的列即时非空又是唯一的)

  

注:id指定为非空并且唯一,列就会被标识为primary 表示它是一个主键

 create table student3(-> id bigint not null unique,-> name varchar(20) default'无名氏'-> );desc student3;

一个表不能有多个主键

create table student5(-> id int primary key,-> na int primary key-> );

但一个主键可以包括多个列(复合主键)

其中有一个不同是可以插入的,但如果全部都不同的话,则无法插入 

create table student6(-> id int ,-> na int,-> primary key(id,na)-> );

自增类型(auto increment)

表示在表上一条的基础上加1(在插入时,先找到最大值,然后再最大值的基础上+1,作为一个新的值,作为新的数据行的值)

当插入一个id为空的列,它会按照id的最大值自动生成一个+1的值 

 

 create table student4(-> id bigint primary key auto_increment,-> name varchar(10)-> );
desc syudent4;
insert into student4 (id) values (1);insert into student4 (name) values ('zhangsan');select * from student4;

5.FOREIGN KEY 

保证一个表中的数据匹配另一个表中的值的参照完整性。

创建外键的语法:foreign key (字段名) references  主表(列)

看表(MUL说明存在外键关系)

 

写入正确的数据可以读入

 

写入不存在的数,则会报错

注;如果要删除一个主表中的数,要先删除子表中的数据,因为子表对主表有依赖作用,只有先将子表中的对应的数据删除,才可以删除主表中的数据。

 create table c(-> id bigint primary key auto_increment,-> name varchar(10)-> );create table n(-> id bigint primary key auto_increment,-> name varchar(20) not null,-> c_id bigint,-> foreign key (c_id) references c(id)-> );
desc n;

6.CHECK

保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。

满足条件

 

不满足条件

create table check_gender(-> id bigint,-> gender varchar(1),-> check(gender='男' or gender='女')-> );insert into check_gender values(1,'男');
insert into check_gender values(1,'1');//错误的select * from check_gender;

希望能对大家有所帮助!!!!

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

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

相关文章

Ps:OpenColorIO 设置

Ps菜单:编辑/OpenColorIO 设置 Edit/OpenColorIO Settings 在专业的图像编辑和色彩管理工作流程中,准确的色彩呈现和转换至关重要。OpenColorIO(OCIO) 是一种开源的色彩管理框架,广泛应用于影视、动画和视觉特效行业。…

datastage在升级版本到11.7之后,部分在11.3上正常执行的SP报错SQLSTATE = 22007: 本机错误代码 = -180

在升级版本到11.7之后,部分在11.3上正常执行的SP开始报错,报的SQL错误是时间参数问题,但是一样的SP可以直接call sp执行,也可以手动调用作业执行,只有设置定时调度时作业会报错, CALLXXX.XXX(1,CURRENT TIM…

网络基础Linux

目录 计算机网络背景 网络发展 认识 "协议" 网络协议初识 OSI七层模型 TCP/IP五层(或四层)模型 网络传输基本流程 网络传输流程图 ​编辑 数据包封装和分用 网络中的地址管理 认识IP地址 认识MAC地址 笔记(画的图) 协议&#x…

【C#设计模式(4)——构建者模式(Builder Pattern)】

前言 C#设计模式(4)——构建者模式(Builder Pattern) 运行结果 代码 public class Computer {private string part1 "CPU";private string part2 "主板";private string part3 "内存";private string part4 "显卡";private st…

【项目组件】第三方库——websocketpp

目录 第三方协议:websocket websocket简介 websocket特点 websocket协议切换 websocket协议格式段 websocketpp库介绍 endpoint server connection websocketpp库搭建服务器流程 基本框架实现 业务处理回调函数的实现 http_callback open_callback …

Linux—进程学习-02

目录 Linux—进程学习—21.通过系统调用创建进程—fork1.1fork创建子进程1.2fork函数的返回值1.3利用fork实现多进程 2.有关cpu的常识了解3.进程状态3.1从操作系统层面了解进程状态3.1.1就绪和新建状态的理解3.1.2运行和阻塞状态的理解3.1.3挂起状态的理解挂起和阻塞的区别 3.1…

基于yolov8、yolov5的鱼类检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 , 直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有 GPU&#xff0…

【数据价值化】国有企业数据资产入表及估值实践指南:挖掘数字资产新价值

在当今数字化转型的浪潮中,国有企业作为国民经济的支柱,正积极探索如何更好地管理和利用自身的数据资产。数据,这一新时代的“石油”,正逐渐成为驱动国有企业创新发展的关键要素。然而,如何准确地将数据资产纳入企业财…

AndroidStudio-常用布局

一、线性布局LinearLayout 线性布局内部的各视图有两种排列方式: 1.orientation属性值为horizontal时,内部视图在水平方向从左往右排列。 2.orientation属性值为vertical时,内部视图在垂直方向从上往下排列。 如果不指定orientation属性,…

力扣-Mysql-3308- 寻找表现最佳的司机(中等)

一、题目来源 3308. 寻找表现最佳的司机 - 力扣(LeetCode) 二、数据表结构 表:Drivers ----------------------- | Column Name | Type | ----------------------- | driver_id | int | | name | varchar | | age …

【汇编语言】包含多个段的程序(二)—— 将数据、代码、栈放入不同的段

文章目录 前言1. 存在的两个问题2. 解决办法3. 示例代码3.1 程序说明3.1.1 定义多个段的方法3.1.2 对段地址的引用3.1.3 各种段完全是我们的安排 4. 总结结语 前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但…

Iotop使用

文章目录 Iotop依赖及编译1:内核配置2: 环境配置3.依赖库ncurses3.1 Ncurses的编译配置 4. Iotop的编译及修改5.测试效果如下: Iotop依赖及编译 源码路径:https://github.com/Tomas-M/iotop#how-to-build-from-source (GitHub - Tomas-M/iotop: A top u…

LaTeX之四:如何兼容中文(上手中文简历和中文论文)、在win/mac上安装新字体。

改成中文版 如果你已经修改了.cls文件和主文档,但编译后的PDF仍然显示英文版本,可能有以下几个原因: 编译器问题:确保你使用的是XeLaTeX或LuaLaTeX进行编译,因为它们对Unicode和中文支持更好。你可以在你的LaTeX编辑器…

java的JJWT 0.91在jdk21中报错的解决方法

参考了很多其他人的办法,只有这种方式可以解决问题 JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西 如果根据黑马的视频,导入了阿里云OSS的相关依赖,自然不会…

卷积、频域乘积和矩阵向量乘积三种形式之间的等价关系与转换

线性移不变系统 线性移不变系统(Linear Time-Invariant System, LTI系统)同时满足线性和时不变性两个条件。 线性:如果输入信号的加权和通过系统后,输出是这些输入信号单独通过系统后的输出的相同加权和,那么该系统就…

一文窥见神经网络

一文窥见神经网络 1.初识神经元1.1 生物神经元1.2 人工神经元1.3 权重的作用1.4 偏置的作用1.5 激活函数的作用1.5.1 线性激活函数1.5.2 非线性激活函数 2. 神经元模型2.1 多输入单神经元模型2.2 一层神经元模型2.3 神经网络(多层神经元)模型 3. 神经网络…

DBeaver 连接 OceanBase Oracle 租户

DBeaver 是一款通用的数据库工具软件,支持任何具有JDBC驱动程序的数据库。DBeaver 需要 Java 运行环境的支持。截稿时 DBeaver 24.0.0 版本默认提供的 OceanBase 驱动是连接 MySQL 的,想连接 Oracle 租户需要新建一个驱动器使用。 下载数据库驱动包 1、…

web实操5——http数据详解,request对象功能

http请求数据 现在我们浏览器f12的那些是浏览器给http格式数据整理之后便于我们阅读的。 原始的http格式信息: 就是按照一定格式和符号的字符串: 请求行:格式如下图 请求头:一个个key,value数据,用,分割…

u盘加密软件有哪些?2025年必备的u盘加密神器分享(共6款!提前布局!)

2024年《数据泄露成本报告》最新出炉!再破纪录! 报告显示,全球数据泄露事件的平均成本达488万美元,同比增加10%。 其中,u盘最为数据存储和传输的常用媒介,对其进行加密早已箭在弦上! 在2025年…

实验5:网络设备发现、管理和维护

实验5:网络设备发现、管理和维护 实验目的及要求: 通过实验,掌握Cisco 路由器和交换机的IOS配置管理。自动从NTP服务器获取时间信息。能够利用TFTP服务器实现路由器和交换机配置文件的备份和恢复。同时验证CDP协议和LLDP协议的网络参数。完…