-- 条件查询与排序 SELECT product_name, stock FROM inventory WHERE stock >100AND category ='Electronics' ORDERBY stock DESC LIMIT 20;
-- 复杂连接查询 SELECT o.order_id, c.name, p.product_name FROM orders o JOIN customers c ON o.customer_id = c.id JOIN order_items oi ON o.id = oi.order_id JOIN products p ON oi.product_id = p.id WHERE o.order_date >'2025-01-01';
2. 数据更新与删除
1 2 3 4 5 6 7 8 9
-- 批量更新 UPDATE products SET price = price *0.9 WHERE category ='Seasonal'AND stock >50;
# 创建空数据库 mysql -u root -p -e "CREATE DATABASE restored_db;"
# 恢复数据 mysql -u root -p restored_db < sales_backup_20251105.sql
六、高级功能指令
1. 存储过程与事务
1 2 3 4 5 6 7 8 9 10 11 12 13 14
DELIMITER // CREATEPROCEDURE transfer_funds( IN from_acc VARCHAR(32), IN to_acc VARCHAR(32), IN amount DECIMAL(10,2) ) BEGIN DECLARE EXIT HANDLER FORSQLEXCEPTIONROLLBACK; START TRANSACTION; UPDATE accounts SET balance = balance - amount WHERE account_id = from_acc; UPDATE accounts SET balance = balance + amount WHERE account_id = to_acc; COMMIT; END// DELIMITER ;
2. 视图与分区表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
-- 创建视图 CREATEVIEW v_customer_orders AS SELECT c.name, COUNT(o.id) AS order_count FROM customers c LEFTJOIN orders o ON c.id = o.customer_id GROUPBY c.id;
-- 创建分区表 CREATETABLE sales_data ( id INT AUTO_INCREMENT, sale_date DATENOTNULL, amount DECIMAL(10,2), PRIMARY KEY (id, sale_date) ) PARTITIONBYRANGE (YEAR(sale_date)) ( PARTITION p2023 VALUES LESS THAN (2024), PARTITION p2024 VALUES LESS THAN (2025), PARTITION pmax VALUES LESS THAN MAXVALUE );
最佳实践建议
安全规范:生产环境禁用 root 远程访问,使用最小权限原则。
性能监控:定期执行 SHOW STATUS 和 SHOW ENGINE INNODB STATUS。
备份策略:采用 mysqldump + 二进制日志(binlog)的组合备份方案。
字符集:新项目统一使用 utf8mb4 以支持完整 Unicode 字符。
通过系统掌握这些指令,开发者可以高效完成从日常运维到复杂业务逻辑实现的全栈数据库操作。建议结合 MySQL 8.0+ 版本特性(如窗口函数、JSON 支持等)进一步探索高级功能。