MySQL表的约束

基于CNN对抗嵌入的图像隐写——CNN-Based Adversarial Embedding for Image Steganography CNN-Based Adversarial Embedding for Image Steganography https://ieeexplore.ieee.org/abstract/document/8603808 这篇论文发表在TIFS( IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY),TIFS是网络与信息安全领域的国际两大顶级期刊之一,中国计算机学会(CCF)推荐的A类期刊,SCI一区TOP期刊,目前影响因子有7多了。 1 概 阅读详情

表的约束

约束的作用就是通过一定的手段限制别人不要向表中乱写入数据,数据类型就是约束条件的一种。比如往bit类型列插入字符串这种错误的行为就会被约束。

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。

常见的表的约束有,空属性,默认值,列描述,主键,唯一键,外键约束等等。

空属性

空属性有两个值:

  • null 允许为空
  • not null 不允许为空
  • 数据库默认字段基本都是允许为空的,但在实际开发中我们要尽可能保证字段不为空,因为空值无法参与运算。

如果要让某个字段不允许为空,在创建表的时候就可以给对应字段设置not null属性。

使用示例

  1. 创建一个用户表,包含用户姓名和性别。
    在正常的逻辑角度上,每个人都有姓名和性别,所以这里可以将他们设置为非空属性。
create table user_tb(
    name varchar(20) not null,
    sex set('男','女') not null
]);

image.png
插入数据时,必须插入姓名和性别,只插入一个就会错误。

image.png

默认值

和C++语言的缺省值是一样的。

  • 如果某一个字段会经常性的出现某个值,那么就可以考虑将这个值设置成该字段的默认值。
  • 向表中插入数据时如果不给带有默认值的字段赋值,那么就会使用默认值进行插入。

使用示例

创建一个用户表,性别默认是男,不指定插入就是不男的。

create table user_tb(
    name varchar(20) not null,
    sex char(2) default '男'
);

image.png
向表中添加数据

image.png

列描述

列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA(数据库管理员)来进行了解。

和代码当中的注释一样。

使用示例

create table comment_test(
    name varchar(20) not null comment '姓名',
    sex char(2) default '男' not null comment '性别 默认为男'
);

通过desc查看不到注释信息,只有通过show 才能看到

image.png

zerofill

  • 数值类型后面的圆括号中的数字,代表的是显示宽度,对应数值类型设置zerofill属性后,如果数据的宽度小于设定的宽度则自动填充0。

image.png
括号的里的这玩意是显示宽度,不是所占字节数。如果没有zerofill这个属性,括号内的数字是毫无意义的。

使用示例

  1. 创建一个表
create table zerofill_test(
    num1 int(5),
    num2 int(5)
);

image.png
这个5是显示宽度,不是所占字节数。当然这里没有设置zerofill属性,这里没意义。

向表中插入数据,宽度不足5的自动补0显示

image.png
zerofill属性的作用就是让数据以特定的方式进行显示而已。底层存储的数据还是1。

主键约束

主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。

使用示例

创建一个学生表,指定学号做为主键。

create table stu_tb(
    id int primary key comment '学号不能为空',
    name varchar(20) not null
);

image.png

  • 主键约束:主键对应得字段不能重复,一旦重复,插入失败。也就是说在stu_tb表中学号不能重复,插入重复得学号会插入失败。也不能为空。

image.png

  • 删除主键
    alter table 表名 drop primary key

image.png

  • 当表创建好以后但是没有主键的时候,可以再次追加主键
    alter table 表名 add primary key(字段列表)

image.png

  • 复合主键
    在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段 作为主键,可以使用复合主键。

使用示例

创建一个进程表,ip地址和端口号做为复合主键

create table process_tb(
    ip varchar(30) comment 'ip地址',
    port int comment '端口号',
    primary key(ip,port) comment 'ip地址和端口号做为复合主键'
);

表结构

image.png
向表中添加数据,只有当IP地址和端口号都冲突时,才会插入失败。

image.png

自增长

auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值 +1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。

自增长的特点:

  • 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
  • 自增长字段必须是整数
  • 一张表最多只能有一个自增长

使用示例

create table increment_test(
    id int primary key auto_increment,
    name varchar(10) not null default ''
);

表结构

image.png
向表中插入数据时,id不指定值时会自增长。

image.png
当指定值后,从指定的值后开始自增。

image.png
一般自增长字段设置后就不需要手动为该字段插入值了,直接让其从1开始进行自增长即可。

唯一键unique

一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以 解决表中有多个字段需要唯一性约束的问题。

唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。

