业务级别MySQL

1. 权限管理和备份

1. 用户管理

1. SQLyog可视化操作

2. SQL命令操作

用户表:mysql下的user表

-- 创建用户
-- create user 用户名 identified by '密码'
create user wang identified by '123456' -- 修改密码(修改当前用户密码)
-- set password = password('密码')
set password = password('111111') -- 修改密码(修改指定用户的密码)
-- set password for 用户名 = password('密码')
set password for wang = password('123456') -- 重命名
-- rename user 原来的用户名 to 新的用户名
rename user wang to wang_2 -- 用户授权:all privileges全部的权限,库,表
-- all privileges:除了给别人授权(grant),其他都能干
grant all privileges on *.* to wang_2 -- 查看权限
show grants for wang_2 -- 查看指定用户的权限
show grants for root@localhost -- 查看root用户的权限 -- root用户的权限:GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION -- 撤销权限
-- revoke 撤销哪些权限 on 在哪个库撤销 from 给谁撤销
revoke all privileges on *.* from wang_2 -- 删除用户
-- drop user 用户名
drop user wang_2

2. MySQL备份

为什么要备份:

  • 保证重要的数据不丢失
  • 数据转移

MySQL数据库备份的方式:

  1. 直接拷贝物理文件
  2. 在SQLyog这种可视化工具中手动导出,在想要导出的表或者库中,选择备份或导出
  3. 使用命令行导出:mysqldump
#导出表
# mysqldump -h主机 -u用户名 -p密码 数据库 表名 >物理磁盘位置/文件名
mysqldump -hlocalhost -uroot -p123456 school student >D:/a.sql # mysqldump -h主机 -u用户名 -p密码 数据库 表名1 表名2 ... >物理磁盘位置/文件名
mysqldump -hlocalhost -uroot -p123456 school student result >D:/a.sql # 导出数据库
# mysqldump -h主机 -u用户名 -p密码 数据库 >物理磁盘位置/文件名
mysqldump -hlocalhost -uroot -p123456 school >D:/a.sql # 导入
# 登陆的情况下,切换到指定的数据库
# source 备份文件
source d:/a.sql # 登陆
mysql -u用户名 -p密码

假设你要备份数据库,防止数据丢失

把整个数据库给别人,sql文件给别人即可

3. 规范数据库设计

1. 为什么需要设计

当数据库比较复杂的时候,我们就需要设计了

1. 糟糕的数据库设计:

  • 数据冗余,浪费空间
  • 数据库插入和删除都会麻烦、异常(屏蔽使用物理外键)
  • 程序的性能差

2. 良好的数据库设计

  • 节省内存空间
  • 保证数据库的完整性
  • 方便我们开发系统

3. 软件开发中,关于数据库的设计

  • 分析需求:分析业务的需要处理的数据库的需求
  • 概要设计:设计关系图 E-R 图

4. 设计数据库的步骤(个人博客)

  • 收集信息,分析需求

    • 用户表(用户登录注销,用户的个人信息,写博客,创建分类)

    • 分类表(文章分类,谁创建的)

    • 文章表(文章的信息)

    • 评论表

    • 友链表(友链信息)

    • 自定义表(系统信息,某个关键的字,或者一些主字段)

  • 标识实体(把需求落地到每个字段)

  • 标识实体之间的关系

    • 写博客:user --> blog
    • 创建分类:user --> category
    • 关注:user --> user
    • 友链:links
    • 评论:user --> user --> blog

2. 三大范式

1. 为什么需要数据规范化?

  • 信息重复
  • 更新异常
  • 插入异常
    • 无法正常显示信息
  • 删除异常
    • 丢失有效的信息

2. 第一范式(1NF)

原子性:保证每一列不可再分

3. 第二范式(2NF)

前提:满足第一范式

每张表只描述一件事情

4. 第三范式(3NF)

前提:满足第一范式和第二范式

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

5. 规范性和性能的问题

关联查询的表不得超过三张表

  • 考虑商业化的需求和目标(成本,用户体验) 数据库的性能更加重要
  • 在规范性能的问题的时候,需要适当的考虑一下规范性
  • 故意给某些表增加一些冗余的字段(从多表查询变为单表查询)
  • 故意增加一些计算列(从大数据量降低为小数据量的查询:索引)

