Java 数据库 第三章 数据库完整性

来源:互联网 发布:linux recv函数 编辑:程序博客网 时间:2024/06/05 16:25
第三章 数据库完整性


数据完整性的分类:
1>实体完整性,保证一行数据是有效的
2>域完整性,保证一列数据时有效的
3>引用完整性,保证引用的编号是有效的
4>用户自定义完整性,保证自定义规则


实体完整性:保证每行所代表的实体能互相区别,不能存在两条一模一样的记录
实体完整性实现方法:
1>主键约束(Primary Key):主键是表中的一个到多个列,主键列不能为空,也不能重复,一个表中只能有一个主键。
2>唯一约束(Unique):唯一约束是指给定列的所有值必须唯一,该列在表中每一行的值必须唯一,它和主键约束的区别在于该列可以为空,并且可以在一张表中给多个列设置唯一约束。


设置主键约束:
1>CREATE TABLE student(学号 TINYINT PRIMARY KEY, 姓名 VARCHAR(50))


2>CREATE TABLE student(学号 TINYINT, 姓名 VARCHAR(50), PRIMARY KEY(学号))


设置唯一约束:
CREATE TABLE student(学号 PRIMARY KEY,姓名 VARCHAR(50)UNIQUE);


给已创建的表添加唯一约束:
ALTER TABLE student ADD UNIQUE(属性名);


查看表详细结构语句
SHOW CREATE TABLE 表名;


域完整性:域完整性是指列的输入有效性


域完整性的实现方法:
1>非空约束:NOT NULL
2>默认约束:DEFAULT
3>检查约束:CHECK(MySQL不支持)


设置非空约束
CREATE TABLE student(学号 TINYINT PRIMARY KEY,姓名 VARCHAR(50)UNIQUE NOT NULL,年龄 TINYINT NOT NULL);
注意:主键约束默认为非空。


设置默认约束
CREATE TABLE student(学号 TINYINT PRIMARY KEY,姓名 VARCHAR(50)UNIQUE NOT  NULL,年龄 TINYINT,性别 VARCHAR(2)DEFAULT'男');
注意:设定了默认值后,可以再添加此列时不指定值,或使用default关键字让数据库自动填充设定的默认值。


检查约束
受检查约束是最灵活的约束类型,它允许我们在更改或插入行到数据库时有一个较宽访问的限制。


引用完整性--外键约束
从表外键中出现的数据,必须在主表的主键列中出现。


实现方法:外键约束
外键与外键约束的区别:
外键是指从表的某列与主表的某列存在依附关系。外键约束是指在外键关联主键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改。
注意:
没有建立外键约束不等于没有外键。
主表的外键(FOREIGN KEY)一定是从表主键(PRIMARY KEY)。
外键约束用于预防破坏表与表之间的连接的动作,也用于防止非法数据插入外键属性中,因为它必须是其指向的那个表中的值之一。


MySQL有两种常用的引擎类型:MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。


查看数据库存储引擎:SHOW VARIABLES LIKE '%engine%';


设置外键约束:
先创建主表
CREATE TABLE class(id int primary key,name varchar(50)unique not null)engine=innodb;
再创建从表(外键所在的表)
create table student(
id int primary key,
class_id int,
name varchar(50)unique not null,
age int,sex char(2)default'男',
constraint foreign key(class_id)references class(id))engine=innodb;


自定义完整性
用户定义完整性使我们可以定义不属于其他任何完整性分类的特定业务规则。


使用自动编号
在MySQL中,提供了一种自动为列产生数值的机制,这种自动产生值的字段通常与主键约束一起配合使用。
CREATE table class(id int primary key auto_increment,name varchar(50)unique not null)engine=innodb;
insert into class(name)values('t01');
设置编号起始号
alter table class auto_increment=100000);


修改数据完整性
我们不仅可以使用alter table添加或者删除列,也可以添加、删除主键、外键或其他约束。
create table t_class(c_id int,c_name varchar(50)unique not null,constraint unq_name unique(c_name));
删除唯一约束
alter table t_class drop constraint unq_name;
删除外键约束
alter table t_student drop foreign key fk_1;
增加主键
alter table t_class change c_id new_c_id int primary key;
0 0
原创粉丝点击