Mysql基础知识

  • 1. MySql是什么
  • 2. 数据库设计的三大范式
    • 2.1. 第一范式
    • 2.2. 第二范式
    • 2.3. 第三范式
  • 3. Binlog的三种模式
    • 3.1 Statement模式(默认)
    • 3.2 Row模式
    • 3.3 Mixed模式
  • 4. Mysql的数据类型
  • 5. Mysql的存储引擎
  • 6. Mysql的索引
  • 7. Mysql的事务
  • 8. Sql的优化

1. MySql是什么

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

2. 数据库设计的三大范式

2.1. 第一范式

  每一列都不可再拆分。

  用户表:

id name phone
1 李四 123456
2 张三 17856756756

  用户表的设计就不符合第一范式,字段phone可拆分为手机号或者座机号。

2.2. 第二范式

  在第一范式的基础之上,非主键列完全依赖于主键列,而不能只依赖于主键列的一部分。

  订单信息表

订单编号 商品编号 商品名称 数量 单位 价格 客户 所属单位 座机号
001 1 挖掘机 1 1200000¥ 张三 上海玖智 020-12345670
002 2 冲击钻 8 230¥ 张三 上海玖智 020-1234567

  订单信息表设计就不符合第二范式,订单信息表的主键由订单编号及商品编号组成的联合主键,商品名称、数量、单位、价格只与商品编号有关,因此不符合第二范式。
  可以将订单信息表拆分为订单表和商品表,订单表中增加商品编号作为外键与商品表关联。

  商品表:

商品编号 商品名称 数量 单位
1 挖掘机 1
2 冲击钻 8

  订单表:

订单编号 客户 所属单位 座机号 商品编号
001 张三 上海玖智 020-12345670 1
002 张三 上海玖智 020-1234567 2

2.3. 第三范式

  在第二范式的基础之上,非主键只依赖于主键列,而不能依赖于其他非主键列。

  订单表

订单编号 订单项目 负责人 业务员 订单数量 客户编号 客户名称 客户座机号
001 挖掘机 刘明 020-12345670 1 1 李聪 021-1565448
002 张三 上海玖智 020-1234567 2 2 李新明 021-1565345

  定单表就不符合第三范式,客户名称、客户座机号不依赖于主键(订单编码)而是依赖于非主键(客户编号)。
  可以将订单表拆分为订单表与客户表,订单表中增加客户编号作为外键关联客户表。

  订单表

订单编号 订单项目 负责人 业务员 订单数量 客户编号
001 挖掘机 刘明 020-12345670 1 1
002 张三 上海玖智 020-1234567 2 2

  客户表

客户编号 客户名称 客户座机号
1 李聪 021-1565448
2 李新明 021-1565345

  在设计数据库时,要尽量遵守三范式,但是一般在设计时考虑到性能,及查询的方便,设计的表结构都不太符合三范式。

3. Binlog的三种模式

3.1 Statement模式(默认)

  每一条会修改数据的Sql语句都会被记录到binlog中。
  优点:
  
  缺点

3.2 Row模式

3.3 Mixed模式

4. Mysql的数据类型

5. Mysql的存储引擎

6. Mysql的索引

7. Mysql的事务

8. Sql的优化

  sql优化的主要思路就是查看sql是否使用了索引,避免全面扫描。可以使用explain关键字查看sql的执行过程。
  下面8条是sql优化思路:
  (1). 避免全表扫描,在where、order by、join on后面的字段增加索引。
  (2). 尽量避免使用!=或<>,可能会导致全表扫描。
  (3). 尽量避免使用in、not in,可能会导致全表扫描。
  (4). 尽量避免使用or,可能导致全表扫描。只有or的所有字段都加上了索引,才会使用索引。
  (5). 尽量避免使用is null,会导致全表扫描。
  (6). like (模糊查询)字段前不能加%,会导致全表扫描,比如 a like ‘%hyc’
  (7). where后面字段不能使用算术表达式或函数,“=”号的右边不能使用算术表达式或函数。
  (8). 不要使用count(*),会导致全表扫描。

