MySQL-----约束


目录​​​​​

约束

一   主键约束

1-1  操作-添加单列主键

 1-2  操作-添加多列主键

 1-3  修改表结构添加主键

1-4  删除主键约束

二   自增长约束

2-1  指定自增长字段的初始值 

2-2  删除自增列

三   非空约束

 3-1  创建非空约束

3-2  删除非空约束

四   唯一约束

 4-1  创建唯一约束

4-2  删除唯一约束

五   默认约束

5-1  创建默认约束

5-2  删除默认约束

六   零填充约束

6-1  创建零填充约束

6-2  删除零填充约束 


约束

▶ 概念

约束英文:constraint

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

▶ 作用

表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复。

▶ 分类

主键约束(primary key) PK

自增长约束(auto_increment)

非空约束(not null)
唯一性约束(unique)

默认约束(default)

零填充约束(zerofill)

外键约束(foreign key) FK

一   主键约束

▶ 概念

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

▶ 操作 

1.添加单列主键

2.添加多列联合主键

3.删除主键  



1-1  操作-添加单列主键

创建单列主键约束的语法

▶ 方式一

        在create table 语句中通过 PRIMARY KEY 关键字来指定主键

        在定义字段的同时指定主键,语法格式如下:
        create table 表名(
                ....
                <字段名><数据类型> primary key
                ....
        )


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

操作演示

 演示效果



 1-2  操作-添加多列主键

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

注意:
        1.当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。

        2.一张表只能有一个主键,联合主键也是一个主键

创建多列主键的语法         

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

);

多列主键中的字段值,至少要有一个不同,且联合主键的各列都不能为空(NULL)

效果展示 

 



 1-3  修改表结构添加主键

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

通过修改表结构,既可以设置为单列主键也可以设置为多列主键。

修改表结构添加主键语法 

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

运行效果

 


1-4  删除主键约束

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

 删除主键约束的语法

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

效果演示 

【总结】 



二   自增长约束

▶ 概念

▻ 在MysQL中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录主键会自动以相同的步长进行增长。

▻ 通过给字段添加auto_increment属性来实现主键自增长

▶ 语法

字段名 数据类型 auto_increment

 ▶ 操作

create table 表名(
        id int primary key auto_increment,
        naem varchar(20)

);

  ▶ 特点

