一、 数据完整性
(一)相关概念
数据的完整性是指数据的可靠性和准确性.它分四类:
1、实体完整性:实体的完整性强制表的标识符列或主键的完整性(通过索引,唯一约束,主键约束或标识列属性).
2、域完整性:限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则).
3、引用完整性:在删除和输入记录时,引用完整性保持表之间已定义的关系.引用完整性确保键值在所有表中一致.这样的一致辞性要求不能引用不存在的值.如果一个键值更改了,那么在整个数据库中,对该键值的引用要进行一致的更改.
4、自定义完整性:用户自己定义的业务规则.
(二)约束和数据完整性
主键(Primary key)
外键(Foreign key)
唯一(unique)
检查(check):MySQL不支持。
默认(default)
(三)数据类型
1、对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。
例如:
CREATE TABLE sizes (
name ENUM('small', 'medium', 'large')
);
INSERT INTO sizes
VALUES(2);
或者
INSERT INTO sizes
VALUES('small');
SELECT NAME+0 FROM sizes;
2、创建自动增量
create table tongxunLu(
id int primary key auto_increment,
name varchar(50)
) auto_increment=10
注明:要求自动增量的字段类型为整型。
不能设置自动增长的步长。
二、 创建数据表及实现数据完整性
用以下例子来说明:
create table s(sno char(2) not null ,
sname char(10) null,
sex char(2) null default '男',
birthday datetime null,
id char(18) null , primary key(sno), unique(id),
check(sex='男' or sex='女')
);
create table c (cno char(2) not null ,
cname char(10) null, primary key(cno));
create table sc(sno char(2) not null ,
cno char(2) not null ,
score decimal(5,1) null , primary key(sno,cno),
foreign key(sno) references s(sno) on delete cascade on update cascade,
foreign key(cno) references c(cno),
check(score>=0 and score<=100)
);