MySQL 数据库知识总结

server/2024/10/18 16:55:03/

一、数据库概述

  1. 定义与特点:

    • MySQL 是一种开源的关系型数据库管理系统,以其高性能、可靠性和易用性而闻名。
    • 支持多用户、多线程操作,适用于各种规模的应用场景。
    • 提供丰富的数据类型和强大的查询语言(SQL)。
  2. 架构组成:

    • 连接层:负责与客户端建立连接,处理连接请求和认证。
    • 服务层:包括查询解析、优化器、缓存等组件,负责处理 SQL 查询语句。
    • 存储引擎层:不同的存储引擎提供不同的存储方式和功能特性,如 InnoDB、MyISAM 等。
    • 数据存储层:实际存储数据的地方,可以是磁盘文件或内存。

二、数据库安装与配置

  1. 安装方式:

    • 二进制安装包:从 MySQL 官方网站下载安装包,按照安装向导进行安装。
    • 源代码编译安装:适用于高级用户或需要定制安装的情况。
    • 容器化安装:使用 Docker 等容器技术快速部署 MySQL。
  2. 配置文件:

    • my.cnfmy.ini是 MySQL 的主要配置文件,可设置各种参数,如端口号、数据存储路径、缓存大小、字符集等。
    • 可以根据实际需求调整配置以优化性能和安全性。

三、数据库对象

  1. 表:

    • 结构定义:由列(字段)和行(记录)组成,每个字段有特定的数据类型和约束。
    • 常见数据类型:整数、浮点数、字符串、日期时间、枚举等。
    • 约束条件:主键约束、唯一约束、外键约束、非空约束等,用于保证数据的完整性和一致性。
  2. 索引:

    • 作用:提高查询性能,通过快速定位数据减少磁盘 I/O。
    • 类型:普通索引、唯一索引、主键索引、复合索引等。
    • 索引创建和管理:可以使用 SQL 语句创建、删除和修改索引。
  3. 视图:

    • 定义:虚拟表,基于一个或多个表的查询结果创建,不实际存储数据。
    • 用途:简化复杂查询、提供数据安全性、隐藏底层表结构的变化。
  4. 存储过程和函数:

    • 存储过程:一组预先编译好的 SQL 语句,可以接受参数并返回结果,用于执行复杂的业务逻辑。
    • 函数:类似于存储过程,但通常返回一个单一的值。
    • 优点:提高性能、可重用性、安全性。
  5. 触发器:

    • 定义:特殊的存储过程,在特定的表上的特定事件发生时自动执行。
    • 事件类型:INSERT、UPDATE、DELETE 等。
    • 用途:实现数据的完整性约束、审计日志、自动更新等功能。

四、SQL 语言基础

  1. 数据查询语言(DQL):

    • SELECT语句:用于从表中检索数据,可以选择特定的字段、进行条件过滤、排序、分组等操作。
    • 连接查询:包括内连接、外连接(左外连接、右外连接、全外连接),用于从多个表中获取数据。
    • 子查询:在一个查询中嵌套另一个查询,用于复杂的查询逻辑。
  2. 数据操作语言(DML):

    • INSERT语句:向表中插入新记录。
    • UPDATE语句:更新表中的现有记录。
    • DELETE语句:删除表中的记录。
  3. 数据定义语言(DDL):

    • CREATE语句:用于创建数据库、表、索引等对象。
    • ALTER语句:修改数据库或表的结构。
    • DROP语句:删除数据库、表、索引等对象。
  4. 数据控制语言(DCL):

    • GRANT语句:授予用户对数据库对象的访问权限。
    • REVOKE语句:撤销用户的访问权限。

五、数据库管理

  1. 连接管理:

    • 客户端连接:可以使用命令行客户端、图形化管理工具或编程语言中的数据库连接库连接到 MySQL。
    • 连接参数:包括主机名、端口号、用户名、密码等。
    • 连接池:为了提高性能和减少连接开销,可以使用连接池管理数据库连接。
  2. 数据库备份与恢复:

    • 备份类型:全量备份、增量备份。
    • 备份工具:mysqldump是常用的备份工具,可以将数据库导出为 SQL 脚本或其他格式。
    • 恢复方法:使用备份文件进行恢复,可以在数据库出现故障或数据丢失时恢复数据。
  3. 性能优化:

    • 查询优化:优化 SQL 查询语句,避免全表扫描、使用合适的索引、减少数据返回量等。
    • 索引优化:选择合适的索引类型、避免过多的索引、定期维护索引。
    • 配置优化:调整 MySQL 的配置参数,如缓存大小、连接数、线程池等。
    • 存储引擎优化:根据应用场景选择合适的存储引擎,如 InnoDB 适用于事务处理,MyISAM 适用于只读或插入密集型应用。
  4. 安全管理:

    • 用户管理:创建用户、设置密码、授予和撤销用户权限。
    • 访问控制:通过用户权限控制对数据库对象的访问,包括表、列、存储过程等。
    • 数据加密:对敏感数据进行加密存储,保护数据的安全性。
    • 安全审计:记录数据库的访问日志和操作日志,以便进行安全审计和故障排查。

