一、表的约束

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

1.空属性

包括两个值:null/not null

not null表示此列属性不允许为空,必须做数据插入。

MYSQL允许创建函数 mysql添加字段允许为空_MYSQL允许创建函数


上边的结果和我们预想的不一样,1+NULL按理来说应该为1,但是实际并不是。所以,在实际的开发过程中应保证字段不为空,原因是空数据无法参与运算。我们创建一个表格,其中per_age不为空。

MYSQL允许创建函数 mysql添加字段允许为空_MYSQL允许创建函数_02


插入数据。

MYSQL允许创建函数 mysql添加字段允许为空_MYSQL允许创建函数_03


MYSQL允许创建函数 mysql添加字段允许为空_约束_04


当我们插入数据的时候不给per_name值,该属性可以为空,最后会插入一个NULL值。

MYSQL允许创建函数 mysql添加字段允许为空_数据库_05


但是当我们不给per_age值,该属性不可以为空,最后会显示错误。

2.默认值(default)

某一个数据会经常显示某一个具体的值,可以一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。默认值经常配合not null使用。

MYSQL允许创建函数 mysql添加字段允许为空_mysql_06


当数据在插入的时候不给该字段赋值,就使用默认值。

MYSQL允许创建函数 mysql添加字段允许为空_约束_07


注:set和enum不能设置默认值。

时间戳的默认值是CURRENT_TIMESTAMP。

3.列描述(comment)

没有实际含义,专门用来描述字段。

MYSQL允许创建函数 mysql添加字段允许为空_约束_08


我们可以看到,描述字段通过desc查看不到,但是可以通过show看到,程序员可以每次在对数据库中的表进行操作时,先用show查看表中属性的含义。

comment&注释

MYSQL允许创建函数 mysql添加字段允许为空_数据库_09


我们来用show和desc查看一下

MYSQL允许创建函数 mysql添加字段允许为空_mysql_10


我们发现,注释和comment是有区别的,注释只有在当前注释的地方可以看到,而comment可以在show create table中可以看到。

4.zerofill

自动填充0。

如果某一数值列规定了zerofill,则自动把此列变为无符号整数。

规定了zerofill的数据列,如果数据长度没达到规定长度,则在数据前自动填充0.

MYSQL允许创建函数 mysql添加字段允许为空_mysql_11


MYSQL允许创建函数 mysql添加字段允许为空_约束_12


zerofill对于数据内部的存储是没有影响的,只是改变了输出的形式。

5.主键(primary key)

单主键

用来唯一的约束该字段里的数据,不能重复,不能为空,并且主键所在的列的数据类型是整型。

其中,一张表中最多只能有一个主键。

MYSQL允许创建函数 mysql添加字段允许为空_mysql_13


MYSQL允许创建函数 mysql添加字段允许为空_mysql_14


设置主键的列的key的值为PRI。

复合主键

多个属性组合起来唯一标识,不能重复。

MYSQL允许创建函数 mysql添加字段允许为空_MYSQL允许创建函数_15


MYSQL允许创建函数 mysql添加字段允许为空_mysql_16


复合主键是不能重复的,用主键1-主键2-…主键N来表示。

追加主键

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

MYSQL允许创建函数 mysql添加字段允许为空_表_17

删除主键

MYSQL允许创建函数 mysql添加字段允许为空_MYSQL允许创建函数_18

6.自增长(auto_increment)

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

MYSQL允许创建函数 mysql添加字段允许为空_mysql_19


自增长的特点:

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

7.唯一键(unique)

一张表中只能有一个主键,但可以有多个唯一键,唯一键允许为空,允许多个为空,空字段不做唯一性比较。

MYSQL允许创建函数 mysql添加字段允许为空_mysql_20


MYSQL允许创建函数 mysql添加字段允许为空_表_21


唯一键的key值为UNI。

MYSQL允许创建函数 mysql添加字段允许为空_约束_22


空字段不做唯一性比较。

二、表的增删查改操作

1.增加记录

MYSQL允许创建函数 mysql添加字段允许为空_约束_23


MYSQL允许创建函数 mysql添加字段允许为空_MYSQL允许创建函数_24


插入数据时,应注意以下几点:

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

MYSQL允许创建函数 mysql添加字段允许为空_mysql_25


当我们在数据插入时,主键存在冲突,插入失败,可以选择性的进行处理。

MYSQL允许创建函数 mysql添加字段允许为空_约束_26

更新数据

MYSQL允许创建函数 mysql添加字段允许为空_mysql_27

替换数据

MYSQL允许创建函数 mysql添加字段允许为空_约束_28


替换数据和更新数据时有区别的,更新是先删除冲突行,在插入行,替换是直接插入数据行。

2.修改数据

MYSQL允许创建函数 mysql添加字段允许为空_mysql_29


修改数据的时候没有where条件,整张表都会修改。

MYSQL允许创建函数 mysql添加字段允许为空_mysql_30


更新可以限制更新数量。

MYSQL允许创建函数 mysql添加字段允许为空_mysql_31

3.删除

删除表中数据

MYSQL允许创建函数 mysql添加字段允许为空_数据库_32


MYSQL允许创建函数 mysql添加字段允许为空_表_33

delete&truncate

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

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