零基础MySQL8.0(一) 简介、数据类型、数据库设计

参考

Mysql数据库基础知识整理
MySQL官方文档

基础

数据库:将数据按一定格式,进行存储和管理的仓库
数据库分类

  • 关系型:以二维表形式存储,支持事务,支持sql查询,包括MySQL、SQLServer、PostgreSQL、Oracle等
  • 非关系型(NoSQL):存储结构灵活,事务支持较弱,并发性能高,大多不支持sql,包括MongoDB(文档存储)、Redis(键值存储)、Apache Cassandra(列存储)和 Neo4j(图数据库)
    数据库管理系统(DBMS):用于管理和操作0到多个数据库的软件
    数据表:二维表,数据库的存储形式,一个数据库有0到多张表
    字段 / 属性:数据表的“列名”,键值对的“键”
    记录:表中数据的存储形式,也就是表格的“一行”,一条数据也就是一条记录也就是“一行内容”
    主键:特殊的属性,每个表中只有一个主键,唯一地标识出每一条记录。主键可以是单个属性,也可以是多个属性的组合。
    外键:特殊的属性,定义两表间的关联关系
    索引:对数据库表中一列或多列的值进行排序的一种结构,可以提高查找效率。
    事务:定义一个不可分割的操作,有acid特性
  • 原子性:要么全成功要么全失败
  • 一致性:执行前后数据一致
  • 隔离性:事务间相互隔离
  • 持久性:事务提交后被持久化到数据库

MySQL是什么?为什么要学?

  1. MySQL 是一个数据库管理系统
  2. MySQL 数据库是关系型数据库
  3. MySQL 软件使用 GPL 许可开源(个人社区版免费,商业版收费)
  4. MySQL 数据库服务器非常快速、可靠、可扩展且易于使用
  5. MySQL 服务器工作在客户端/服务器或嵌入式系统中(跨平台)
  6. 有大量贡献的 MySQL 软件可供使用(生态常用)

如此,不多说直接进入正题

MySQL学习

数据类型

整型

在这里插入图片描述

字符串类型

Text,MediumText,LongText 64KB,16MB,4GB
在这里插入图片描述

浮点型

在这里插入图片描述

时间类型

  如下表中之所以字节数不固定,是因为支持0-6位的微秒,每2位占1字节。
在这里插入图片描述

数据库逻辑设计

  根据所需实现的业务功能,去对数据库进行设计,包括数据库中有什么表,表中有什么字段,字段是什么类型,表之间的关系等等。

范式

  1. 表中字段不可再分
  2. 表中存在业务主键,其他属性依赖于这个业务主键
  3. 表中非主键列不能相互依赖
  4. ……

反范式化

  指不完全满足数据库设计的各个范式,避免过多的表关联,导致性能下降。本质是允许一定的数据冗余,以空间换时间。

数据库物理设计

字段类型选择

  • 优先选择符合需求的最小数据类型
    • int不够而unsigned int足够时,应选择unsigned int而不是bigint
    • ip可以用inet_atoninet_ntoa函数实现和数字的互转,所以常用unsigned int存储
  • 谨慎使用text
    • 原因:
      • 很多时候varchar足够
      • mysql的内存临时表不支持text这样占用比较多的,会用磁盘临时表,性能较差
      • 还要二次查询
    • 使用:建议存新表,不要select *,只查要查的列
  • 谨慎使用enum(update不能,只能alter,短暂阻塞在并发比较大时有风险)
  • 财务相关数据存储使用decimal类型

数据库对象命名规则

  • 小写字母加下划线
  • 不要用mysql保留关键字 见MySQL关键字
  • 见名知义
  • 尽量小于32字符
  • 表名尽量包含数据库名称
  • 临时库表尽量以tmp为前缀,日期作后缀
  • 备份库表同理bak
  • 所有存储相同数据的字段名和数据类型一致

InnoDB

  MySQL5.7之后默认的存储引擎,特性如下:(除了5,也是和myisam引擎的区别)

  1. 支持事务
  2. 数据按主键聚集存储(叶子结点存的是主键而不是数据位置,主键长度直接关系到查询性能)
  3. 支持行级锁与MVCC(多版本并发控制)
  4. 支持Btree和自适应Hash索引
  5. 支持全文和空间索引(5.6&5.7之后)

更多见第二篇,零基础MySQL8.0(二)命名规则、sql分类和部分示例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值