MySql表的约束、表的增删改操作
一、表的约束
表的真正约束字段是数据类型,但是数据类型很单一,需要一些额外的约束,更好的保证数据的合法性。
表的约束包括:null/not null,default,comment,zerofill,primary key,auto_increment,unique。
1.空属性
包括两个值:null/not null
not null表示此列属性不允许为空,必须做数据插入。
上边的结果和我们预想的不一样,1+NULL按理来说应该为1,但是实际并不是。所以,在实际的开发过程中应保证字段不为空,原因是空数据无法参与运算。
我们创建一个表格,其中per_age不为空。
插入数据。
当我们插入数据的时候不给per_name值,该属性可以为空,最后会插入一个NULL值。
但是当我们不给per_age值,该属性不可以为空,最后会显示错误。
2.默认值(default)
某一个数据会经常显示某一个具体的值,可以一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。默认值经常配合not null使用。
当数据在插入的时候不给该字段赋值,就使用默认值。
注:set和enum不能设置默认值。
时间戳的默认值是CURRENT_TIMESTAMP。
3.列描述(comment)
没有实际含义,专门用来描述字段。
我们可以看到,描述字段通过desc查看不到,但是可以通过show看到,程序员可以每次在对数据库中的表进行操作时,先用show查看表中属性的含义。
comment&注释
我们来用show和desc查看一下
我们发现,注释和comment是有区别的,注释只有在当前注释的地方可以看到,而comment可以在show create table中可以看到。
4.zerofill
自动填充0。
如果某一数值列规定了zerofill,则自动把此列变为无符号整数。
规定了zerofill的数据列,如果数据长度没达到规定长度,则在数据前自动填充0.
zerofill对于数据内部的存储是没有影响的,只是改变了输出的形式。
5.主键(primary key)
单主键
用来唯一的约束该字段里的数据,不能重复,不能为空,并且主键所在的列的数据类型是整型。
其中,一张表中最多只能有一个主键。
设置主键的列的key的值为PRI。
复合主键
多个属性组合起来唯一标识,不能重复。
复合主键是不能重复的,用主键1-主键2-…主键N来表示。
追加主键
表创建好了之后,我们也可以追加主键,要求是字段不能为空,也不能重复。
删除主键
6.自增长(auto_increment)
当对应的字段,不给值,会自动的被系统出发,系统会从当前字段中最大的值进行+1操作,得到一个新的不同的值,通常和主键搭配使用,称为逻辑主键。例如:生活中的淘宝订单表以及一些商品信息表就是使用的是逻辑主键。
自增长的特点:
- 任何一个字段要做自增长,前提是本身是一个索引,即key栏有值。
- 自增长字段必须是整数。
- 一张表最多只有一个自增长。
7.唯一键(unique)
一张表中只能有一个主键,但可以有多个唯一键,唯一键允许为空,允许多个为空,空字段不做唯一性比较。
唯一键的key值为UNI。
空字段不做唯一性比较。
二、表的增删查改操作
1.增加记录
插入数据时,应注意以下几点:
* 数据类型是否一致。
* 并且数据的大小应在规定的范围内。
* 在values中列出的数据位置必须与被加入的列位置相对应。
* 字符和日期类型放在单引号或双引号中。
* 一次性添加多个数据用逗号隔开。
* 如果给指定字段赋值,则需要制定字段名。
当我们在数据插入时,主键存在冲突,插入失败,可以选择性的进行处理。
更新数据
替换数据
替换数据和更新数据时有区别的,更新是先删除冲突行,在插入行,替换是直接插入数据行。
2.修改数据
修改数据的时候没有where条件,整张表都会修改。
更新可以限制更新数量。
3.删除
删除表中数据
delete&truncate
相同:两者都将整个表的记录删除,但表结构还在。
不同:delete删除时,一行一行删除;truncate直接将文件大小变为0,速度将delete快。delete删除可以带where语句,删除更加灵活。