MySQL——表的约束

一.概念

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合****法性。

表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。

约束的本质是通过技术手段,倒逼程序员去插入正确的数据。

约束的最终目的,就是保证数据的完整性和可预期性


二.非空约束

非空约束有两个值:null(默认的)和not null(不为空)。

数据库中默认创建的字段,如果不添加非空约束,基本都是可以为空 ,但是实际开发时,有些字段可能被要求必须添加数据,因此必须设置为非空。同时应该尽可能保证字段不为空,因为数据为空没办法参与运算。

设置非空约束,需要在添加表格字段时,在后边追加上 "not null" 。当某字段被设置非空后,如果添加数据时,未对该字段进行数据添加,就会添加失败


三.默认值

默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。

设置默认值,需要在字段后追加**"default 默认值",此后如果添加数据时未对该字段添加数据,就会使用默认值去填充数据**。


四.列描述

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

name varchar(20) not null comment '姓名';


五.主键

1.单主键

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

可以在创建表时即在字段后追加 "primary key" 设置该字段为主键字段。

添加数据时,主键字段不能为空,也不能出现数据重复

创建表后,如果没有设置主键字段,同样可以追加设置

alter table 表名 add primary key(字段列表)

删除主键

alter table 表名 drop primary key;


2.复合主键

MySQL规定一张表中主键只有一个,但是这不代表主键只能是一个字段,多个字段可以同时为主键,称为复合主键

创建复合主键,可以在创建表时,通过 "primary key(字段,字段...)" 的方式,例如:

primary key(id, class_room)

注意必须是新的一行代码。

也可以通过上述追加的方式创建

alter table 表名 add primary key(字段,字段)

注意如果已经存在一个单字段主键,必须先删除该主键,才能重新创建复合主键

复合主键中,其单独的字段中,数据可以重复,但是多个字段组成的数据集中,数据不能重复

例如:先添加了一个(id,class_room)为(1,'111'),的数据,就不能添加第二个(1,'111'),但是可以添加(1,'112')或(2,'111')。


六.自增长

auto_increment:当对应的字段被设置自增长后,如果不添加数据,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值必须和主键搭配使用,作为逻辑主键。

自增长的特点:

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

自增长可以在创建表时直接在对应的主键字段后追加 "auto_increment"

自增长默认会从1开始,也可以在创建表时,在最后追加**"auto_increment=xxx"**,来设置自增长的初始值。

在插入后获取上次插入的 AUTO_INCREMENT 的值(批量插入时获取的是第一个值):

select last_insert_id();


七.唯一键

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

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

创建唯一键,可以在字段后追加**"unique" 。**


八.外键

外键用于定义主表和从表之间的关系:外键约束是指一个相同的字段,同时存在于两张表中,比如学生表中存在一个"班级号字段",班级表中同样存在一个"班级号字段",通过该字段将两张表在逻辑上合二为一

其中外键约束字段要定义在从表上该字段在主表上则必须有主键约束或****unique 约束 。当定义外键后,要求外键列数据必须在主表的主键列存在或为null

创建外键需要在从表中定义下述语句:

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

一般来说,主表要包含从表,比如班级中包含学生,所以班级表为主表,学生表为从表。

外键约束的主要作用:

外键约束,主要是同时规范两张表格的数据准确性,例如如果在班级表中,只有班级id为101和102的两个班级,那么在学生表中,如果添加班级id为103的数据信息,显然是不合常理的,在外键约束下,添加数据就会失败。


相关推荐
0xDevNull3 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花3 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸3 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain3 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希4 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神4 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员4 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java4 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿5 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴5 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存