mysql数据库CRUD-2

本文主要介绍mysql数据库的关联关系,范式级别,用户和权限等相关内容

关联关系:

​ 数据库中的表与表之间的关系有一对一,一对多,多对多三种。建立的方法是:

​ 在一对多中多的那一侧建立外键约束(alter table 表名 add constraint fk-表-外键 foreign key (外键) references 参考表 (其主键)),对应一种的主键即一对多的关联关系;

​ 在一多对的关系中再加上唯一性约束(alter table 多的表 add constraint uk-表-外键 unique(外键);)即建立了一对一的关联关系

​ 多对多的关系是需要一张中间表,中间表中的两个外键分别对应其他两张表的主键即可。

关系型数据库中数据完整性:

  1. 实体完整性:每条记录都是独一无二的(主键/唯一约束/唯一索引)
  2. 参照完整性:表中的数据要参照其他表已有的数据(外键)
  3. 域完整性:数据是有效的(数据类型/非空约束/默认值约束/检查约束)

表的范式级别

范式级别

第二范式级别的场景

不符合第二范式级别的场景

第二范式级别

使其符合第二范式的办法:

  1. 增加一个专门做主键的列,比如编号
  2. 拆分成两张表
第三范式级别

第三范式

第三范式键要直接依赖主键,间接依赖就不符合

​ 不满足的情况,出现大量的冗余,浪费空间

​ 拆分成两张表就符合第三范式,但查询时需要查询两张表,节约了空间浪费了时间

​ 所以某些时候我们为了节约时间会有意而为之,造成冗余而节约时间

授予和召回权限

#####创建用户并指定登录口令

1
create user xiaoming identified by '123456'

授予权限

表的所有权限

1
grant all on student.tb_student to xiaoming;

grant:授权
all:所有权限
on student.tb_student:哪个数据库的哪张表
to:给谁

单个数据库的所有权限

1
grant all on student.* to xiaoming;

所有数据库的所有权限

1
grant all on *.* to xiaoming;

还可以限定只能从哪台机器登录

1
grant all on *.* to 'xiaoming'@'10.7.152.49';

%:就是从那里登录都可以

#####也可以从可视化工具修改

部分权限

授予查询权限

1
grant select on student.tb_student to xiaoming;
召回权限
1
revoke all on student.tb_student from xiaoming;

revoke:召回权限

from:召回所有权限

删除用户
1
drop user xiaoming;

#####修改用户密码

1
alter user 'xiaoming'@'%' identified by '新密码';

密码的编码

密码编码