需要注意的是,不是主键具有唯一性,而是某个具有唯一性的字段被选择成为了主键,而那些不是主键但是同样需要唯一性约束的字段就应该设置成唯一键。

使用示例

创建一个学生表,将学号设置为主键,身份证号设置成为唯一键

create table stu_tb(
    id int primary key,
    id_card char(18) unique comment '身份证号做为唯一键',
    name varchar(20)
);

表结构:

image.png
向表中插入数据。
image.png

外键

外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique 约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。

语法:

foreign key (字段名) references 主表(列)

使用示例

image.png
如果将班级表中的数据都设计在每个学生表后面,那么就会出现数据冗余,设计的时候将stu表的class_id,和myclass 表的id形成关联的关系。这就是外键约束

  1. 按照上面的图创建两个表 先创建主表myclass(主表必须有主键或者唯一键约束)
create table myclass(
    id int primary key,
    name varchar(30) not null
);
  1. 在创建从表stu
create table stu(
    id int primary key,
    name varchar(30) not null,
    class_id int,
    foreign key (class_id) references myclass(id)--定义外键
);
  1. 正常擦插入数据
    image.png
  2. 插入一个class_id为null的学生插入成功。(外键可以为null)

image.png

visio安装包 Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。 立即下载

相关推荐

基于Python的MGWR多尺度地理加权回归模型

多尺度地理加权回归(MGWR)变量之间的关系在地理空间上不是均一的,所有特征变量的影响都在不同的空间范围(带宽)内变化,某些变量可能表现出局部性影响(小带宽),某些变量可能表现出全局性影响(大带宽),通过优化每个特征变量的带宽,捕捉到空间关系的多尺度特性,得到更细致的模型解释。

weixin_61965078的博客 3853

【MySQL】表的约束

想必大家在学校也学习过MySQL,可能学的懵懵懂懂,这个板块我们从入门开始,从最新的安装MySQL到学习MySQL语句,一步一步开始,一切都是新的,新的板块新的开始,大家一起努力,一起进步!!!二。

AAlykk的博客 1965

mtk-drm commit送显流程(二):内核态atomic_commit实现解析

本文深入解析了mtk-drm框架中atomic_commit机制的内核态实现流程,详细介绍了从用户态触发到硬件提交的完整调用链,包括状态检查、硬件提交等关键阶段。特别分析了MTK平台在动态刷新率、内存带宽优化等方面的特有实现策略,为开发者提供了调试技巧和常见问题解决方案。

weixin_30839881的博客 1306

表的约束(MySQL)

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key。

ljw的博客 3217

Linux下科大讯飞离线语音识别SDK从下载到实战(附常见问题解决)

本文详细介绍了在Linux系统下,如何从科大讯飞开放平台获取离线语音识别SDK,完成环境准备、编译部署到实战开发的完整流程。文章重点解析了SDK目录结构、语法词典定制、示例代码修改,并针对开发中常见的“词典加载失败”、音频格式、交叉编译及性能优化等问题提供了深度解决方案,助力嵌入式与IoT开发者快速实现稳定可靠的离线命令识别功能。

honey的博客 1241

FME入门系列教程3-带你玩转GIS数据搬运与处理

FME(Feature Manipulation Engine)就像GIS界的"瑞士军刀",它能轻松解决90%的数据处理难题。我最初接触FME是因为要处理200多个不同格式的CAD地形图,传统方法需要1周时间,用FME只花了2小时!:支持300+数据格式(Shapefile、GeoJSON、CAD、Excel等)添加Reader(数据源):选择示例数据roads.shp。添加Writer(输出):设置输出为GeoJSON格式。:将常用流程保存为Template(.fmwt)

weixin_41234946的博客 1245

【MySQL】005.MySQL表的约束(上)

本篇文章主要介绍了MySQL中表的约束中的 :空属性,默认值,列描述,zerofill,主键约束。

2301_81290732的博客 2613

COMSOL电磁仿真-网格剖分-边界层

介绍COMSOL在低频电磁场中边界层网格的剖分方法。

奇妙水果的技术博客,欢迎交流技术~ 4487

【MySQL】 表的约束(上)

本篇文章讲解了MySQL中关于约束的一些知识,包括空属性,default默认值,列描述,zerofill和主键等约束条件。

2302_81805546的博客 2204

YOLOv11改进 | 损失函数改进篇 | 2024最新高质量的目标检测边界框回归损失Unified-IoU、FocalUIoU、FocalInvUIoU(设置动态epoch参数)

