数据完整性(MySQL)

作用:保证用户输入的数据保存到数据库中是正确的。

确保数据的完整性 = 在创建表时给表中添加约束

完整性的分类:

  • 实体完整性:

  • 域完整性:

  • 引用完整性: 学生表(学号 ,姓名) 成绩表( 学号,科目,成绩)

1.实体完整性约束

实体:即表中的一行(一条记录)代表一个实体(entity)

实体完整性的作用:标识每一行数据不重复。

约束类型:

(1)主键约束 primary key

注意:每个表只有一个主键,主键数据唯一,并且不能为null

第一种添加方式:

第二种添加方式:这种方式可以添加联合主键

使用联合主键时,只要保证两条记录的sid和sname其中不一样就可插入。

第三种添加方式:在定义好的表上添加主键,这样只能在没有数据时添加,如果表中已经有数据,如果为主键的该列元素有重复值,就不能添加成功。

(2)唯一约束 unique

特点:数据不能重复。可以为null

如果插入的两行数据的cardId相同,则第二条记录不能插入。但是可以让cardid为空值,并且可以重复插入空值

(3)自动增长列 anto_increment

设置了开始值就从设定值开始自增,如果中间插入数据时你给了Id,并且没有Id值大于该自增到的值,下次插入无Id的记录时,会从你上次给定的Id(大值)继续自增。

2.域完整性

数据类型:(重点掌握)

数值类型:如果想得到较精确的小数,应该用DECIMAL(M,D),DOUBLE(M,D)得到是近似值

INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
DOUBLE(M,D)8个字节,M表示长度,D表示小数位数同上,受M和D的约束 DUBLE(5,2) -999.99-999.99同上,受M和D的约束双精度浮点数值
DECIMAL(M,D)对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值,M最大值为65依赖于M和D的值,M最大值为65小数值

日期类型:

DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值

字符创类型:

CHAR0-255字符定长字符串 char(10) 10个字符
VARCHAR0-65535 字节变长字符串 varchar(10) 10个字符
BLOB(binary large object)0-65 535字节二进制形式的长文本数据
TEXT0-65 535字节长文本数据

char 定长,最大可以写255,而varchar为变长,最大为64k,但是不能写64k,要小于这个数。

 

非空约束,not null

默认值约束

直接写default就是默认。

3.引用完整性约束

外键约束 foreign key

也可以给该外键加个名字:constraint fk_socre_student foreign key(sid) references student(id);

创建时就添加外键,如果建好表之后再添加外键,可能会出现问题

注意:为了软件的性能,可能不会给这些表格加上约束,主键,外键等,因为这些会降低软件的性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值