什么是数据完整性?
保证用户输入的数据保存到数据库中是正确的。
如何添加数据完整性?
在创建表的时候给表添加约束。
完整性分类?
(1).实体完整性
(2).域完整性
(3).引用完整性
(1).什么是实体完整性?
表中的一行(一条记录)代表一个实体(entity).
实体完整性的作用?
标识(标记)每一行数据不重复.行级约束.
约束类型
(1).主键约束(primary key)
(2).唯一约束(unique)
(3).自动增长(auto_increment)
(4).不为空(not null)
(5).默认值(default)
主键(primary key)的特点:(1).(创建)每个表中要有一个主键,(2).数据唯一,且不能为null(空)。
唯一(unique)约束的特点:(1).指定列的数据不能重复,(2).可以为空值
自增长(auto_incremeny)的特点:(1).指定列的数据自动增长;(2).即使数据删除,还是从删除的序号继续 往下执行,(3).一般我们会给主键设置为自动增长列.
主键(primary key)
联合主键:两个字段数据同时相同时,才违反联合主键约束
create table 表名(字段1 数据类型,字段2 数据类型,primary key(主键1,主键2));
先创建表再添加主键
如果表中你之前已经添加了数据,数据不符合主键规则就会报错
alter table student add constraint primary key(sid);
(2).域完整的使用:
限制此单元格的数据正确,不对照此列的其他单元格比较
域代表当前的单元格(列)
数据类型:(1). 数值类型,(2).日期类型,(3)字符串类型;
(3).参照完整性
什么是参照完整性?
1.(1). 是指表与表之间的一种对应关系
(2).通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现
(3).有对应参照完整性的两张表格,再对他们进行数据插入,更新,删除的过程中,系统都会将被修改表格 与另外一张对应表格进行对照,从而阻止一些不正确的数据的操作
- 数据库的主键和外键类型一定要一致
- 两个表必须要是InnoDB引擎
- 设置参照完整性后,外键当中的内值,必须得是主键当中的内容
- 一个表设置当中的字段设置为主键,设置主键的为主表
- 创建表时,设置外键,设置外键的为子表
参照完整性添加外键
对已有的表添加外键:alter table 表名 add contraint fk_sc_st(起一个名字) froeign key(sid)(外键) references students(id)(主表里面的id);
在表里面添加外键:constraint fk_sc_st froeign key(sid) refereces students(id);
删除外键
alter table 表名 drop foreign key FK_CLSID;
如果不知道起的别名是什么用命令:show create table 表名;
添加外键
alter table student ADD constraint FK_CLSID foreign key(clsid) references classes(id);
多表查询
1.一对一:一夫一妻(开发中使用比较少)
2.一对多关系: 一个人可以拥有多辆汽车,要求查询某个人拥有的所有车辆,
3.多对多的关系:例如:学生选课,一个学生可以选修多门课程,每门课程可以供多个学生选择
再例如: 老师和学生的多对多关系(一个老师有多个学生,一个学生有多个老师)
合并结果集:(1).union:合并时去除重复记录.(2).union all :合并时不去除重复记录.
(1).例如:select * from 表1 union select * from 表2;
(2).例如:select * from 表1 unin all select * from 表2;
注意事项: 被合并的两个结果集:列数,列类型必须相同。
unsigned 无符号的整数