首页 > 数据库 >MySQL 操作文档

MySQL 操作文档

时间:2024-11-26 17:56:38浏览次数:5  
标签:users mysql 查询 文档 MySQL 操作 id log

一、初级 MySQL 操作

初级 MySQL 操作主要集中在基础数据库管理和常用 SQL 语句上,适合新手用户快速上手。

1.1 MySQL 安装与部署

安装 MySQL(以 Ubuntu 为例)

sudo apt update
sudo apt install mysql-server

安装完成后,可以通过以下命令检查 MySQL 是否启动:

sudo systemctl status mysql

启动 MySQL 服务:

sudo systemctl start mysql

1.2 登录 MySQL

使用命令行登录 MySQL 数据库:

mysql -u root -p

1.3 基本的 SQL 操作

  • 创建数据库

    CREATE DATABASE my_database;
    
  • 选择数据库

    USE my_database;
    
  • 创建数据表

    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100),
        email VARCHAR(100)
    );
    
  • 插入数据

    INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
    
  • 查询数据

    SELECT * FROM users;
    
  • 更新数据

    UPDATE users SET email = 'alice_new@example.com' WHERE id = 1;
    
  • 删除数据

    DELETE FROM users WHERE id = 1;
    

1.4 数据库备份与恢复

  • 备份数据库

    mysqldump -u root -p my_database > backup.sql
    
  • 恢复数据库

    mysql -u root -p my_database < backup.sql
    

二、中级 MySQL 操作

中级 MySQL 操作主要包括数据库管理、索引优化、事务控制以及多表操作等。

2.1 数据库设计与管理

2.1.1 外键约束

在表中定义外键,用于保持数据一致性。

CREATE TABLE orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    amount DECIMAL(10, 2),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

2.1.2 多表连接查询(JOIN)

通过 JOIN 来执行多表查询。

  • 内连接(INNER JOIN)

    SELECT orders.order_id, users.name 
    FROM orders
    INNER JOIN users ON orders.user_id = users.id;
    
  • 左连接(LEFT JOIN)

    SELECT orders.order_id, users.name 
    FROM orders
    LEFT JOIN users ON orders.user_id = users.id;
    
  • 右连接(RIGHT JOIN)

    SELECT orders.order_id, users.name 
    FROM orders
    RIGHT JOIN users ON orders.user_id = users.id;
    

2.1.3 索引的使用

索引可以提高查询效率,但也会增加插入和更新的成本。

  • 创建索引

    CREATE INDEX idx_email ON users (email);
    
  • 删除索引

    DROP INDEX idx_email ON users;
    
  • 查看索引

    SHOW INDEX FROM users;
    

2.1.4 事务控制

  • 开始事务

    START TRANSACTION;
    
  • 提交事务

    COMMIT;
    
  • 回滚事务

    ROLLBACK;
    

2.2 中级性能优化

2.2.1 查询优化

  • 使用 EXPLAIN 分析查询

    EXPLAIN SELECT * FROM users WHERE email = 'alice@example.com';
    
  • 优化查询

    1. 避免 SELECT *,明确指定需要的列。
    2. 为常用的查询字段添加索引。

2.2.2 缓存查询结果

MySQL 提供了查询缓存机制,开启查询缓存可以加速重复查询的性能,但需要根据具体场景评估是否使用。

  • 启用查询缓存

    SET GLOBAL query_cache_size = 1048576;
    
  • 查看查询缓存状态

    SHOW STATUS LIKE 'Qcache%';
    

2.2.3 慢查询日志

启用慢查询日志可以帮助找到性能瓶颈。

  • 启用慢查询日志
    my.cnf 配置文件中设置:

    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/mysql-slow.log
    long_query_time = 2  # 设置记录慢查询的时间阈值,单位为秒
    
  • 查看慢查询日志
    使用 mysqldumpslow 命令分析慢查询日志:

    mysqldumpslow -t 10 /var/log/mysql/mysql-slow.log
    

三、高级 MySQL 操作

高级 MySQL 操作涵盖了高可用性、分布式架构、优化大规模数据处理等内容。

3.1 高可用性架构

3.1.1 MySQL 主从复制

MySQL 主从复制允许一个主库(Master)和多个从库(Slave)进行数据同步,常用于高可用性和负载均衡。

  • 配置主库
    在主库 my.cnf 配置文件中:

    [mysqld]
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    
  • 配置从库
    在从库 my.cnf 配置文件中:

    [mysqld]
    server-id = 2
    relay_log = /var/log/mysql/mysql-relay-bin.log
    
  • 在主库上创建复制账号

    CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
    
  • 启动复制
    在从库执行:

    CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=  107;
    START SLAVE;
    

3.1.2 MySQL 集群

MySQL 集群是一种基于多节点的分布式架构,通常使用 MySQL NDB 集群或者第三方方案(如 Vitess)进行部署。

  • 部署 MySQL NDB 集群:需安装并配置 NDB 存储引擎和集群管理器。

3.2 数据库优化

3.2.1 数据库拆分与分区

  • 水平分区:根据某些字段值(如时间)将数据分布到不同的物理表中。

    CREATE TABLE orders_2023 PARTITION BY RANGE (YEAR(order_date)) (
        PARTITION p0 VALUES LESS THAN (2023),
        PARTITION p1 VALUES LESS THAN (2024)
    );
    
  • 垂直分区:根据字段的不同用途将不同的数据存储在不同的表中。

