MySQL自学(更新中)

数据库基本知识

为什么要使用数据库

  1. 数据永久保存
  2. 使用SQL语句方便查询数据

什么是SQL?

结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。

作用:用于存取数据、查询、更新和管理关系数据库系统。

什么是MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。

数据库三大范式是什么

第一范式:列不可再分

  1. 每一列属性都是不可再分的属性值,确保每一列的原子性
  2. 两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据

第二范式:属性完全依赖于主键

在第一范式的基础上,要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主键

第三范式:属性不依赖于其他非主属性 属性直接依赖于外键

在第二范式的基础上,要求数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a–>b–>c 属性之间含有这样的关系,是不符合第三范式的。

比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)

院校地址和院校电话字段与主键不存在直接关系,与所在院校存在直接关系,所以不满足第三范式的要求。

总结

三大范式是基本的数据库设计理念,但实际生产中,更重要的是需求和性能。

MySQL权限表

MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。

  • user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
  • db权限表:记录各个帐号在各个数据库上的操作权限。
  • table_priv权限表:记录数据表级的操作权限。
  • columns_priv权限表:记录数据列级的操作权限。
  • procs_priv权限表:记录存储过程和存储函数相关的权限。
  • proxies_priv权限表:代理用户权限。

MySQL的binlog

MySQL 的二进制日志 binlog 可以说是 MySQL 最重要的日志,它记录了所有的 DDL 和 DML 语句(除了数据查询语句select、show等),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。binlog 的主要目的是复制和恢复。

Binlog日志的两个重要使用场景

  • MySQL主从复制:主节点将数据更改记录保存到binlog日志 -> 从库读取binlog日志保存到服务器中的relay log日志 -> 从库SQL thread读取relay log日志完成数据同步
  • 数据恢复:通过使用 mysqlbinlog工具来使恢复数据

Binlog日志格式

  • Statement

    记录每一次修改数据的SQL

    优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO, 提高了性能。

    缺点:因为记录的是SQL,为了保证SQL的执行结果一致,同时需要记录SQL运行时的上下文。并且一些特定的函数可能无法保证主从数据同步

  • Row

    不记录SQL语句上下文,只保存哪条记录被修改

    优点:binlog中仅记录哪一条数据被修改,所以解决一些特定情况,无法主从数据同步的问题

    缺点:会产生大量日志,占用空间

  • Mixed

    Statement与Row的结合版

    一般语句使用Statement方式记录,Statement无法完成主从复制操作的SQL使用Row方式记录

参考博客

涉及侵权,请私信。

MySQL数据库面试题(2020最新版)

数据库三大范式

MySQL Binlog 介绍

猜你喜欢

转载自blog.csdn.net/mabaohe110/article/details/115350008