MySQL必会核心问题50讲|完结
来百度APP畅享高清图片
MySQL必会核心技能是什么
MySQL 必会核心技能
掌握MySQL的核心技能对于数据库管理员(DBA)、开发人员和数据分析师来说至关重要。以下是MySQL的一些必会核心技能及其详细解释:
1. SQL基础
- 数据查询:
- sql深色版本SELECT column1, column2FROM tableWHERE conditionGROUP BY column1HAVING conditionORDER BY column1 ASC/DESC;
- SELECT语句:从表中选择数据。
- WHERE子句:过滤数据。
- ORDER BY子句:对结果进行排序。
- GROUP BY子句:对数据进行分组。
- HAVING子句:对分组后的数据进行过滤。
- 数据修改:
- sql深色版本INSERT INTO table (column1, column2) VALUES ('value1', 'value2');UPDATE table SET column1 = 'new_value' WHERE condition;DELETE FROM table WHERE condition;
- INSERT语句:插入新数据。
- UPDATE语句:更新现有数据。
- DELETE语句:删除数据。
2. 索引管理
- 创建索引:
- sql深色版本CREATE INDEX idx_column1 ON table (column1);CREATE INDEX idx_composite ON table (column1, column2);
- 单列索引:在单个列上创建索引。
- 复合索引:在多个列上创建索引。
- 查看索引:
- sql深色版本SHOW INDEX FROM table;
- 使用SHOW INDEX命令查看表的索引信息。
- 删除索引:
- sql深色版本DROP INDEX idx_column1 ON table;
- 使用DROP INDEX命令删除索引。
3. 事务管理
- 事务控制:
- sql深色版本START TRANSACTION;-- 执行多个SQL语句INSERT INTO table1 (column1, column2) VALUES ('value1', 'value2');UPDATE table2 SET column3 = 'value3' WHERE id = 1;COMMIT; -- 或 ROLLBACK;
- START TRANSACTION:开始一个事务。
- COMMIT:提交事务。
- ROLLBACK:回滚事务。
- 事务隔离级别:
- sql深色版本SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
- SET SESSION TRANSACTION ISOLATION LEVEL:设置事务隔离级别。
4. 存储过程和函数
- 创建存储过程:
- sql深色版本DELIMITER //CREATE PROCEDURE GetEmployeeById(IN emp_id INT)BEGIN SELECT * FROM employees WHERE id = emp_id;END //DELIMITER ;
- 使用CREATE PROCEDURE命令创建存储过程。
- 调用存储过程:
- sql深色版本CALL GetEmployeeById(1);
- 使用CALL命令调用存储过程。
- 创建函数:
- sql深色版本DELIMITER //CREATE FUNCTION CalculateBonus(salary DECIMAL(10, 2))RETURNS DECIMAL(10, 2)DETERMINISTICBEGIN RETURN salary * 0.1;END //DELIMITER ;
- 使用CREATE FUNCTION命令创建函数。
- 调用函数:
- sql深色版本SELECT id, name, CalculateBonus(salary) AS bonus FROM employees;
- 在SQL语句中直接调用函数。
5. 视图管理
- 创建视图:
- sql深色版本CREATE VIEW EmployeeView ASSELECT id, name, department FROM employees;
- 使用CREATE VIEW命令创建视图。
- 查询视图:
- sql深色版本SELECT * FROM EmployeeView;
- 将视图当作普通表来查询。
- 删除视图:
- sql深色版本DROP VIEW EmployeeView;
- 使用DROP VIEW命令删除视图。
6. 触发器管理
- 创建触发器:
- sql深色版本DELIMITER //CREATE TRIGGER BeforeInsertEmployeeBEFORE INSERT ON employeesFOR EACH ROWBEGIN IF NEW.salary < 0 THEN SET NEW.salary = 0; END IF;END //DELIMITER ;
- 使用CREATE TRIGGER命令创建触发器。
- 删除触发器:
- sql深色版本DROP TRIGGER BeforeInsertEmployee;
- 使用DROP TRIGGER命令删除触发器。
7. 性能优化
- 查询优化:
- sql深色版本EXPLAIN SELECT * FROM employees WHERE department = 'Sales';
- 使用EXPLAIN命令分析查询计划。
- 优化索引使用。
- 优化查询语句。
- 配置优化:
- ini深色版本[mysqld]innodb_buffer_pool_size = 1Gquery_cache_size = 64Mmax_connections = 100
- 调整缓冲池大小(innodb_buffer_pool_size)。
- 调整查询缓存(query_cache_size)。
- 调整连接数(max_connections)。
- 慢查询日志:
- ini深色版本[mysqld]slow_query_log = 1slow_query_log_file = /var/log/mysql/slow.loglong_query_time = 2
- 启用慢查询日志,记录执行时间较长的查询。
8. 备份与恢复
- 逻辑备份:
- sh深色版本mysqldump -u username -p database > backup.sql
- 使用mysqldump命令进行逻辑备份。
- 逻辑恢复:
- sh深色版本mysql -u username -p database < backup.sql
- 使用mysql命令恢复备份。
- 物理备份:
- sh深色版本xtrabackup --backup --target-dir=/path/to/backup
- 使用xtrabackup工具进行物理备份。
- 物理恢复:
- sh深色版本xtrabackup --copy-back --target-dir=/path/to/backup
- 使用xtrabackup工具恢复备份。
9. 主从复制
- 配置主服务器:
- ini深色版本[mysqld]log-bin=mysql-binserver-id=1sql深色版本CREATE USER 'repl'@'%' IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';FLUSH PRIVILEGES;sql深色版本SHOW MASTER STATUS;
- 获取主服务器的状态。
- 重启MySQL服务。
- 创建用于复制的用户。
- 编辑my.cnf文件,启用二进制日志。
- 配置从服务器:
- ini深色版本[mysqld]server-id=2sql深色版本CHANGE MASTER TOMASTER_HOST='master_host',MASTER_USER='repl',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=12345;sql深色版本START SLAVE;
- 启动复制。
- 重启MySQL服务。
- 配置从服务器连接主服务器。
- 编辑my.cnf文件,设置服务器ID。
10. 安全管理
- 用户管理:
- sql深色版本CREATE USER 'username'@'host' IDENTIFIED BY 'password';sql深色版本GRANT ALL PRIVILEGES ON database.* TO 'username'@'host';sql深色版本REVOKE ALL PRIVILEGES ON database.* FROM 'username'@'host';sql深色版本DROP USER 'username'@'host';
- 删除用户。
- 撤销权限。
- 授予权限。
- 创建用户。
- 密码管理:
- sql深色版本ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
- 修改用户密码。
- 权限管理:
- sql深色版本SHOW GRANTS FOR 'username'@'host';
- 查看用户权限。
总结
掌握这些MySQL的核心技能,可以帮助你在日常工作中更高效地管理和优化数据库。无论你是DBA、开发人员还是数据分析师,这些技能都是必不可少的。希望这些内容对你有所帮助!