六、数据库编程

  1. 使用编程语言连接 MySQL:

    • 大多数编程语言都提供了连接 MySQL 的库或驱动程序,如 Java 的 JDBC、Python 的mysql-connector-python等。
    • 通过这些库可以执行 SQL 查询、插入、更新和删除操作,处理结果集。
  2. 事务处理:

    • 事务是一组 SQL 语句的执行单元,具有原子性、一致性、隔离性和持久性(ACID)特性。
    • 在编程语言中,可以使用事务来保证数据的完整性,例如在进行多个数据库操作时,如果其中一个操作失败,可以回滚整个事务。
  3. 存储过程和函数的调用:

    • 可以在编程语言中调用 MySQL 中的存储过程和函数,传递参数并获取返回结果。
    • 这可以提高代码的可重用性和性能。

七、高级特性

  1. 存储引擎特性:

    • InnoDB:支持事务、行级锁、外键约束,适用于对数据完整性要求较高的应用。
    • MyISAM:不支持事务,但具有较高的查询性能,适用于只读或插入密集型应用。
    • Memory:将数据存储在内存中,速度非常快,但数据在数据库关闭时会丢失。
  2. 分区表:

    • 将大表分割成多个小表,提高查询性能和管理效率。
    • 可以根据不同的规则进行分区,如按范围、哈希、列表等。
  3. 复制和高可用:

    • 主从复制:将数据从一个 MySQL 实例复制到另一个实例,实现数据备份和负载均衡。
    • 高可用解决方案:如 MySQL Cluster、Galera Cluster 等,提供高可用性和故障转移功能。
  4. 数据库优化器:

    • 优化器的作用:分析 SQL 查询语句,选择最优的执行计划。
    • 了解优化器的工作原理可以帮助开发人员编写更高效的 SQL 查询。

http://www.ppmy.cn/server/104414.html

相关文章

【亲测有效】vue实现瀑布流效果,vue中使用vue-waterfall2来实现瀑布流效果

背景:使用了css,column原生写法和其他封装好的组件,要不就是排列的不整齐,要不就是无法实现滚动懒加载,最终找到最好的实现效果如下图 实现效果 操作流程 安装 使用npm安装vue-waterfall npm install vue-waterfall2…

rabbitMQ安装与简单demo

安装 mac安装有了brew很方便,windows的可参考 win10 安装rabbitMQ详细步骤 brew install rabbitmq启动 brew services start rabbitmq关闭 brew services stop rabbitmq出了问题之后可以重启一下 brew services restart rabbitmqcode 等有空更一下。

深入解析Smarty SSTI 利用

Smarty Smarty是基于PHP开发的,对于Smarty的SSTI 的利用与常见的flask的SSTI有很大区别,了解过Jinjia2模板注入的应该知道,Jinjia2是基于python的,而Smarty是基于PHP的,所以使用起来还是比较容易地,我们只需…

谷粒商城实战笔记-220~224-商城业务-微博认证服务-OAuth2.0

文章目录 一,220-商城业务-认证服务-OAuth2.0简介二,221-商城业务-认证服务-微博登录测试1,创建微博应用2,应用配置重定向url3,修改商城登录页面4,点击微博登录5,点击授权 三,222-商…

小程序-公告滚动

<view class"bg_box icon_nav_box" style"margin-top: -70rpx;position: relative;"><view class"flex flex_y_center"><view class"c_red f32" style"font-style: italic;flex-shrink:0 ;">最新公告<…

google transalte api的使用,V2服务账户方式(google-cloud-java)

Google Cloud Translation API 有几个不同的使用方式&#xff0c;其中之一是使用最新的 Google Cloud Client Library。这些库提供了简化的 API&#xff0c;使得与 Google Cloud 服务的交互变得更加容易。 对于gcp平台的创建方式&#xff0c;我记得得绑定真信用卡了&#xff0c…

Android笔试面试题AI答之Kotlin(17)

文章目录 80. 阐述 inline class内联类的开销&#xff1f;1. 编译时开销2. 运行时开销3. 可维护性和可读性结论 81. Kotlin是如何解决空指针(NPE)问题的 &#xff1f;82. Kotlin中的Compaion Object的作用 &#xff1f;主要用途如何定义注意事项 83. 详细描述 Koltin by lazy工…

《Web项目跨域请求后端Api设置Cookie失败问题?》

问题描述&#xff1a; 在web项目中跨域请求api时&#xff0c;api登录成功后需要向域名中设置cookie实现在两个域名下共享&#xff0c;但是登录接口返回成功&#xff0c;响应头中也有set-cookie&#xff0c;实际却无法设置到cookie中… web项目访问时的域名https://b.com/ api所…