MySQL常用的数据库引擎包括INNODB和MYISAM,其中INNODB功能更为强大且具有灾难恢复和事务管理功能,MYISAM功能相对较少,但性能较强。由于引擎是用于表中,所以修改引擎的sql语句只能是对表操作。使用数据库时我们要保证其可靠性和准确性,也就是数据库的完整性,以防止垃圾数据产生,影响执行效率。完整性包括实体完整性、域完整性、引用完整性和用户自定义完整性。
实体完整性,保证每行所代表的实体能互相区别,不能存在一模一样的数据。主要包括1、对某列进行主键约束(primary key),设置为主键列的数据不能为空且不重复,可作为唯一识别符。对于int类型的主键,我们可以使用auto_increment来声明主键是自增长的,每次进行加1操作。2、唯一约束(unique),设置某列的数据不重复。
域完整性,制定规则保证该列输入数据的有效性。只要包括1、非空约束(not null),说明该列数据必须被填充,不能为空值。2、默认约束(default),当用户不输入值时,对某列的数据指定一个默认值。3、检查约束(check),对用户输入的数据进行检查,防止非法数据填入指定列,该约束在mysql中不产生作用。
引用完整性,主要是指外键(foreign key)约束,用于连接外部表的约束。外键是表中的一到多个列,其值匹配另一个表中的一到多个列的值,第一个表中的外键值通常来自于第二个表的主键。表之间的外键关系包括三种基本类型:1、一对一关系。有两个表,在第一个表中的一行只与第二个表中的一行相关,同时第二个表中的一行也只与第一个表中的一行相关时,我们称两个表之间是一对一关系。2、一对多关系。一对多关系与一对一关系的不同之处在于,第一个表中的行可以与第二个表中的一到多个行相关联,但第二表中的一行只能与第一个表中的一行相关联。这种关系是我们在数据库中最常看到的一种关系类型。3、多对多关系。这是指第一个表的一行可以与第二个表中的一到多个行相关联,同时,第二个表中的一行可以与第一个表中的一行到多个行相关联。