本文给大家带来的改进机制是最近新提出的高质量的目标检测边界框回归损失,其通过动态调整模型对不同质量预测框的关注,优化目标检测中的边界框回归精度。UIoU引入了FocalBox方法,通过缩放预测框与真实框分配权重,并采用了退火策略(引入动态参数epoch),逐渐将模型的注意力从低质量预测框转移到高质量预测框,平衡了训练速度与检测精度。其还有一定的解决样本不平衡问题,同时该损失函数可以和现有的任何边界框回归损失函数进行结合,例如ShapeIoU和其结合可以形成二次创新,它是一种类似于之前的Inner的机制.

Snu77的博客 4586

08-StarRocks性能调优FAQ

StarRocks性能调优摘要 本文提供了StarRocks数据库性能调优的常见问题解答,涵盖查询优化、索引设计、分区策略和系统配置等关键方面。主要内容包括:查询优化技巧(使用EXPLAIN分析、避免全表扫描、优化JOIN和聚合查询);索引选择与维护建议(高频查询列索引、复合索引);分区策略设计(时间分区、范围分区)及其管理方法;以及系统内存配置优化(JVM参数调整、查询内存限制设置)。这些优化措施可显著提升StarRocks的查询性能和系统效率。

欢迎来到我的博客,一起探索代码里的世界! 541

【MySQL】 表的约束(下)

本篇文章更加深入的讲解了MySQL的约束,包括了自增长,唯一键和外键等约束条件,每一种约束方式都有介绍,使用等方面的内容。最后还对约束方面的知识做了一个综合案例的实现。

2302_81805546的博客 1467

基于深度学习的X光安检危险品检测系统(YOLOv8 + UI界面 + 数据集)

随着全球安全形势的变化,机场、车站、地铁等场所的安检工作日益重要。X光安检系统已经成为现代公共安全领域中不可或缺的部分,能够有效地检测物品的内部结构,识别潜在的危险品。然而,传统的X光图像分析方法仍然依赖人工操作,检测效率较低,并且易受到人为因素的影响。近年来,深度学习技术的应用在图像分析领域取得了显著的突破,特别是在目标检测任务中,YOLO(You Only Look Once)模型因其高效性和精度,成为了许多目标检测任务的首选模型。

YOLO 1061

【MySQL基础】表的约束的类型与使用指南

【MySQL基础】表的约束内容超详解加全面使用指南!!

2301_80220607的博客 1859

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySQL——表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。 表的约束很多,这里主要介绍如下几个:,, , ,,,。 案例: 创建一个班级表,包含班级名和班级所在的教室。 站在正常的业务逻辑中:所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这就是“约束”。 所以设置了not null,这些字段必须有值,不能为空或者不填。默认值:某一种数据会经常性的出现某

想要上进的coder的博客 895

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[MySQL初阶]MySQL(3)表的约束

[MySQL初阶]MySQL(3)表的约束 null/not null,default, comment, zerofill,primary key,auto_increment,unique key

石墨博客 1794

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

MySQL:表的约束

没有约束,就像我们平时往文件里写入,想怎么写就怎么写,完全取决于你的意志,但是我们为了让用户在数据库中安全的插入数据,无论你是编程小白的误操作还是编程大佬的恶意操作,我们都要想办法通过约束进行拦截(比如给年龄的一列插入了性别,身高的一列插入了体重,qq号那列插入了邮箱),来保证我们数据库内数据的合法性。(编译器其实也算是一种约束,你如果语法写错了会给你报错,所以经过编译器的代码虽然逻辑可能有问题,但是至少在语法是没有问题的)

weixin_51142926的博客 1849

【MySQL】:表的约束

MySQL数据库表的约束详细介绍!

Yikefore的博客 715

MySQL-表的约束

MySQL表的约束是保证数据合法性和业务逻辑正确性的重要机制。主要约束类型包括:空属性(NOT NULL)、默认值(DEFAULT)、列描述(COMMENT)、零填充(ZEROFILL)、主键(PRIMARY KEY)、自增(AUTO_INCREMENT)和唯一键(UNIQUE KEY)。NOT NULL约束强制字段不能为空,DEFAULT设置默认值,COMMENT提供字段描述,ZEROFILL实现数字位数不足时的零填充显示(不影响实际存储)。这些约束共同作用,确保数据符合业务规则,如强制班级表必须有名称和

weixin_74865793的博客 628

MySQL 表的约束(一)

1. 主键是用来衡量一行一行表中的信息是唯一的,主键是唯一的2. 复合主键两个合起来是唯一的。

的博客 1001
上一篇: MySql数据类型
下一篇: MySql表的增删查改(CRUD)
C++下等马
博客等级 码龄5年 776粉丝 79原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++下等马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值