今日内容:03 Mysql之数据完整性约束使用

今日内容:03 Mysql之数据完整性约束使用
1- 数据完整性约束
作用
数据的准确性和可靠性
分类
实体完整性、域完整性、引用完整性

2- 实体完整性
实体:记录(表中每一行的内容就是一个记录)
实体完整性约束保证数据记录之间是准确的(能够唯一标识一个实体)
实体完整性包括主键约束、唯一约束、主键自增三种

2.1 主键约束
	特点:唯一的,不能为空 ,一个表中只允许有一个主键约束
	关键字:`primary key`

	1-创建表的时候直接添加主键
CREATE TABLE student(
	sid int PRIMARY key,  -- id 是student的唯一主键 
	sname VARCHAR(20),
	adress VARCHAR(30)
	)
	2-表已经创建好,再去添加主键(表中设置主键约束的字段不能有重复的数据,为空的数据)
		添加约束语法:alter table 表名 add constraint 约束名 primary key(字段名);
		约束名:PK_字段
		删除约束语法:alter table 表名 drop primary key;

2.2 唯一约束
	特点:不能重复,可以为空,一个表中可以添加多个唯一约束
	关键字:unique
	
	1-创建表的时候直接添加唯一约束
	
	2-表已经创建好,再去添加唯一约束(表中设置唯一约束的字段不能有重复的数据)
		添加约束语法:alter table 表名 add constraint 约束名 unique(字段名);
		约束名:UQ_字段
		删除约束语法:alter table 表名 drop key 约束名;
		
2.3 主键自增
	特点:从1开始,每次自身加1(在oracle中不能使用)
	关键字: auto_increment
	只能在创建表的时候添加主键自增的约束,而且必须是主键才可以添加,必须是int类型

3- 域完整性
域:字段
域完整性约束保证字段的数据准确的
域完整性包括类型约束(int,varchar,date)、非空约束、默认值

3.1 非空约束
	特点:字段不允许为空
	关键字:not null
	
3.2 默认值
	特点:设置默认的值
	关键字: default
CREATE TABLE student(
		sid int  PRIMARY key  auto_increment,  -- id 是student的唯一主键 
		sname VARCHAR(20) UNIQUE,
		adress VARCHAR(30) not null,
		qq VARCHAR(15) UNIQUE,
		`status` int	DEFAULT 1		-- 1代表优秀,2,良好 3,一般
		)

编码问题:右键点击设计表,选择字段,
字符集选择utf8,
排序规则utf8_general_ci

4- 引用完整性
4.1 外键
一张表中通用列的取值必须参考另外一张表的主键

	特点:设置外键的字段的取值只能参考另一张表中同一个字段的值
	关键字: foreign key
	
	添加外键约束的语法:alter table 表名1 add constraint 约束名 foreign key(字段名) references 表名2(字段名)
	删除外键的语法:alter table 表名 drop froeign key 约束名;

注意:
	学生表的classid 添加外键约束 班级表(父表) 班级id
		父表不能删除(学生表可以直接删除)
		添加外键约束的俩个字段的类型必须一样
		添加外键约束(父表的字段)一定要是主键或是唯一约束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值