数据库基础(4)

版权声明:本文为博主原创文章,未经允许请勿转载,谢谢 https://blog.csdn.net/a972669015/article/details/89051969

一、约束(constraint)

数据库约束是为了保证数据的完整性(正确性)而实现的一套机制

  1. 创建表时添加
  2. 创建表后添加
  3. 删除       alter table 表名 drop constraint 约束名;

主键约束(PK)primary key唯一且非空

alter table Student  add constraint PK_Student primary key(sId) 
其中constraint 表示约束,PK_Student为约束名,primary key(sId)指定为哪一列添加主键约束,其中的sId表示添加约束的字段。

唯一约束(UQ)unique唯一,允许为空,即可以出现null值,但只能出现一次

alter table Student add constraint UQ_Student_sNo unique(sNo)  
unique(sNo)中的sNo表示添加unique约束的字段名

默认约束(DF)default默认值

alter table Student add constraint DF_Student_sSex default('男') for sSex  
为student表中的sSex字段设置默认值为‘男’,即当该字段为填入数据时,数据库将自行为其加上数据内容为‘男’的数据
其中DF_Student_sSex为默认约束名
注:以上创建的主键约束、唯一约束均存在与数据库的‘ 键’目录下,而默认约束在位于‘约束’目录下

检查约束(CK)check范围以及格式限制

alter table Student add constraint CK_Student_sSex check (sSex='男' or sSex='女')  
为student表中的sSex字段添加内容检查约束,只允许添加的内容为‘男’或者是‘女’

外键约束(FK)foreign key用来保证两张表之间数据一致性和完整性

alter table student add constraint FK_Student_sClassId foreign key (sClassId) references Class(cId)  

  • 添加约束后:外键的值可以为null,可以重复,但不能是另外一张表不存在的数据
  • 添加约束后,外键指向的表(dept)不能先删除,如果需要删除,要么删除外键约束,要么先删除存在外键的表(emp)
  • 添加约束后,外键指向的数据不能先删除,必须先删除子表中对应的数据
  • 外键的值通常指向另外一张表的主键
  • 使用外键必须两张表使用相同的引擎(innodb),myisam不支持外键
  • create table emp(字段名...,constraint 约束名 foreign key(字段名) references 关联表名(关联的字段名));

提到外键,不得不提的是级联删除以及级联修改
alter table Student  
add constraint FK_Student_sClassId foreign key (sClassId) references Class(cId)  
--级联删除  
on delete cascade   
--级联修改  
on update cascade  
即当删除主表中的数据时,子表中与其有关的数据都将被删除。因此,此外键的创建方法在使用时需谨慎考虑

二、自增 (auto_increment)

  1. 当自增字段的值为null时会自动赋值并自增
  2. 以表中曾出现的最大值+1
  3. delete删除数据自增数值不减
  4. delete删除所有数据,自增值在原来基础上继续+1
  5. truncate删除所有数据,自增值清零

三、注释 (comment)

  • 在创建表的时候可以通过comment对字段进行描述

四、事务

事务是数据库中执行sql语句的最小工作单元,在同一个事务中的sql语句要么同时成功,要么同时失败.

事务的ACID特性

  • Atomicity:原子性
  • Consistency:一致性
  • Isolation:隔离性
  • Durability:持久性

mysql中事务的指令(mysql默认sql语句是自动提交的)

  1. 查看自动提交的状态 show variables like '%autocommit%';
  2. 设置自动提交的状态 set autocommit=0/1;(0关1开)
  3. 提交 commit
  4. 回滚 rollback (执行rollback会回滚到上次提交的点或者关闭自动提交时的点)
  5. 保存回滚点 savepoint s1
  6. 回滚到某个点 rollback to s1

五、表的关联关系

一对一:

  • 有两张表A和B,A表中有一条数据对应B表中的一条数据称为一对一关系
  • 应用场景: 用户表和用户信息扩展表,商品表和商品信息扩展
  • 在从表中添加一个字段记录主表的id,主表中的id 称为主键, 从表中记录主表id的字段称为外键,主键用来表示数据的唯一性,外键用来和其它表建立关系.

一对多

  • AB两张表中A表中一条数据对应B表中多条数据,并且B表中一条数据对应A表中一条数据,两张表的关系称为一对多.
  • 应用场景:部门和员工,商品和分类等
  • 一对多的两张表,在多的表中添加一个字段记录另外一张表的id.

多对多

  • AB两张表,A表中的一条数据对应B表的多条数据,同时B表的一条数据对应A表的多条数据,这种关系称为多对多
  • 应用场景: 老师表和学生表,用户表和角色表
  • 需要创建一个关系表,在关系表中记录两个表的id.

自关联

  • 在一张表中有一个字段指向当前表的id,这种称为自关联
  • 应用场景:当保存的数据有层级关系并且不确定有多少层的时候使用自关联.

猜你喜欢

转载自blog.csdn.net/a972669015/article/details/89051969