用户管理
--创建用户CREATE USER 用户名 IDENTIFIED BY ‘密码‘
CREATE USER zyw IDENTIFIED BY ‘123456‘;
--修改密码(当前用户)
SET PASSWORD = PASSWORD(‘123456‘);
--修改密码(指定用户)
SET PASSWORD FOR zyw = PASSWORD(‘6556456‘);
--重命名用户名
RENAME USER zyw TO zyw1
--用户授权 ALL PRIVILEGES 全部权限,库,表
--ALL PRIVILEGES 除了给别人授权,其他操作都能执行
GRANT ALL PRIVILEGES ON . TO zyw1
--查询权限
SHOW GRANTS FOR zyw1; --查看指定用户的权限
SHOW GRANTS FOR root@localhost;
--撤销权限 REVOKE 哪些权限,ON 在哪个库撤销(.:哪个库.哪个表),FROM 给谁撤销
REVOKE ALL PRIVILEGES ON . FROM zyw1;
--删除用户 DROP USER 用户名
DROP USER zyw1;
数据库备份
为什么要备份:
- 保证重要数据不丢失
- 数据转移
MySQL数据库备份的方式:
- 直接拷贝物理文件
- 使用命令行 mysqldump
(‘‘‘)
-- 导出(备份)
mysqldump -hlocalhost -uroot -p123456 testdemo student > D:/a.sql;
mysqldump -h主机名 -u用户名 -p密码 数据库名 [表名1 表名2 ...] > 存放地址/文件名.sql;
-- 导入(转移)
登录mysql情况:source a.sql;
source 备份文件;
未登录: mysql -u用户名 -p密码 库名 < 备份文件;
(‘‘‘)
规范化数据库设计
当数据库比较复杂时我们需要设计数据库
糟糕的数据库设计:
- 数据冗余,存储空间浪费
- 数据更新和插入异常
- 程序性能差
良好的数据库: - 节省数据的存储空间
- 能保证数据的完整性
- 方便进行数据库应用系统的开发
设计数据库步骤: - 收集信息:分析了解用户需求,理解数据库需要完成的任务
- 标识实体(Entiry):标识数据库需要的关键对象或实体,实体一般是名词
- 标识每个实体需要存储的详细信息(Attribute)
- 标识实体之间的关系(Relationship)
三大范式
不合规范的表设计会导致:
- 信息重复
- 更新异常
- 插入异常:无法正确表示信息
- 删除异常:丢失有效信息
第一范式(1st NF)
第一范式的目的是确保每列的原子性,如果每列数据都不可再分割,则满足第一范式
第二范式(2nd NF)
第二范式是在满足第一范式的前提下,要求每个表只能描述一件事件
第三范式(3rd NF)
第三范式是在满足第二范式的前提下,除主键外的其他列都不传递依赖于主键,则满足第三范式
第三范式需要保证数据表中的每一列数据都与主键直接相关,而不是间接相关
规范化和性能的关系
- 为满足某种商业目标,数据库的性能比规范化更重要
- 在数据库规范化的同时,需要综合考虑数据库的性能
- 通过在给定的表中添加额外的字段,以减少需要从搜索信息所需的时间
- 通过在给定表中插入计算列以方便查询