MySQL表约束和表关系

1.表约束

1.非空约束

数据库字段的某个值是否可以为空,NULL 字段值可以为空,NOT NULL 字段值不能为空。

当字段设置为非空时,插入值就必须要插入值,否则就会报错

 2.唯一约束

字段添加唯一约束之后,该字段的值不重复,也就是该字段的值在该表中唯一unique key

添加唯一约束

ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]]

UNIQUE [INDEX|KEY] [index_name] [index_type]

(index_col_name)

删除唯一约束

ALTERT TABLE tbl_name DROP {INDEX|KEY} index_name

 3.主键约束

主键保证记录的唯一性,主键自动为 NOT NULL, 每张数据表只能存在一个主键

添加主键约束

ALTER TABLE tbl_name ADD [CONSTRAINT[sysbol]]

PRIMARY KEY [index_type] (index_col_name)

删除主键约束

ALTER TABLE tbl_name DROP PRIMARY KEY

4. 自增约束

AUTO_INCREMENT 自动编号,且必须与主键组合使用,默认情况下,起始值为1,每次的增量为1

添加自增约束:

ALTER TABLE `user` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT;

删除自增约束:

ALTER TABLE `user` CHANGE `id` `id` INT NOT NULL ;

5.默认约束 

DEFAULT默认约束) 初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予默认值

 ALTER TABLE  tbl_name  ALTER  [COLUMN] col_name

 {SET DEFAULT literal | DROP DEFAULT}

 6.外键约束

字段添加唯一约束之后,该字段的值不重复,也就是该字段的值在该表中唯一unique key

删除父表元素时报错

DELETE FROM `department` WHERE `id`=1;

当存在外键关联时,默认是不允许删除的,这样来保证数据的完整性

 7.约束总结

本节所提到的内容都是约束,即对表数据的约束,

除了外键约束,其他的都是对表自身数据的约束,外键约束是对其他表的约束

2.表关系

1.一对多关系

一对多多对一是一个概念,指的是一个实体的某个数据与另外一个实体的多个数据有关联关系。

学校中一个学院可以有很多的学生,而一个学生只属于某一个学院(通常情况下),学院与学生之间的关系就是一对多的关系,通过外键关联来实现这种关系。

 2.一对一关系

一对一关系,指的是一个实体的某个数据与另外一个实体的一个数据有关联关系。

学生表中有学号、姓名、学院,但学生还有些比如电话,家庭住址等比较私密的信息,这些信息不会放在学生表当中,会新建一个学生的详细信息表来存放。这时的学生表和学生的详细信息表两者的关系就是一对一的关系,因为一个学生只有一条详细信息

3. 多对多关系

多对多关系,一个实体的数据对应另外一个实体的多个数据,另外实体的数据也同样对应当前实体的多个数据。

学生要报名选修课,一个学生可以报名多门课程,一个课程有很多的学生报名,那么学生表和课程表两者就形成了多对多关系。对于多对多关系,需要创建第三张关系表,关系表中通过外键加主键的形式实现这种关系。

这里需要注意的是,在多对多关系中,我们常用中间表来表示

 3.数据库三范式

1.第一范式-1NF

第一范式(1NF):符合1NF的关系中的每个属性都不可再分。1NF是所有关系型数据库的最基本要求

简单来说,就是不能出现多个表头

2.第二范式-2NF

第二范式(2NF):2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖

简单来说,只能描述一个对象(主键),其它列名(副键)与对象之间相互完全依赖

3.第三范式-3NF

第三范式(3NF):3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖

简单的说,所有的非主属性只在整个数据库里面出现一次,副键与副键之间,不能存在依赖关系

范式的作用是尽可能避免数据的冗余和插入/删除/更新的异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值