为什么要保证数据完整性?
为了防止垃圾数据的产生,从而影响数据库的执行效率,所以要保证数据库完整性。
数据库完整型的概念是什么?
可靠性+准确性 = 数据完整性。
数据完整性的分类
实体完整性:保证一行数据是有效的
域完整性:保证一列数据是有效的
引用完整性:保证引用的编号是有效的
用户自定义完整性:保证自定义规则
为什么要保证实体完整性?
保证每行所代表的实体能互相区别,不能存在两条一模一样的记录
什么是实体完整性?
表中的一行数据如果与它代表的实体体完全一致,则具备实体完整性。
实体完整性的实现方法:
主键约束:主键约束是表中的一到多个列,主键列不能为空,也不能重复,一个表中只能有一主键。(主键约束包括唯一约束和非空约束)
唯一约束(Unique):唯一是指给定列的所有值必须唯一,该列在表中的每一行的值必须唯一,他和主键约束的区别在于该列可以为空,
并且可以再一张表中给多个列设置唯一约束。
设置主键约束
设置主键约束可以再穿件表时指定
create table 表名(
列名 数据类型 primary key ——指定主键约束);
或者 create table 表名(
列名 数据类型,
primary key(列名));
域完整性是指定列的输入有效性
实现方法:非空约束 not null
默认约束 default
检查约束 check (mySQL不支持)
引用完整性——外键约束
外键与外键约束二者是不用的概念
外键是指从表的某列与主表某列存在依附关系
外键约束是指在关联主键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改
注意:没有建立外键约束不等于没有外键
Constraint foreign key (外键列名) reference 主表名(列名):映射到主键的列
自定义完整性
在mySQL数据库中,提供一种自动为类产生数值的机制,这种自动产生之的字段通常与主键的约束一起配合使用
mySQL使用 auto_increment 来实现列的自增长(只能用于主键上)
mySQL中,自增长序号是从1开始,每次递增1,也可以通过下面的代码设置起始序号
使用DML语句更改数据
添加数据--插入单行数据
想表中添加数据的SQL语句是insert
insert into 表名(列名)values (值)
在下面几种情况下可以省略某些列:(指定列的情况下)
1,列值有rdbms自动创建,如自增长。
2,创建列时设定了默认值,如果不提供值,则有rdbms自动创建
3,如果列被设置为允许空值,那么不输入值不影响数据库的完整性。
插入多行记录
insert into 表名(列名列表) select 列名 from 表名-- 添加表名1的列名值到表名
insert into 表名(列名列表) select * from 表名 -- 添加所有表2的值到表名
更改已有数据
update 表名 set 新列值列表 where 过滤条件
update 表名 set 新列值列表 列1 = 新值,列2 = 新值 where 过滤条件
删除已有数据
delete from 表名 where 过滤条件
使用truncate table 语句可以彻底删除表中数据。
truncate table 表名
2016.3.23(保证数据完整性,使用DML语句更改数据)
原文:http://www.cnblogs.com/CMCM/p/5313683.html