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.hqwc.cn/news/453097.html

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

相关文章

OJ_找位置

题干 代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> #include<algorithm> #include<map> using namespace std;int main() {char str[200] { 0 };scanf("%s", str);map<char, vector<int>> times…

Acwing---829. 模拟队列

模拟队列 1.题目2.基本思想3.代码实现 1.题目 实现一个队列&#xff0c;队列初始为空&#xff0c;支持四种操作&#xff1a; push x – 向队尾插入一个数 x&#xff1b;pop – 从队头弹出一个数&#xff1b;empty – 判断队列是否为空&#xff1b;query – 查询队头元素。 现…

机器学习中的有监督学习和无监督学习

有监督学习 简单来说&#xff0c;就是人教会计算机学会做一件事。 给算法一个数据集&#xff0c;其中数据集中包含了正确答案&#xff0c;根据这个数据集&#xff0c;可以对额外的数据希望得到一个正确判断&#xff08;详见下面的例子&#xff09; 回归问题 例如现在有一个…

蓝桥杯刷题day06——平均

1、题目描述 有一个长度为n 的数组&#xff08;n 是 10 的倍数&#xff09;&#xff0c;每个数ai都是区间 [0,9] 中的整数。 小明发现数组里每种数出现的次数不太平均&#xff0c;而更改第i 个数的代价为bi&#xff0c; 他想更改若干个数的值使得这10 种数出现的次数相等&…

八. 实战:CUDA-BEVFusion部署分析-学习spconv的优化方案(Implicit GEMM conv)

目录 前言0. 简述1. 什么是Implicit GEMM Conv2. Explicit GEMM Conv3. Implicit GEMM Conv4. Implicit GEMM Conv优化5. spconv和Implicit GEMM Conv总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0…

国辰智企APS自动化排产平台:实现生产计划与其他系统无缝协同

在当今竞争激烈的制造环境中&#xff0c;有效的生产计划和排程对于企业的成功至关重要。APS生产计划排程平台作为一种先进的工具&#xff0c;正越来越受到企业的关注和应用。那么&#xff0c;APS生产计划排程平台有哪些类型呢&#xff1f;本文将为您详细介绍。 1.基于规则的APS…

Elastic 因其人工智能辅助可观察性而荣获 2024 年 EMA Allstars 奖

作者&#xff1a;来自 Elastic Gagan Singh 我们很高兴获得 2024 年 EMA 全明星奖。 该奖项认可了 Elastic 专注于提供全栈可观测性解决方案&#xff0c;该解决方案为复杂的混合云部署提供统一的可见性和人工智能驱动的见解。 EMA Allstars 奖旨在表彰重塑企业技术格局的开拓者…

虚幻5源码版打包服务端

适用情况&#xff0c;windows系统&#xff0c;已经安装vs2022之类的&#xff0c;和UE5适配的版本 源码版使用 1.下载源码版&#xff0c;推荐下载 压缩包 tar.gz那个&#xff0c;zip和git clone我老是下载不下载来&#xff0c;只是这个压缩包要解压1个多小时… 2.点击 源码的…

机器学习系列——(九)决策树

简介 决策树作为机器学习的一种经典算法&#xff0c;在数据挖掘、分类和回归等任务中广泛应用。本文将详细介绍机器学习中的决策树算法&#xff0c;包括其原理、构建过程和应用场景。 原理 决策树是一种基于树状结构的监督学习算法&#xff0c;它通过构建一棵树来对数据进行分…

【Redis】字符串原理--简单动态字符串SDS

一.SDS定义 free 属性值为0&#xff0c;标识SDS没有分配任何未使用空间。len 属性值为5&#xff0c;标识SDS保存了一个5字节长度的字符串。buf 属性是一个char类型数组&#xff0c;数组的前5个字节保存了&#xff0c;R e d i s 五个字符&#xff0c;最后一个保存空字符串 \0…

阿里计算巢:开启数据集市场的宝库,助力AI研究和应用

阿里计算巢 阿里数据巢提供了一个丰富的数据集市场&#xff0c;官方地址&#xff1a; https://computenest.console.aliyun.com/dataset/service/cn-hangzhou 可以看到数据集内容涵盖了多个领域&#xff0c;且还在不断增加中。关键是免费&#xff01;且支持下载到本地。 以下…

泡泡清新文艺的微社区系统PHP源码

泡泡微社区&#xff0c;小巧而强大&#xff0c;为您带来卓越的社区交流体验。 凭借GoZinc的先进架构&#xff0c;泡泡在保持轻盈身姿的同时&#xff0c;功能一应俱全。前端采用Vue3匠心打造&#xff0c;界面清新简约&#xff0c;三栏式布局仿若Twitter&#xff0c;让您一见倾心…