▻ 默认情况下,auto_increment的初始值是1,每新增一条记录,字段值自动加1。
▻ 一个表中只能有一个字段使用auto_increment约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键的一部分)。
▻ auto increment约束的字段必须具备NOT NULL属性。
auto_increment约束的字段只能是整数类型(TINYINT、SMALLINT、INT、BIGINT等。
auto_increment约束字段的最大值受该字段的数据类型约束,如果达到限,auto_increment就会失效

2-1  指定自增长字段的初始值 

        如果第一条记录设置了该字段的初始值,那么新增加的记录就从这个初始值开始自增。例如
如果表中插入的第一条记录的id值设置为5,那么再插入记录时,id值就会从5开始往上增加。

语法

 ▶ 方式一:创建表后指定

     create table t_user1(
            id int primary key auto_increment,
            ...
    );
    alter table t_user1 auto_increment=100;

 ▶ 方式二:创建表时指定

        create table t_user3(
                 id int primary key auto_increment,
                ...
        ) auto_increment=200;

效果演示  

 


2-2  删除自增列

使用delete 和 truncate可以删除自增列

  注意:delete和truncate在删除后自增列的变化
       ▶ delete数据之后自动增长从断点开始。(比如你表以前的数据是从100开始你插入到     了105,然后你全部删除,再重新插入新数据,它的自增长值是106).
       ▶ truncate数据之后自动增长从默认起始值开始.(比如你表以前的数据是从100开始你插入到了105,然后你全部删除,再重新插入新数据,它的自增长值是1,默认从1开始).

delete的效果

truncate的效果

 

【总结】 

 



三   非空约束

 ▶ 概念

     MySQL非空约束(not null)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。

 3-1  创建非空约束

▶ 语法

 ▶ 方式一:创建表时指定
        <字段名><数据类型> not null;

 ▶ 方式二:创建表后修改

        alter table 表名 modify 字段 类型 not null;

演示效果

 

 

3-2  删除非空约束

▶ 语法

alter table 表名 modify 字段 类型

(就是将创建时的语句去掉not null)

演示效果

 

【总结】



四   唯一约束

  ▶ 概念

唯一约束(Unique Key)是指所有记录中字段的值不能重复出现例如,为id字段加上唯一性约束后,每条记录的id值都是唯一的,不能出现重复的情况。

 4-1  创建唯一约束

▶ 语法

 ▶ 方式一:创建表时指定
       <字段名><数据类型> unique;

 ▶ 方式二:创建表后修改

       alter table 表名 add constraint 约束名 unique(列名);

演示效果 

 

4-2  删除唯一约束

▶ 语法

        alter table <表名> drop index <唯一约束名>;

创建表后修改表时,有约束名,可以直接使用设置的约束名。

创建表时设置约束,没有约束名,直接使用被约束的列名即可。

效果演示

 

【总结】



五   默认约束

 ▶ 概念

MySQL默认值约束用来指定某列的默认值。

5-1  创建默认约束

 ▶ 语法

 ▶ 方式一:创建表时指定
       <字段名><数据类型> default <默认值>;

 ▶ 方式二:创建表后修改

     alter table 表名 modify 列名 类型 default 默认值;

演示效果

 

5-2  删除默认约束

  ▶ 语法

 alter table <表名> modify change column <字段名> <类型> default nll;

效果演示

 

【总结】 

 



六   零填充约束

 ▶ 概念

1、插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面补上相应的O

2、zerofill默认为int(10)
3、当使用zerofill时:默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍,例如,有符号为-128~+127,无符号为0~256。

6-1  创建零填充约束

  ▶ 语法

        <字段名><数据类型> zerofill;

create table t_user12(
        id int zerofill,    -- 零填充约束
        name varchar(20)
);

效果演示

 

6-2  删除零填充约束 

  ▶ 语法

alter table 表名 modify <字段名> <类型> ;

演示效果 

【总结】

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

26.云原生ArgoCD高级之ApplicationSet

云原生专栏大纲 文章目录 ApplicationSet介绍ApplicationSet 特性ApplicationSet 安装ApplicationSet 工作原理ApplicationSet 生成器列表类型生成器集群生成器基础使用方法Label Selector 指定集群Values 字段传递额外的参数 git生成器git目录生成参数排除目录git文件生成器矩…

NLP入门系列—词嵌入 Word embedding

NLP入门系列—词嵌入 Word embedding 2013年&#xff0c;Word2Vec横空出世&#xff0c;自然语言处理领域各项任务效果均得到极大提升。自从Word2Vec这个神奇的算法出世以后&#xff0c;导致了一波嵌入&#xff08;Embedding&#xff09;热&#xff0c;基于句子、文档表达的wor…

物联网与智慧景区的未来:机遇与挑战并存

随着科技的不断发展&#xff0c;物联网技术在智慧景区中的应用越来越广泛&#xff0c;为旅游业带来了巨大的变革。然而&#xff0c;在物联网与智慧景区的未来发展中&#xff0c;机遇与挑战并存。本文将探讨物联网与智慧景区面临的机遇和挑战&#xff0c;并提出应对措施&#xf…

【复现】WordPress html5-video-player SQL 注入漏洞_39

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 在WordPress中播放各种视频文件。一个简单&#xff0c;可访问&#xff0c;易于使用和完全可定制的视频播放器&#xff0c;适用于所…

[开源]GPT Boss – 用图形化的方式部署您的私人GPT镜像网站

在这个以数据和智能为核心的时代&#xff0c;掌握最新的技术趋势是每个企业和个人都需要做到的。这就是GPT Boss存在的意义&#xff1a;一个基于OpenAI技术的一站式GPT应用解决方案。 自2022年起&#xff0c;GPT Boss团队便投身于人工智能领域&#xff0c;将OpenAI的GPT模型带给…

回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&#xff09; 目录 回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&…

MATLAB多元线性回归对信息化进行相关性分析(附完整数据和代码)

MATLAB代码: clc;clear all;close all;warning off;%关闭警报 %% 多元线性回归 dataxlsread(归一化数据.xls); Inputdatadata(:,2:end);%载入输入数据 Outputdatadata(:,1);%载入输出数据 % index11:length(Outputdata);%顺序样本 index1randperm(length(Outputdata));%随机样…

Multisim14.0仿真(五十)基于CD4518的计数器设计

一、CD4518简介: CD4518是二、十进制(8421编码)同步加计数器,内含两个单元的加计数器。每单个单元有两个时钟输入端CLK和EN,可用时钟脉冲的上升沿或下降沿触发。可知,若用ENABLE信号下降沿触发,触发信号由EN端输入,CLK端置“0”;若用CL℃K信号上升沿触发,触发信号由C…

算法练习-三数之和(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨在…

视觉SLAM十四讲学习笔记(一)初识SLAM

目录 前言 一、传感器 1 传感器分类 2 相机 二、经典视觉 SLAM 框架 1 视觉里程计 2 后端优化 3 回环检测 4 建图 5 SLAM系统 三、SLAM 问题的数学表述 四、Ubuntu20.04配置SLAM十四讲 前言 SLAM: Simultaneous Localization and Mapping 同时定位与地图构建&#…

VScode+PlatformIO 物联网Iot开发平台环境搭建

1.vscode &#xff08;1&#xff09;安装platformIO插件 &#xff08;2&#xff09;新建项目或导入已有的arduino项目 Name&#xff1a;需要填写你项目的名称&#xff1b; Board&#xff1a;点开是一个下拉框&#xff0c;但是可以输入你想要的开发板&#xff0c;这里选择&quo…

24.Android中的列表--ListView

ListView 1.简单列表--ArrayAdapter <?xml version"1.0" encoding"utf-8"?> <ScrollView xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools&qu…

大数据分析|大数据分析的十大应用领域

有许多技术可用于分析大数据。这项工作介绍了BDA适用的各种分析技术领域如下。 &#xff08;1&#xff09;社会分析 社交分析是实时数据分析中一个重要且不断发展的分析方法。它分为社交网络(例如&#xff0c;Facebook和LinkedIn)&#xff0c;博客(例如&#xff0c;Blogger和W…

ERP 系统架构的设计与实践总结

企业资源计划&#xff08;ERP&#xff09;系统是一种集成多个业务功能的综合性软件解决方案。在设计和实践 ERP 系统架构时&#xff0c;需要考虑诸多因素&#xff0c;以确保系统能够满足企业的需求&#xff0c;并提供高效、可靠、安全的服务。本文将介绍一些关键的设计原则和实…

101 C++内存高级话题 内存池概念,代码实现和详细分析

零 为什么要用内存池&#xff1f; 从前面的知识我们知道&#xff0c;当new 或者 malloc 的时候&#xff0c;假设您想要malloc 10个字节&#xff0c; char * pchar new char[10]; char *pchar1 malloc(10); 实际上编译器为了 记录和管理这些数据&#xff0c;做了不少事情&…

vue中 日期选择--本日、本周、本月、本年选择器实现(基于elementui)

效果图&#xff1a; 由于项目需要图标统计展示&#xff0c;需要日期美观化选择如上图所示&#xff0c;代码如下&#xff1a; <template><div class"el-page body"><el-row><el-col class"statistic-analysis-report-style" :span&qu…

【Linux进程间通信】匿名管道

【Linux进程间通信】匿名管道 目录 【Linux进程间通信】匿名管道进程间通信介绍进程间通信目的进程间通信发展进程间通信分类 管道用fork来共享管道原理站在文件描述符角度——深度理解管道站在内核角度——管道本质 匿名管道在myshell中添加管道的实现&#xff1a;管道读写规则…

【iOS ARKit】环境反射

环境反射 在使用 iOS AR中 渲染虚拟物体时&#xff0c;RealityKit 默认使用了一个简单的天空盒&#xff08;Skybox&#xff0c;即IBL环境资源贴图&#xff09;&#xff0c;所有带反射材质的物体默认会对天空盒产生反射。 但在AR 中&#xff0c;使用IBL 技术实现的天空盒反射有一…

【快速上手QT】01-QWidgetQMainWindow QT中的窗口

总所周知&#xff0c;QT是一个跨平台的C图形用户界面应用程序开发框架。它既可以开发GUI程序&#xff0c;也可用于开发非GUI程序&#xff0c;当然我们用到QT就是要做GUI的&#xff0c;所以我们快速上手QT的第一篇博文就讲QT的界面窗口。 我用的IDE是VS2019&#xff0c;使用QTc…

神经网络 | 基于 CNN 模型实现土壤湿度预测

Hi&#xff0c;大家好&#xff0c;我是半亩花海。在现代农业和环境监测中&#xff0c;了解土壤湿度的变化对于作物生长和水资源管理至关重要。通过深度学习技术&#xff0c;特别是卷积神经网络&#xff0c;我们可以利用过去的土壤湿度数据来预测未来的湿度趋势。本文将使用 Pad…