首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL数据库指令大全:从基础到进阶的完整指南

MySQL数据库指令大全:从基础到进阶的完整指南

原创
作者头像
用户3911
发布2025-11-05 15:36:21
发布2025-11-05 15:36:21
1340
举报

MySQL数据库指令大全:从基础到进阶的完整指南

MySQL作为全球最流行的开源关系型数据库,其指令系统是开发者与DBA的核心工具。以下文章系统梳理MySQL的常用指令,涵盖数据库管理、表操作、数据增删改查、索引优化及备份恢复等核心场景,结合最新实践案例,帮助读者快速掌握数据库操作精髓。

一、数据库管理指令

1. 基础操作

代码语言:javascript
复制
sql1CREATE DATABASE sales_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
2-- 创建支持emoji的数据库
3DROP DATABASE IF EXISTS temp_db; 
4-- 安全删除已存在的数据库
5USE marketing_db; 
6-- 切换当前数据库
7SHOW DATABASES LIKE 'prod_%'; 
8-- 模糊匹配查询数据库
https://m.jixing.net/

2. 用户权限管理

代码语言:javascript
复制
sql1CREATE USER 'api_user'@'%' IDENTIFIED BY 'SecurePass123!';
2-- 创建可远程访问的用户
3GRANT SELECT, INSERT ON customer_db.* TO 'api_user'@'%';
4-- 授予特定权限
5REVOKE INSERT ON orders.* FROM 'api_user'@'%'; 
6-- 撤销权限
7FLUSH PRIVILEGES; 
8-- 立即生效权限变更

二、表结构操作指令

1. 建表与约束

代码语言:javascript
复制
sql1CREATE TABLE orders (
2    order_id VARCHAR(32) PRIMARY KEY,
3    customer_id VARCHAR(32) NOT NULL,
4    amount DECIMAL(10,2) CHECK (amount > 0),
5    order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
6    INDEX idx_customer (customer_id),
7    CONSTRAINT fk_customer FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
8) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2. 结构变更

代码语言:javascript
复制
sql1ALTER TABLE products 
2ADD COLUMN discount_rate DECIMAL(3,2) DEFAULT 0.0 AFTER price;
3-- 添加字段并指定位置
4ALTER TABLE users 
5MODIFY COLUMN phone VARCHAR(20) COMMENT '国际电话格式';
6-- 修改字段属性
7ALTER TABLE logs 
8DROP INDEX idx_log_time; 
9-- 删除索引

三、数据操作指令

1. 高效查询

代码语言:javascript
复制
sql1-- 条件查询与排序
2SELECT product_name, stock 
3FROM inventory 
4WHERE stock > 100 AND category = 'Electronics' 
5ORDER BY stock DESC LIMIT 20;
6
7-- 复杂连接查询
8SELECT o.order_id, c.name, p.product_name 
9FROM orders o
10JOIN customers c ON o.customer_id = c.id
11JOIN order_items oi ON o.id = oi.order_id
12JOIN products p ON oi.product_id = p.id
13WHERE o.order_date > '2025-01-01';

2. 数据更新与删除

代码语言:javascript
复制
sql1-- 批量更新
2UPDATE products 
3SET price = price * 0.9 
4WHERE category = 'Seasonal' AND stock > 50;
5
6-- 安全删除(带条件)
7DELETE FROM logs 
8WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY) 
9LIMIT 10000;

四、性能优化指令

1. 索引管理

代码语言:javascript
复制
sql1-- 创建复合索引
2CREATE INDEX idx_order_customer_date ON orders(customer_id, order_date);
3
4-- 分析索引使用情况
5EXPLAIN SELECT * FROM orders 
6WHERE customer_id = 'CUST001' AND order_date > '2025-01-01';

2. 表优化

代码语言:javascript
复制
sql1OPTIMIZE TABLE orders; 
2-- 重建表减少碎片
3ANALYZE TABLE products; 
4-- 更新统计信息
5SET GLOBAL innodb_buffer_pool_size = 4G; 
6-- 调整缓冲池大小(需权限)

五、备份恢复指令

1. 逻辑备份

代码语言:javascript
复制
bash1# 备份单个数据库
2mysqldump -u root -p --single-transaction sales_db > sales_backup_20251105.sql
3
4# 备份所有数据库
5mysqldump -u root -p --all-databases > full_backup_20251105.sql

2. 数据恢复

代码语言:javascript
复制
bash1# 创建空数据库
2mysql -u root -p -e "CREATE DATABASE restored_db;"
3
4# 恢复数据
5mysql -u root -p restored_db < sales_backup_20251105.sql

六、高级功能指令

1. 存储过程与事务

代码语言:javascript
复制
sql1DELIMITER //
2CREATE PROCEDURE transfer_funds(
3    IN from_acc VARCHAR(32),
4    IN to_acc VARCHAR(32),
5    IN amount DECIMAL(10,2)
6)
7BEGIN
8    DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
9    START TRANSACTION;
10        UPDATE accounts SET balance = balance - amount WHERE account_id = from_acc;
11        UPDATE accounts SET balance = balance + amount WHERE account_id = to_acc;
12    COMMIT;
13END //
14DELIMITER ;

2. 视图与分区表

代码语言:javascript
复制
sql1-- 创建视图
2CREATE VIEW v_customer_orders AS
3SELECT c.name, COUNT(o.id) as order_count 
4FROM customers c
5LEFT JOIN orders o ON c.id = o.customer_id
6GROUP BY c.id;
7
8-- 创建分区表
9CREATE TABLE sales_data (
10    id INT AUTO_INCREMENT,
11    sale_date DATE NOT NULL,
12    amount DECIMAL(10,2),
13    PRIMARY KEY (id, sale_date)
14) PARTITION BY RANGE (YEAR(sale_date)) (
15    PARTITION p2023 VALUES LESS THAN (2024),
16    PARTITION p2024 VALUES LESS THAN (2025),
17    PARTITION pmax VALUES LESS THAN MAXVALUE
18);

最佳实践建议

  1. 安全规范:生产环境禁用root远程访问,使用最小权限原则
  2. 性能监控:定期执行SHOW STATUSSHOW ENGINE INNODB STATUS
  3. 备份策略:采用mysqldump+二进制日志(binlog)的组合备份方案
  4. 字符集:新项目统一使用utf8mb4以支持完整Unicode字符

通过系统掌握这些指令,开发者可以高效完成从日常运维到复杂业务逻辑实现的全栈数据库操作。建议结合MySQL 8.0+版本特性(如窗口函数、JSON支持等)进一步探索高级功能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL数据库指令大全:从基础到进阶的完整指南
    • 一、数据库管理指令
      • 1. 基础操作
      • 2. 用户权限管理
    • 二、表结构操作指令
      • 1. 建表与约束
      • 2. 结构变更
    • 三、数据操作指令
      • 1. 高效查询
      • 2. 数据更新与删除
    • 四、性能优化指令
      • 1. 索引管理
      • 2. 表优化
    • 五、备份恢复指令
      • 1. 逻辑备份
      • 2. 数据恢复
    • 六、高级功能指令
      • 1. 存储过程与事务
      • 2. 视图与分区表
    • 最佳实践建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档