MySql表的约束、表的增删改操作

一、表的约束

表的真正约束字段是数据类型,但是数据类型很单一,需要一些额外的约束,更好的保证数据的合法性。
表的约束包括:null/not null,default,comment,zerofill,primary key,auto_increment,unique。

1.空属性

包括两个值:null/not null
not null表示此列属性不允许为空,必须做数据插入。
MySql表的约束、表的增删改操作_第1张图片
上边的结果和我们预想的不一样,1+NULL按理来说应该为1,但是实际并不是。所以,在实际的开发过程中应保证字段不为空,原因是空数据无法参与运算。

我们创建一个表格,其中per_age不为空。
MySql表的约束、表的增删改操作_第2张图片
插入数据。
这里写图片描述
MySql表的约束、表的增删改操作_第3张图片
当我们插入数据的时候不给per_name值,该属性可以为空,最后会插入一个NULL值。
这里写图片描述
但是当我们不给per_age值,该属性不可以为空,最后会显示错误。

2.默认值(default)

某一个数据会经常显示某一个具体的值,可以一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。默认值经常配合not null使用。
MySql表的约束、表的增删改操作_第4张图片
当数据在插入的时候不给该字段赋值,就使用默认值。
MySql表的约束、表的增删改操作_第5张图片
注:set和enum不能设置默认值。
时间戳的默认值是CURRENT_TIMESTAMP。

3.列描述(comment)

没有实际含义,专门用来描述字段。
MySql表的约束、表的增删改操作_第6张图片
我们可以看到,描述字段通过desc查看不到,但是可以通过show看到,程序员可以每次在对数据库中的表进行操作时,先用show查看表中属性的含义。

comment&注释

MySql表的约束、表的增删改操作_第7张图片
我们来用show和desc查看一下
MySql表的约束、表的增删改操作_第8张图片
我们发现,注释和comment是有区别的,注释只有在当前注释的地方可以看到,而comment可以在show create table中可以看到。

4.zerofill

自动填充0。
如果某一数值列规定了zerofill,则自动把此列变为无符号整数。
规定了zerofill的数据列,如果数据长度没达到规定长度,则在数据前自动填充0.
MySql表的约束、表的增删改操作_第9张图片
MySql表的约束、表的增删改操作_第10张图片
zerofill对于数据内部的存储是没有影响的,只是改变了输出的形式。

5.主键(primary key)

单主键

用来唯一的约束该字段里的数据,不能重复,不能为空,并且主键所在的列的数据类型是整型。
其中,一张表中最多只能有一个主键。
MySql表的约束、表的增删改操作_第11张图片
MySql表的约束、表的增删改操作_第12张图片
设置主键的列的key的值为PRI。

复合主键

多个属性组合起来唯一标识,不能重复。
MySql表的约束、表的增删改操作_第13张图片
MySql表的约束、表的增删改操作_第14张图片
复合主键是不能重复的,用主键1-主键2-…主键N来表示。

追加主键

表创建好了之后,我们也可以追加主键,要求是字段不能为空,也不能重复。
这里写图片描述

删除主键

这里写图片描述

6.自增长(auto_increment)

当对应的字段,不给值,会自动的被系统出发,系统会从当前字段中最大的值进行+1操作,得到一个新的不同的值,通常和主键搭配使用,称为逻辑主键。例如:生活中的淘宝订单表以及一些商品信息表就是使用的是逻辑主键。
MySql表的约束、表的增删改操作_第15张图片
自增长的特点:

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

7.唯一键(unique)

一张表中只能有一个主键,但可以有多个唯一键,唯一键允许为空,允许多个为空,空字段不做唯一性比较。
MySql表的约束、表的增删改操作_第16张图片
MySql表的约束、表的增删改操作_第17张图片
唯一键的key值为UNI。
MySql表的约束、表的增删改操作_第18张图片
空字段不做唯一性比较。

二、表的增删查改操作

1.增加记录

MySql表的约束、表的增删改操作_第19张图片
MySql表的约束、表的增删改操作_第20张图片
插入数据时,应注意以下几点:

*  数据类型是否一致。
* 并且数据的大小应在规定的范围内。
* 在values中列出的数据位置必须与被加入的列位置相对应。
* 字符和日期类型放在单引号或双引号中。
* 一次性添加多个数据用逗号隔开。
* 如果给指定字段赋值,则需要制定字段名。

MySql表的约束、表的增删改操作_第21张图片
当我们在数据插入时,主键存在冲突,插入失败,可以选择性的进行处理。
这里写图片描述

更新数据

MySql表的约束、表的增删改操作_第22张图片

替换数据

MySql表的约束、表的增删改操作_第23张图片
替换数据和更新数据时有区别的,更新是先删除冲突行,在插入行,替换是直接插入数据行。

2.修改数据

MySql表的约束、表的增删改操作_第24张图片
修改数据的时候没有where条件,整张表都会修改。
这里写图片描述
更新可以限制更新数量。
MySql表的约束、表的增删改操作_第25张图片

3.删除

删除表中数据

这里写图片描述
MySql表的约束、表的增删改操作_第26张图片

delete&truncate

相同:两者都将整个表的记录删除,但表结构还在。

不同:delete删除时,一行一行删除;truncate直接将文件大小变为0,速度将delete快。delete删除可以带where语句,删除更加灵活。

你可能感兴趣的:(数据库,数据库,mysql,表,约束)