MySQL简述1

  • MySQL是什么
  • MySQL优点
  • MySQL的四种分类
  • 数据库的三大范式
  • 多表查询
    • 左连接
    • 右连接
    • 内连接
    • 交叉连接
      • 显式
      • 隐式
    • 子查询
  • 事物
    • 特性
      • 原子性
      • 一致性
      • 隔离性
      • 持久性
    • 并发问题
      • 脏读(读未提交)
      • 不可重复读(读已提交)
      • 幻读(可重复读)
  • MySQL索引

MySQL是什么

MySQL是一个关系型数据库管理系统

MySQL优点

免费开源:MySQL是一个开源的关系型数据库管理系统,使用和修改都不需要付费
性能高效:MySQL是一个高性能的数据库管理系统,支持大量的并发访问,适合在高并发的环境中使用
稳定可靠:MySQL是经过多年的发展和改进,稳定可靠,在大型网站和应用程序中广泛使用
可移植性好:MySQL可以在多种操作系统平台上运行,包括Windows,Linux,Mac OS 等
完善的管理工具:MySQL提供了丰富的管理工具,可以方便的进行数据库的维护和优化
功能丰富:MySQL提供了许多强大的功能,例如数据库触发器、存储过程、视图等
易于使用:MySQL的语法简单易懂,适合初学者学习

MySQL的四种分类

DDL:数据定义语言。(操作数据库、表)关键字:create、drop、alter
DML:数据操作语言(增删改表中的数据)关键字:insert、delect、update
DQL:数据查询语言(查询表中的数据)关键字:select、where
DCL:数据库操作控制语言(授权)

数据库的三大范式

第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子。(实体的属性即表中的列)
第二范式(2NF):满足第一范式;且不存在部分依赖,即非主属性必须完全依赖于主属性。(主属性即主键;完全依赖是针对于联合主键的情况,非主键列不能只依赖于主键的一部分)
第三范式(3NF):满足第二范式,且不存在依赖传递,即非主属性不能与非主属性之间有依赖关系,非主属性必须直接依赖于主属性,不能简介依赖主属性。(A -> B ,B -> C , A -> C)

比如姐姐结婚,来往的宾客就不符合第一范式,宾客还可以分为男方宾客和女方宾客。
主属性为新娘和新郎,他们为联合主键,然后其他的属性为伴娘伴郎团,这就不符合第二范式了,他们不能放在一个表中,因为伴娘不依赖于新郎,伴郎也不依赖于新娘,所以新娘和伴娘团为一个表、新郎和伴郎团为一个表,新娘和新郎为一个表。
表中有ID、新郎、新娘、新娘的父母,这不符合第三范式,虽然新郎也叫爸妈,但是这是新娘的父母,是因为结婚了所以才能叫爸妈,存在着传递依赖,所以新娘和新娘的父母应该单独提出来独立为表。

这里就有一个问题了,第二范式和第三范式很像,那么怎么区分他们呢,看主键,第二范式主要是针对联合主键的情况,如果只有一个主键那自然是满足第二范式的,那如果是联合主键呢,就看是否完全依赖主键了,就像伴娘团,跟你伴郎有鸡毛关系啊。

多表查询

左连接

左表+共有的部分

语法关键字为 LEFT JOIN

右连接

右表+共有的部分

语法关键字为 RIGHT JOIN

内连接

共有的部分

语法关键字为 INNER JOINJOIN

交叉连接

每条数据对应每条数据,返回两个表的乘积,就像2*3等于6一样,表一有2条数据,表二有3条数据,就返回6条数据

显式

语法关键字为CROSS JOIN

隐式

例如 select * from 表1,表2;

子查询

将一个查询语句嵌套在另一个查询语句中

事物

特性

原子性

要么同时成功要么同时失败。就像人,要么生要么死

一致性

表示数据库执行前后,数据库中的数据都是一致性的状态。就像人,你的状态是一致的,你还是你,你不会变成另外一个人

隔离性

多个事务之间相互隔离,互不干涉。人也是独立的一个个体

持久性

事务一旦提交,对数据库中的数据所做的修改就是永久的,人也是永久的,如果做了什么决定,我们也不能再让时间倒流,我们没有后悔的权力

并发问题

脏读(读未提交)

读到了已经修改但是没有提交的数据

不可重复读(读已提交)

事务A读取一个数据,但是事务B修改并提交了,事务A再次读取,数据不一样了

幻读(可重复读)

把数据删除了,但是读到了被删除的数据

幻读的问题可以用串行化解决

MySQL索引

  • 功能分类
    • 普通索引: 最基本的索引,它没有任何限制
    • 唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值组合必须唯一
    • 主键索引:一种特殊的唯一索引,不允许有空值。一般在建表时同时创建主键索引
    • 组合索引:顾名思义,就是将单列索引进行组合
    • 外键索引:只有InnoDB引擎支持外键索引,用来保证数据的一致性、完整性和实现级联操作
    • 全文索引:快速匹配全部文档的方式。InnoDB引擎5.6版本后才支持全文索引。MEMORY引擎不支持
  • 结构分类
    • B+Tree索引 :MySQL使用最频繁的一个索引数据结构,是InnoDB和MyISAM存储引擎默认的索引类型
    • Hash索引 : MySQL中Memory存储引擎默认支持的索引类型

你可能感兴趣的:(mysql,数据库)