本文主要介绍mysql数据库的关联关系,范式级别,用户和权限等相关内容
关联关系:
数据库中的表与表之间的关系有一对一,一对多,多对多三种。建立的方法是:
在一对多中多的那一侧建立外键约束(alter table 表名 add constraint fk-表-外键 foreign key (外键) references 参考表 (其主键)),对应一种的主键即一对多的关联关系;
在一多对的关系中再加上唯一性约束(alter table 多的表 add constraint uk-表-外键 unique(外键);)即建立了一对一的关联关系
多对多的关系是需要一张中间表,中间表中的两个外键分别对应其他两张表的主键即可。
关系型数据库中数据完整性:
- 实体完整性:每条记录都是独一无二的(主键/唯一约束/唯一索引)
- 参照完整性:表中的数据要参照其他表已有的数据(外键)
- 域完整性:数据是有效的(数据类型/非空约束/默认值约束/检查约束)
表的范式级别
第二范式级别的场景
不符合第二范式级别的场景
使其符合第二范式的办法:
- 增加一个专门做主键的列,比如编号
- 拆分成两张表
第三范式级别
第三范式键要直接依赖主键,间接依赖就不符合
不满足的情况,出现大量的冗余,浪费空间
拆分成两张表就符合第三范式,但查询时需要查询两张表,节约了空间浪费了时间
所以某些时候我们为了节约时间会有意而为之,造成冗余而节约时间
授予和召回权限
#####创建用户并指定登录口令
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 '新密码'; |
密码的编码