权限管理
-- 创建新用户
create user sinanshao identified by '123456';
-- 修改密码
alter user 'sinanshao'@'%' identified by '111111';
-- 改用户名
rename sinanshao to sinanshao2;
-- 删除用户
drop user sinanshao;
-- 用户授权,给该用户所有的权限
-- all privileges除了授权权限的所有权限
grant all privileges on *.* to sinanshao;
show grants for sinanshao; -- 查看权限
show grants for root@localhost;
-- 删除权限
revoke all privileges on *.* from sinanshao;
MySql备份
为什么要备份
MySql备份方式
- 直接拷贝物理文件
- 使用可视化工具
- 使用命令行(不是登录mysql)
mysqldump -hlocalhost -uroot -p123.com learning student > d:\a.sql //dump一张表
mysqldump -hlocalhost -uroot -p123.com learning student student2 > d:\b.sql //dump多张表
mysqldump -hlocalhost -uroot -p123.com learning > d:\b.sql //dump数据库
source d:\a.sql //登录mysql时导入
mysql -uroot -p123.com learning < b.sql //不登陆mysql时导入
规范数据库设计
为什么需要数据库设计
糟糕的数据库设计 :
- 数据冗余,存储空间浪费
- 数据更新和插入的异常
- 程序性能差
良好的数据库设计 :
- 节省数据的存储空间
- 能够保证数据的完整性
- 方便进行数据库应用系统的开发
设计数据库步骤
-
收集信息,与该系统有关人员进行交流 , 座谈 , 充分了解用户需求 , 理解数据库需要完成的任务. -
标识实体,标识数据库要管理的关键对象或实体,实体一般是名词 -
标识每个实体需要存储的详细信息[Attribute] -
标识实体之间的关系[Relationship]
个人博客数据库的设计测试
- 收集信息,分析需求
- 用户表
- 文章分类表
- 文章表
- 评论表
- 友情链接表
- 自定义表(一些不能单独成表的信息)key :value
-- 用户表
create table user(
id int(10) primary key comment '账户',
name varchar(50) comment '昵称',
password varchar(50) comment '密码',
sex varchar(2) comment '性别',
age int(3) comment'年龄',
sign varchar(200) comment '个性签名',
head_portrait varchar(100) comment '头像的链接'
);
-- 文章分类表
create table category(
id int(10) primary key comment '分类编号',
name varchar(10) comment '类型名称'
);
-- 文章表
create table article(
id int(10) primary key comment '文章编号',
name varchar(20) comment '文章题目',
category_id int(10) comment '文章所属类别id',
author_id int(10) comment '文章创建者id',
content text comment '文章内容',
create_time datetime comment '创建时间',
update_time datetime comment '最后一次修改时间'
);
-- 评论表
create table comment(
id int(20) comment '评论的id',
blog_id int(10) comment '所属文章的id',
created_by_user_id int(10) comment '评论发布用户的id',
content varchar(200) comment '评论内容',
father_id int(10) comment '父评论', -- 就是盖楼了,需要自连接来查询
create_time datetime comment '创建时间'
);
-- 链接表
create table link(
id int(10) comment '链接编号',
string_link varchar(200) comment '链接地址'
);
- 标识实体(落实到每个字段,上面已经实现)
- 标识实体之间的关系
- user --> blog
- blog --> category
- user --> user
数据库的三大范式
为什么需要数据规范化?
不合规范的表设计会导致的问题:
第一范式(1NF)
原子性(非事务中的原子性):保证每一列不可再分
在此表中,家庭信息和学校信息这两列可继续再分,不满足原子性,调整如下:
第二范式(2NF)
前提:满足第一范式
完全依赖(非部分依赖):每一张表只描述一件事情,也就是表中的每一列都要与主键相关(非联合主键的话一眼就可以看出来),而不能只与主键(针对联合主键)的某一部分相关
该表订单号和产品号组成联合主键,而订单时间和订单金额只与订单号相关,而与产品号无关,不满足完全依赖,调整如下,拆分为两张表:
第三范式(3NF)
前提:满足第一和第二范式
直接相关(非间接相关):表中的每一列数据都与主键直接相关,而不能间接相关
该表的班主任的性别和年龄与学生没有直接相关,调整如下,拆分为两张表:
规范性和性能问题
关联查询的表不得超过三张(阿里规范)
|