MySql基础知识【一】相关推荐

  1. MySQL工作中的实际用_总结工作中经常用到的mysql基础知识

    总结工作中经常用到的mysql基础知识 发布时间:2020-06-08 11:27:30 来源:51CTO 阅读:217 作者:三月 本文主要给大家介绍工作中经常用到的mysql基础知识,文章内容都是 ...

  2. mysql基础知识(二)

    这一篇是第二部分,要查看第一部分,请查看这个链接 mysql基础知识(一) DQL语言 1.1简单的单表查询 查询表的通用格式:select [distinct] [*] [列名1,列名] from ...

  3. mysql基础知识(一)

    mysql是主流的关系型数据库管理系统(RDBMS---relation database management system),操作是需要用SQL(Structured Query Language ...

  4. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物

    MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...

  5. 【MySQL基础知识】查询、过滤数据关键字

    MySQL基础知识 一.检索数据 1. SELECT select是使用最广泛的检索数据的语句. 检索要查的表的所有列: select * from (表名称)... 检索要查的表的某一列或多列: s ...

  6. 快速学习mysql_快速学习MySQL基础知识

    这篇文章主要梳理了 SQL 的基础用法,会涉及到以下方面内容: SQL大小写的规范 数据库的类型以及适用场景 SELECT 的执行过程 WHERE 使用规范 MySQL 中常见函数 子查询分类 如何选 ...

  7. MySQL基础知识之增删改查

    MySQL基础知识之增删改查 MySQL基本语法: 1.创建库:create database 库名: 创建带编码格式的库:create database 库名 character set 编码格式: ...

  8. linux增删查改语句,mysql基础知识之增删查改使用介绍

    mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的 ...

  9. 2.MySQL 基础知识

    文章目录 MySQL 基础知识 知识点一 : MySQL命令行常用命令 知识点二 : 持久化 相关概念 知识点三 : 数据库 相关概念 知识点四 : DB 和 DBMS 关系图示 知识点五 : MyS ...

最新文章

  1. Nginx+Tomcat动静分离搭建
  2. 搜狗手机助手联合腾讯御安全 共建APP安全生态环境
  3. Apache启动报错
  4. python语言if语句-Python在if语句中等同于(logical-and)
  5. HP-Unix安装Memcache问题
  6. linux信号掩码线程,20.10 信号掩码(阻塞信号传递)
  7. c 语言名称的作用域,C 作用域规则
  8. Apache2.4开启php
  9. JavaScript push(),join() 函数
  10. C语言基于dag的基本块优化,基于dag的基本块优化参考.docx
  11. bat java 启动脚本_从bat脚本运行的Java应用程序上的Windows关闭挂钩
  12. 不一样的结果,不一样的人生
  13. Spring Boot基础学习笔记01:Spring Boot入门程序
  14. 多线程上下文切换优化与注意
  15. 详解Linux系统CPU的内部架构和工作原理
  16. 计算机主机与显示屏如何接线,主机跟显示器怎么连接
  17. 悲剧收场的梅耶尔给雅虎留下了哪些“遗产”?
  18. K-means最优K值计算(利用SSE)
  19. Java 17新特性,快到起飞?
  20. 小心!除了植入木马,你的充电宝可能还在窃听你,受害人遍布全国

热门文章

  1. 女人入洞房那天…………
  2. 国防科大提出基于可变形三维卷积(D3DNET)的视频超分辨
  3. 合伙人协议还可以开源,开眼了!
  4. ChatGPT 训练发图片
  5. 【超详细安全圈微信公众号】速度马!
  6. oracle-01441,ORA-01441:无法减小列长度,因为一些值过大
  7. Git查看某次提交的修改文件的简略信息
  8. BLE安全|低功耗蓝牙安全:方法、工具和开源协议栈
  9. G盘无法访问使用驱动器中的光盘之前需要将其格式化数据找回的方案
  10. dockerfile中运行 touch app.jar的作用