MySQL数据完整性(2)

约束类型

为了维护数据的完整性,数据库管理系统dmbs必须提供一种机制来检查数据库中的数据。这些加在数据库之上的语义约束条件就称为数据完整性的约束条件。

约束是在表中定义的用于维护数据库完整性的一些规则。通过为表中的列定义约束可以防止将错误的数据插入表中,也可以保持表与表之间数据的一致性。为表设置约束是解决数据完整性的主要方法。MySQL数据库设置了相关约束,通过定义字段的取值规则来维护数据完整性。

MySQL数据库支持的约束有:primary key(主键)约束、not null(非空)约束、unique(唯一)约束、foreign key(外键)约束和default(默认)约束。在MySQL中,为表创建约束有两种办法:

(1)在创建表时设置约束,使用create table语句实现。

(2)通过修改表结构设置约束,使用alter table语句实现。

1.主键约束  primary

MySQL数据库规定数据表中不能有重复的记录值出现,一张表有多个字段,如果保证有一个字段的值是不重复的,则该表中就不可能存在完全相同的几条记录。因此,创建数据表时要把表中关键的字段设置为主键

主键用于唯一标识表中的每一条记录,是数据表的一个字段或多个字段组合。当字段被设置为主键时,该字段的值就不能为空,也不能重复。设置主键有两种情况:

(1)如果一张表的主键是单个字段。在创建表结构时,在该字段的数据类型后加上“primary key”关键字,就可以为该字段添加主键约束,语法结构为:

字段名 数据结构 primary key

constraint 约束名称 primary key(字段名)

(2)如果一张表的单个字段无法被定义为主键,则需要把多个字段组合共同设置为主键,即复合主键,语法结构为:

constraint 约束名称 primary key (字段名 1,字段名 2)

如果表中的主键是复合主键,也可以为该表新增一个字段类似于表中的序号,并设置为自动增长型数据,再设置主键。自增型字段的初始值从1开始递增,且步长为1。

2.唯一约束   unique

在一张数据表中,有时除主键具有唯一性特征外,表中其他的字段也需要具有唯一性。语法格式为:

字段名 数据  unique

3.非空约束    not null

非空约束用来强制数据的完整性,用来设定某个字段的值不能为空。对于使用了非约束的字段,如果用户在插入数据时没有指定值,数据库管理系统就会报错,拒绝数据插入,语法格式为:

字段名 数据类型 not null;

4.默认约束    default

默认约束指定某列的默认值。语法格式为:

字段名 数据类型 default 默认值

5.外键约束   foreign key

数据库中的表与表之间的数据是有关联性的,为了防止数据丢失或无意义的数据在数据库中扩散,使数据不一致,需要设置外键。一张表中的字段值恰好引用了另外一张表的字段值。那么该字段就是本表的外键。被引用的表是主表(父表),引用的表是从表(子表),外键在从表或子表中设置。外键是实现强制关联数据的参照完整性,具体地说,就是从表中每条记录外键的值必须是主键中存在的。因此,如果在两个表之间建立了关联关系,则对一个数据表进行的操作就要影响到另一张表中的记录。一张表可以添加多个外键,实现多张表的数据关联。外键的作用主要表现在以下三个方面:

(1)禁止在从表中插入主表不存在的数据。

(2)禁止由于修改主表中主键的值,导致从表中相应的外键值孤立。

(3)禁止删除在从表中有对应记录的主表记录。

设置外键的语法格式为:

constraint 约束名称 foreign key(字段名) reference 主表名(字段名)

6.检查约束   check

检查约束是检查某个字段是否符合要求。(用户自定义完整性)

语法格式为:

字段名 数据类型 check 表达式

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值