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 <字段名> <类型> ;

演示效果 

【总结】

 

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

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

相关文章

sklearn 计算 tfidf 得到每个词分数

from sklearn.feature_extraction.text import TfidfVectorizer# 语料库 可以换为其它同样形式的单词 corpus [list(range(-5, 5)),list(range(-6,4)),list(range(12)),list(range(13))]# corpus [ # [Two, wrongs, don\t, make, a, right, .], # [The, pen, is, might…

asdf安装不同版本的nodejs和yarn和pnpm

安装asdf 安装nodejs nodejs版本 目前项目中常用的是14、16和18 安装插件 asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf plugin-add yarn https://github.com/twuni/asdf-yarn.git可以查看获取所有的nodejs版本 asdf list all nodejs有很多找…

深入Spring MVC的工作流程

深入Spring MVC的工作流程 在Spring MVC的面试问题中&#xff0c;常常被询问到的一个问题。Spring MVC的程序中&#xff0c;HTTP请求是如何从开始到结束被处理的。为了研究这个问题&#xff0c;我们将需要深入学习一下Spring MVC框架的核心过程和工作流程。 1. 启动请求生命周…

Cocos XR的WebBox实现流程

1. 正常3D场景下的webview 1.1 组件角色 Cocos Creator正常3D场景下只有在UI组件才支持webview&#xff0c;即作为下图中的UI Nodes(Canvas Node)的子节点&#xff0c;和3D组件是隔离开的&#xff0c;不能显示在3D空间中&#xff0c;UI Nodes(Canvas Node)是一个平面内的矩形…

layui

基于复杂结构的自定义模版相关介绍 我这里的接口给的格式数据 我这里搜索往返时候要显示成这样的 layui.use([table,form], function(){ var table layui.table; var form layui.form;// 渲染表格 table.render({ elem: #test-table-reload,toolbar: #toolbarDemo, …

Spring Boot 中操作 Bean 的生命周期

1.InitializingBean和DisposableBean InitializingBean接口提供了afterPropertiesSet方法&#xff0c;用于在bean的属性设置好之后调用&#xff1b; DisposableBean接口提供了destroy方法&#xff0c;用于在bean销毁之后调用&#xff1b; public class TestComponent implem…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextPicker组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之TextPicker组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、TextPicker组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不…

【MySQL】——数据定义

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

蓝桥杯每日一题-----数位dp

前言 今天浅谈一下数位dp的板子&#xff0c;我最初接触到数位dp的时候&#xff0c;感觉数位dp老难了&#xff0c;一直不敢写&#xff0c;最近重新看了一些数位dp&#xff0c;发现没有想象中那么难&#xff0c;把板子搞会了&#xff0c;变通也会变的灵活的多&#xff01; 引入…

基于Python的深度学习的身份证识别考勤系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

如何使用第三方API采集电商数据呢?

电商商家最常唠叨的就是店铺运营难做。每日多平台店铺数据统计汇总繁琐耗时&#xff0c;人工效率偏低&#xff0c;且工作内容有限。 特别是眼下“618&#xff0c;双十一&#xff0c;双十二&#xff0c;年底大促”将至&#xff0c;如何提高运营的效率和质量、保证产品及服务的良…

深度学习-基础过关

众所周知&#xff0c;机器学习是一门跨学科的学科&#xff0c;主要研究计算机如何通过学习人类的行为和思维模式&#xff0c;以实现某些特定的功能或目标。它涉及到概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科&#xff0c;使用计算机作为工具并致力于真实实时的…

大数据信用报告在线查询平台哪个好?

随着大数据技术在金融风控的运用&#xff0c;大数据信用越来越被人熟知&#xff0c;由于线下没有查询大数据信用的地方&#xff0c;想要查询大数据信用报告只有在线上查询&#xff0c;那大数据信用报告在线查询平台哪个好呢?本文贷你一起去了解市面上比较好的三个平台。 大数据…

[自动驾驶算法][从0开始轨迹预测]:三、常用的轨迹预测数据集--Argoverse v2

文章目录 1. 轨迹数据集总览2. Argoverse v2数据集2.1 传感器布局与坐标系统2.2 轨迹预测数据集1. 数据集的下载和读取2. 场景文件的数据结构&#xff1a;3. 地图文件的数据结构 写在前面&#xff1a; “工欲善其事&#xff0c;必先利其器”&#xff01; 在深度学习中&#xff…

x-shell安装、使用以及配置cuda、cudnn和conda

x-shell安装、使用以及安装最新版本conda x-shell安装远程连接服务器conda安装和环境配置 x-shell安装 x-shell是一款终端模拟软件&#xff0c;用于在Windows界面下远程访问和使用不同系统下的服务器。免费版本下载地址&#xff1a; https://www.xshell.com/zh/free-for-home-…

通过ETLCloud CDC构建高效数据管道解决方案

随着企业数据规模的快速增长和多样化的数据&#xff0c;如何高效地捕获、同步和处理数据成为了业务发展的关键。本文将介绍如何利用ETLCloud CDC技术&#xff0c;构建一套高效的CDC数据管道&#xff0c;实现实时数据同步和分析&#xff0c;助力企业实现数据驱动的业务发展。 一…

SpringBoot security 安全认证(一)——登录验证

本节内容&#xff1a;使用springboot自动security模块实现用户登录验证功能&#xff1b; 登录过程如下图&#xff1a; AuthenticationManager内容实现用户账号密码验证&#xff0c;还可以对用户状态&#xff08;启用/禁用&#xff09;&#xff0c;逻辑删除&#xff0c;账号是否…

IPSec VPN与NQA联动实现主备对等体和主备链路快速切换案例

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 厦门微思网络​​​​​​https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle OC…

java设计模式:策略模式

在平常的开发工作中&#xff0c;经常会用到不同的设计模式&#xff0c;合理的使用设计模式&#xff0c;可以提高开发效率&#xff0c;提高代码质量&#xff0c;提高代码的可拓展性和维护性。今天来聊聊策略模式。 策略模式是一种行为型设计模式&#xff0c;运行时可以根据需求动…

记录 arm 开发板上 nginx 配置 http 服务注意事项

1. 自定义项目&#xff0c;需要在 conf.d 目录中增加一个 .conf 配置文件&#xff1a; server {listen 9200; # 端口号server_name localhost; # 服务名称location / {root /home/imx6q/media; # 项目根目录&#xff08;需要修改 n…