3.2.2 大数据处理优化

  • 批量插入数据:避免一次性插入大量单行数据,采用批量插入。

    INSERT INTO table (col1, col2) VALUES (value1, value2), (value3, value4), ...;
    
  • 分批处理:使用分页查询分批加载大数据量。

3.3 MySQL 安全性优化

  • 加密传输:启用 SSL/TLS 加密保护客户端和服务器之间的通信。

    [mysqld]
    ssl-ca=/path/to/ca-cert.pem
    ssl-cert=/path/to/server-cert.pem
    ssl-key=/path/to/server-key.pem
    
  • 限制访问:通过防火墙和 MySQL 的访问控制限制只有授权的 IP 地址可以访问 MySQL 服务。

  • 强密码策略:使用 validate_password 插件强制执行复杂的密码策略。

    INSTALL PLUGIN validate_password SONAME 'validate_password.so';
    SET GLOBAL validate_password.policy = STRONG;
    

总结

本文概述了 MySQL 从初级到高级的操作方法,包括数据库管理、查询优化、事务控制、备份恢复、高可用性架构、性能优化等方面。无论是小型项目还是大规模分布式系统,都可以根据需求选择合

标签:users,mysql,查询,文档,MySQL,操作,id,log
From: https://www.cnblogs.com/daikaiqiang/p/18570689

相关文章

  • 11数据透视表操作举例
    原始数据假设有如下的原始数据:姓名性别年龄归属团队张三1男30安全领域-团队张三2女27测试领域-团队张三3男33安全领域-团队张三4男38智能应用领域-团队张三5男43测试领域-团队张三6男42智能应用领域-团队张三7男25测试领域-团......
  • 如何使用 Node.js 和 MySQL 快速搭建简单的增删查改 API
    摘要通过本文,你将学会如何使用Node.js和MySQL搭建一个简单的RESTfulAPI,包括创建数据库、创建表、插入数据、查询数据、更新数据以及删除数据的完整操作示例。正文在现代Web开发中,Node.js与MySQL的组合非常流行,它们的高性能和易用性让开发者可以快速搭建数据驱动的......
  • MySQL 用户与权限管理
    MySQL是一种广泛使用的关系型数据库管理系统,支持多用户访问和权限控制。在多用户环境下,数据库安全至关重要,而用户和权限管理是数据库管理中最基础也是最重要的一部分。通过合理地创建和管理用户、分配和管理权限、使用角色权限,可以有效地保护数据库,确保数据的安全性和完整......
  • 在Workbench中利用External Data组件施加随位置变化压力的操作方法与验证
    本文摘要(由AI生成):本文介绍了在ANSYSWorkbench中利用ExternalData组件在模型上施加随位置变化的压力载荷的方法,首先通过函数方式加载并进行计算,随后通过ExternalData导入外部数据进行加载,并与函数直接加载的结果进行比较。通过在Workbench的ProjectSchematic窗口添加一个Ex......
  • mysql基础用法
    1、数据库操作、表操作#显示所有数据库showdatabases#创建数据库:createdatabase数据库名CREATEdatabasestudy_mysql#使用数据库usestudy_mysql#创建表:createtable表名()comment注释CREATETABLEcreate_table_test(#字段名字段类型comment注释......
  • Django框架--ORM操作
    1.查询操作1.1filter()用法:用于过滤查询结果,返回符合条件的记录。支持链式调用。示例:queryset=MyModel.objects.filter(field=value)SQL查询示例:SELECT*FROMMyModelWHEREfield=value;性能特点:根据过滤条件生成SQL查询。支持复杂查询条件,性能取决于查询条件和索引。1......
  • php毕业设计购物商城在线购物系统日用品购物商城手工艺系统日用品系统手工艺网站php+m
    一,功能介绍        前台主要包括网站首页、商品推荐、最新商品、新闻咨询、商品分类、商品资讯、评论、登录、注册、加入购物车、结算、个人中心等功能模块商品推荐、最新商品在商品推荐、最新商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等操作,购物......
  • 操作系统实验 4 文件系统设计
    一、实验目的通过一个简单文件系统的设计,加深理解文件系统的内部功能及内部实现。二、主要仪器设备、试剂或材料VMware虚拟机三、实验内容为Linux系统设计一个简单的二级文件系统。要求做到以下几点:(1)可以实现下列几条命令。mkdir创建目录rmdir删除目录c......
  • 对数组操作的相关js函数
    汇总一下js中,数组的相关函数(如有问题,请在评论区q我哦!感谢!)1.添加和删除数组元素//1.push在数组末尾添加一个或多个元素,并返回新的长度(改变原数组)letarray=[1,2,3];array.push(4);console.log(array);//输出[1,2,3,4]//2.pop移除数组末尾的一个元素,并返......
  • office 操作技巧笔记
    Excel1、批量调整时间格式需求:把 yyyy-MM-ddHH:mm:ss格式的时间批量调整成 yyyy/MM/dd格式 选中要调整的全部数据,菜单栏进入“数据”-“分列”-“智能分列” 向导步骤一直接下一步 向导步骤二选中第一列,设置为日期,选中第二列,选择“忽略此列”,点击完成即可 2、......