MySQL-基础篇

什么是关系型数据库?

  1. 关系型数据库就是建立在关系模型上的数据库,表明了数据库中所存储的数据之间的联系(一对一,一对多,多对多)
  2. 关系型数据库中,我们的数据都被放在了各种中,表中的每一行都存放着一条数据
  3. 大部分关系型数据库都使用SQL来操作数据库中的数据,并且大部分都支持事务的四大特性(ACID)

有哪些常见的关系型数据库?

  1. MySQL,PostgreSQL,Oracle,SQL Server,SQLite

什么是SQL?

是一种结构化语言,专门和数据库打交道,目的是提供一种从数据库中读写数据的简单有效的方法

什么是MySQL

MySQL是一种关系型数据库,主要用于持久化存储我们系统中的一些数据

MySQL有什么优点

  1. 成熟稳定,功能完善
  2. 开源免费
  3. 社区,生态完善
  4. 开箱即用
  5. 兼容性好
  6. 事务支持优秀,InnoDB引擎默认使用的repeatable-read没有任何性能损失,并且可以解决幻读问题
  7. 支持分库分表,读写分离,高可用

MySQL字段类型

数值类型:整型,浮点型,定点型
字符串类型:
日期时间类型:
在这里插入图片描述

整数的unsign属性有什么用?

  1. 不允许负值的无符号整数,可以将整数上限提高一倍,因为不需要存储负值。
  2. 对于从0开始递增的ID列,使用unsign属性非常合适,因为不允许负值并且拥有更大的上限范围,提供了更多的ID可用

char和varchar的区别

  1. char是定长字符串,varchar是变长字符串
  2. char在存储时会在后面填充空格以达到指定的长度,在检索时会去掉后面的空格;varchar在检索时会多留出一个到两个字节存储字符串长度,检索时不需要处理
  3. char更适合存储长度较短或者长度都差不多的字符串,比如身份证号码,MD5加密后的密码,varchar更适合存储长度较长或者长度差异较大的字符串,比如用户昵称,文章标题等
  4. char(M),varchar(M),M都表示能够保存的字符长度最大值,无论是字母,数字,中文,每个都只占用一个字符

varchar(10)和varchar(100)的区别

  1. 分别表示最多能存储10个字符和最多能存储100个字符,varchar(100)可以满足更大范围的存储要求,业务可扩展性更强,varchar(10)存储超过10个字符时,就需要修改表结构
  2. 二者存储相同的字符串,所占用的磁盘空间是一样的
  3. varchar(100)会消耗更多的内存,因为varchar在进行内存操作时,通常会分配固定大小的内存块来保存值,即定义的字符长度

decimal和float/double的区别是什么?

decimal是定点数,可以存储精确的小数值,float/double是浮点数,只能存储近似的小数值

为什么不推荐使用text和blob

  1. text存储长文本数据,blob存储二进制大对象
  2. 两者的缺点
  • 不能有默认值
  • 在使用临时表时无法使用内存临时表,只能在磁盘上创建临时表
  • 检索效率较低
  • 不能直接创建索引,需要指定前缀长度
  • 可能需要消耗大量的网络和IO带宽
  • 可能会导致表上的DML操作变慢

datetime和timestamp区别

  1. datetime没有时区信息,timestamp和时区有关
  2. timestamp只用了四个字节存储,datetime用了八个字节存储,所以timestamp表示范围更小

null和""的区别

  1. null代表一个不确定的值,就算是两个null,他俩也不一定相等
  2. “”的长度是0,是不占用空间的,null需要占用空间
  3. null会影响聚合函数的结果。sum,avg,min,max等聚合函数会忽略null值,count(*)会统计所有的记录数,包括null值,count(列名)则只会统计所有非空值的个数
  4. 查询null值时只能用is null 或 is not null来查询,不能使用=,!= ,< > 之类的运算符,""则可以使用

为什么 MySQL 不建议使用 NULL 作为列默认值?

Boolean类型如何表示

tinyint(1)来表示,0代表false,1代表true

MySQL基础架构

  • 连接器
  • 查询缓存
  • 分析器
  • 优化器
  • 执行器
  • 插件式存储引擎

SQL语句在MySQL中的执行流程

MySQL存储引擎

MySQL核心在于存储引擎

MySQL支持哪些存储引擎?默认是哪个

默认是InnoDB引擎,也是唯一一个支持事务的存储引擎
show engines查看存储引擎
在这里插入图片描述

MySQL存储引擎架构了解吗

MySQL存储引擎是插件式架构,支持多种存储引擎,我们可以为不同的数据库表设置不同的存储引擎,MySQL存储引擎是基于表的,不是基于数据库的

MyISAM和InnoDB有什么区别

  1. 是否支持行级锁

InnoDB支持行级别的锁粒度,MyISAM不支持,只支持表级别的锁粒度

  1. 是否支持事务

InnoDB支持事务,实现了SQL标准定义了四个隔离级别,MyISAM不支持

  1. 是否支持外键

InnoDB支持外键,MyISAM不支持

  1. 是否支持数据库崩溃后的安全恢复

InnoDB支持,MyISAM不支持

  1. 是否支持MVCC

InnoDB支持,MyISAM不支持

  1. 索引实现不一样

虽然都是使用B+Tree作为索引结构,但是两者的实现方式不大一样

  1. 性能有差别

InnoDB比MyISAM性能更强大

MySQL索引

非常重要,去索引篇中看吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值