业务级别MySQL的更多相关文章

  1. 1122从业务优化MYSQL

    http://blog.itpub.net/22664653/viewspace-2079576/ 开发反馈一个表的数据大小已经130G,对物理存储空间有影响,且不容易做数据库ddl变更.咨询了开发相 ...

  2. 数据库事务的四大特性以及事务的隔离级别(mysql)

      本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...

  3. 事务以及MySQL事务隔离级别+MySQL引擎的区别

    1.事务的基本要素:ACID 1.原子性(Atomicity): 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...

  4. 搭建备份到业务迁移---mysql

    mysql安装启动以及配置 使用到阿里云主机直接yum安装以及配置 [root@yunwei-169 mysql]# yum install mysql mysql-server [root@yunw ...

  5. Solon详解(六)- 定制业务级别的验证注解

    在业务的实现过程中,尤其是对外接口开发,我们需要对请求进行大量的验证并返回错误状态码和描述.lombok 框架有很多很赞的注解,但是人家是throw一个异常,这与有些需求不一定能匹配. 该文将基于So ...

  6. 简单3步快速生成千万级别mysql测试数据库,模拟电商数据

    https://blog.csdn.net/wuda0112/article/details/88387735 github项目地址:https://github.com/wuda0112/mysql ...

  7. mysql部分学习心得(入门级别)

    mysql中针对不同的数据选择对应的存储引擎 mysql中也会针对不同的数据处理选择对应的存储的引擎 mysql中也会针对不同的数据处理选择对应的存储的引擎 mysql中一些授权(grant)等的通常 ...

  8. 【不错】MySQL 事务隔离级别

    一.事务描述 1.事务的四个特性 ACID 1. A:原子性 = 一个事务或者都成功.或者都失败: 2. C:一致性 = 在整个事务的生命周期里面,查询到的数据是一致的: MVCC多版本并发控制:利用 ...

  9. Mysql 四种事务隔离级别

    一.前提 时过一年重新拾起博文记录,希望后面都能坚持下来. 接着之前MySql的学习,先记录下这篇. 以下都是基于mysql8 innodb存储引擎进行分析的. 二.事务的ACID特性 A(Atomi ...

随机推荐

  1. 【Spring Security】1.快速入门

    1 导入Spring Security的相关依赖 <dependency> <groupId>org.springframework.boot</groupId> ...

  2. CODING DevOps 微服务项目实战系列第一课,明天等你

    CODING DevOps 微服务项目实战系列第一课<DevOps 微服务项目实战:DevOps 初体验>将由 CODING DevOps 开发工程师 王宽老师 向大家介绍 DevOps ...

  3. [PyTorch 学习笔记] 1.3 张量操作与线性回归

    本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/linear_regression.py 张量的操作 拼 ...

  4. PythonCrashCourse 第五章习题

    5.1编写一系列条件测试;将每个测试以及你对其结果的预测和实际结果都打印出来.你编写的代码应类似于下面这样: car = 'subaru' print("Is car == 'subaru' ...

  5. maatwebsite lost precision when export long integer data

    Maatwebsite would lost precision when export long integer data, no matter string or int storaged in ...

  6. CentOS下删除物理磁盘,删除LVM

    1.删除 dmsetup remove LV_name 2.vgreduce VG_name --removemissing 3.vgremove VG_name 4.pvremove disk

  7. Python 源代码代码打包成 whl 文件

    1.检查 python setup.py check 2.打包 python setup.py sdist bdist_wheel || true

  8. python 报错错误集合——更新中

    1. #!/usr/bin/env python # -*- coding:utf-8 -*- 'one #报错 File "C:\Users\shuxiu\Desktop\test.py& ...

  9. 浅析 MVC

    MVC(Model–View–Controller) Model:数据模型  负责操作所有数据View:视图 负责所有UI界面Controller:控制器 负责其他 //数据放在m const m = ...

  10. 区块链入门到实战(28)之Solidity – 介绍

    Solidity语言是一种面向合约的高级编程语言,用于在以太坊区块链网络上实现智能合约.Solidity语言深受c++.Python和JavaScript的影响,针对以太坊(Ethereum)虚拟机( ...