MySql基础知识【一】
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基础知识【一】相关推荐
- MySQL工作中的实际用_总结工作中经常用到的mysql基础知识
总结工作中经常用到的mysql基础知识 发布时间:2020-06-08 11:27:30 来源:51CTO 阅读:217 作者:三月 本文主要给大家介绍工作中经常用到的mysql基础知识,文章内容都是 ...
- mysql基础知识(二)
这一篇是第二部分,要查看第一部分,请查看这个链接 mysql基础知识(一) DQL语言 1.1简单的单表查询 查询表的通用格式:select [distinct] [*] [列名1,列名] from ...
- mysql基础知识(一)
mysql是主流的关系型数据库管理系统(RDBMS---relation database management system),操作是需要用SQL(Structured Query Language ...
- MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物
MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...
- 【MySQL基础知识】查询、过滤数据关键字
MySQL基础知识 一.检索数据 1. SELECT select是使用最广泛的检索数据的语句. 检索要查的表的所有列: select * from (表名称)... 检索要查的表的某一列或多列: s ...
- 快速学习mysql_快速学习MySQL基础知识
这篇文章主要梳理了 SQL 的基础用法,会涉及到以下方面内容: SQL大小写的规范 数据库的类型以及适用场景 SELECT 的执行过程 WHERE 使用规范 MySQL 中常见函数 子查询分类 如何选 ...
- MySQL基础知识之增删改查
MySQL基础知识之增删改查 MySQL基本语法: 1.创建库:create database 库名: 创建带编码格式的库:create database 库名 character set 编码格式: ...
- linux增删查改语句,mysql基础知识之增删查改使用介绍
mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的 ...
- 2.MySQL 基础知识
文章目录 MySQL 基础知识 知识点一 : MySQL命令行常用命令 知识点二 : 持久化 相关概念 知识点三 : 数据库 相关概念 知识点四 : DB 和 DBMS 关系图示 知识点五 : MyS ...
最新文章
- Nginx+Tomcat动静分离搭建
- 搜狗手机助手联合腾讯御安全 共建APP安全生态环境
- Apache启动报错
- python语言if语句-Python在if语句中等同于(logical-and)
- HP-Unix安装Memcache问题
- linux信号掩码线程,20.10 信号掩码(阻塞信号传递)
- c 语言名称的作用域,C 作用域规则
- Apache2.4开启php
- JavaScript push(),join() 函数
- C语言基于dag的基本块优化,基于dag的基本块优化参考.docx
- bat java 启动脚本_从bat脚本运行的Java应用程序上的Windows关闭挂钩
- 不一样的结果,不一样的人生
- Spring Boot基础学习笔记01:Spring Boot入门程序
- 多线程上下文切换优化与注意
- 详解Linux系统CPU的内部架构和工作原理
- 计算机主机与显示屏如何接线,主机跟显示器怎么连接
- 悲剧收场的梅耶尔给雅虎留下了哪些“遗产”?
- K-means最优K值计算(利用SSE)
- Java 17新特性,快到起飞?
- 小心!除了植入木马,你的充电宝可能还在窃听你,受害人遍布全国