<MySQL> 数据库约束 |
您所在的位置:网站首页 › 数据库中的空值 › <MySQL> 数据库约束 |
目录 一、数据库约束的概念 二、空值约束(not null) 2.1 语法及演示 三、唯一值约束(unique) 3.1 语法及演示 四、默认值约束(default) 4.1 语法及演示 五、主键约束(primary key) 5.1 主键约束的基本用法 5.2 配合 auto_increment 使用 5.3 以字符串形式保证主键唯一性 六、外键约束(foreign key) 6.1 外键约束的基本用法 6.2 索引 6.3 父表与子表是相互约束的 一、数据库约束的概念创建数据表时,为表指定规则,后续的增改删操作,都需要遵循指定的规则。 数据库的约束,是为了更严格的校验数据,保证数据的正确性,引入了更多的检查操作,但同时也增加了系统开销。 约束类型简介not null 指定某列不能为 null unique指定某列中的值必须都为该列中的唯一default指定某列在没有赋值时的默认值primary key指定某列或多列的结合,有且只有唯一标识foreign key保证一个表中的数据匹配另一个表中的对应数据check保证列中的值符合指定条件,MySQL中无该功能(不做介绍) 二、空值约束(not null) 2.1 语法及演示 语法create table 表名(列名 类型 not null, ......); 解释创建表,表中某列或多列数据增加空值约束;create table 表名(列名 类型 unique, ......); 解释创建表,表中某列或多列数据增加唯一值约束;create table 表名(列名 类型 default 默认值, ......); 解释创建表,表中某列或多列数据增加默认值约束; (如果没有指定默认值,则当数据为空时,系统将默认返回 null ) create table 表名(列名 类型 primary key, ......); 解释创建表,表中某列数据或多列数据的结合增加主键约束; create table 表名(列名 类型 primary key auto_increment, ......); 解释创建表,表中某列数据或多列数据的结合增加主键约束,主键根据最大值自动增量; 当数据分散储存在多个服务器时,主键自增将无法生效(每台服务器的主键将各自自增,无法关联)。 在多服务器情况下,通常使用字符串形式生成主键的方式,确保主键唯一性,方法如下: 时间戳+服务器编号+随机因子在不同时刻将生成不同的字符串不同的主机将生成各自的字符串随机生成的字符串 六、外键约束(foreign key) 6.1 外键约束的基本用法 作用用于关联其他表的主键或唯一键,以达到表格互相约束的目的。概念子表:被约束的表叫做子表。 父表:约束其他表的表称为父表。 语法create table 表名(列名 类型 , ...... , foreign key(本表约束列名) references 父表名(父表约束列名)); 解释创建表,表中某列数据作为约束和父表约束列相关联。 子表在数据行创建时,会检查数据行的外键约束列是否为父表关联列的合法数值,从而确定子表数据行是否插入成功。这里使用的检查方式,就是通过查询索引完成的。 只有在表创建时,指定了主键约束,索引才能创建成功。因此,如果一个数据表需要作为父表,那么这个表就必须指定主键约束。 6.3 父表与子表是相互约束的从上文可以看到,父表对子表插入的数据行是存在约束的,只有子表数据行的外键约束列数值为父表关联列的合法数值时,数据行才能插入成功。 同样的,子表对父表也存在约束。在父表删除数据行时,如果关联列对应的子表外键约束仍存在数据,那么父表对应的数据行不能被删除。 沿用上表: 阅读指针 -> 《MySQL表数据的 CRUD 进阶操作 -- 聚合查询》 <MySQL> 查询数据进阶操作 -- 聚合查询-CSDN博客文章浏览阅读51次。聚合查询:使用聚合函数,使用分组查询group by,和分组查询后的条件筛选 having |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |