文章目录
- 1. 数据库管理
- 2. 表操作
- 3. 数据操作(CRUD)
- 4. 条件查询与排序
- 5. 聚合函数和分组
- 6. 用户权限管理
- 7. 其他操作
- 8. 视图操作
- 9. 索引操作
- 10. 子查询与连接查询
- 11. 插入多行数据
- 12. 删除满足特定条件的表中所有数据
- 13. 清空表(保留表结构)
- 14. 查看当前数据库中的所有表
- 15. 数据库备份与恢复(在shell中执行)
- 16. 更新多个列
- 17. 分页查询数据
- 18. 复制表结构(不复制数据)
- 19. 检查表是否存在
- 20. 删除重复行
- 21. 修改数据库字符集
- 22. 查看服务器状态
- 23. 查看当前会话变量
- 24. 创建触发器
- 25. 删除触发器
- 26. 创建存储过程
- 27. 查看事件调度器(定时任务)
- 28. 删除事件调度器
- 29. 创建分区表
- 30. 修改表引擎
当然,以下按照功能分类列举MySQL命令大全的部分内容及其示例:
1. 数据库管理
- 创建数据库:
CREATE DATABASE my_database CHARACTER SET utf8 COLLATE utf8_general_ci;
- 查看所有数据库:
SHOW DATABASES;
- 选择当前工作数据库:
USE my_database;
- 删除数据库:
DROP DATABASE IF EXISTS my_database;
2. 表操作
- 创建表:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
- 查看表结构:
DESCRIBE users;
- 修改表结构:
ALTER TABLE users ADD COLUMN last_login DATETIME;
- 重命名表:
RENAME TABLE users TO members;
- 删除表:
DROP TABLE users;
3. 数据操作(CRUD)
- 插入数据:
INSERT INTO users (username, email) VALUES ('JohnDoe', 'john@example.com');
- 查询数据:
SELECT * FROM users;
或者更复杂的查询:
SELECT username, COUNT(*) as total_entries FROM users GROUP BY username;
- 更新数据:
UPDATE users SET email = 'new@example.com' WHERE username = 'JohnDoe';
- 删除数据:
DELETE FROM users WHERE id = 1;
4. 条件查询与排序
- 条件筛选:
SELECT * FROM users WHERE age > 18 AND gender = 'M';
- 排序结果:
SELECT * FROM users ORDER BY username DESC;
5. 聚合函数和分组
- 计算总数:
SELECT COUNT(*) FROM users;
- 求平均值:
SELECT AVG(salary) FROM employees;
- 分组统计:
SELECT department, COUNT(*) FROM employees GROUP BY department;
6. 用户权限管理
- 创建用户:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
- 授予权限:
GRANT SELECT, INSERT, UPDATE ON database_name.* TO 'newuser'@'%';
- 撤销权限:
REVOKE ALL PRIVILEGES ON database_name.* FROM 'newuser'@'%';
- 更改用户密码:
SET PASSWORD FOR 'newuser'@'%' = PASSWORD('new_password');
7. 其他操作
- 事务处理:
START TRANSACTION;
-- 执行一系列操作
COMMIT;
- 备份与恢复(通常在Shell中执行):
# 备份整个数据库
mysqldump -u 用户名 -p 数据库名 > backup.sql
# 恢复数据库
mysql -u 用户名 -p 数据库名 < backup.sql
8. 视图操作
- 创建视图:
CREATE VIEW user_emails AS
SELECT username, email FROM users;
- 查询视图:
SELECT * FROM user_emails;
- 修改视图:
CREATE OR REPLACE VIEW user_emails AS
SELECT username, email, created_at FROM users;
- 删除视图:
DROP VIEW IF EXISTS user_emails;
9. 索引操作
- 创建索引:
CREATE INDEX idx_username ON users(username);
- 查看索引:
SHOW INDEX FROM users;
- 删除索引:
DROP INDEX idx_username ON users;
10. 子查询与连接查询
- 子查询:
SELECT * FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE country = 'USA');
- 内连接查询:
SELECT customers.name, orders.order_date
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id;
11. 插入多行数据
INSERT INTO users (username, email) VALUES
('User1', 'user1@example.com'),
('User2', 'user2@example.com'),
('User3', 'user3@example.com');
12. 删除满足特定条件的表中所有数据
DELETE FROM users WHERE age < 18;
13. 清空表(保留表结构)
TRUNCATE TABLE users;
14. 查看当前数据库中的所有表
SHOW TABLES;
15. 数据库备份与恢复(在shell中执行)
- 备份单个表:
mysqldump -u 用户名 -p 数据库名 表名 > table_backup.sql
- 恢复单个表:
mysql -u 用户名 -p 数据库名 < table_backup.sql
当然,接下来再介绍几个MySQL中的其他重要命令:
16. 更新多个列
UPDATE users
SET email = 'newemail@example.com', age = 30
WHERE username = 'JohnDoe';
17. 分页查询数据
SELECT * FROM users
LIMIT 10 OFFSET 20; -- 获取第21-30条记录
18. 复制表结构(不复制数据)
CREATE TABLE new_table LIKE old_table;
19. 检查表是否存在
SHOW TABLES LIKE 'users';
或者使用SQL表达式:
SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 'users' AND table_schema = DATABASE();
20. 删除重复行
DELETE t1 FROM users t1, users t2
WHERE t1.id < t2.id AND t1.username = t2.username;
或在较新版本的MySQL中使用DISTINCT
关键字结合GROUP BY
和HAVING
删除重复项:
CREATE TABLE deduplicated_users AS
SELECT MIN(id) as id, username, email
FROM users
GROUP BY username, email
HAVING COUNT(*) = 1;
-- 确认无误后,替换原表
DROP TABLE users;
RENAME TABLE deduplicated_users TO users;
21. 修改数据库字符集
ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
22. 查看服务器状态
SHOW STATUS;
23. 查看当前会话变量
SHOW SESSION VARIABLES;
当然,接下来再介绍几个MySQL中其他高级功能的命令示例:
24. 创建触发器
CREATE TRIGGER before_insert_users
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SET NEW.email = LOWER(NEW.email);
END;
此触发器在插入新用户前自动将email字段转换为小写。
25. 删除触发器
DROP TRIGGER IF EXISTS before_insert_users;
26. 创建存储过程
DELIMITER //
CREATE PROCEDURE get_user_info(IN user_id INT)
BEGIN
SELECT * FROM users WHERE id = user_id;
END //
DELIMITER ;
调用存储过程:
CALL get_user_info(1);
27. 查看事件调度器(定时任务)
SHOW EVENTS;
- 创建事件调度器,每天凌晨1点更新所有用户的last_login时间:
CREATE EVENT update_last_login
ON SCHEDULE EVERY 1 DAY STARTS '2022-01-01 01:00:00'
DO
UPDATE users SET last_login = CURRENT_TIMESTAMP;
-- 若要立即启用该事件(默认创建时禁用)
ALTER EVENT update_last_login ENABLE;
28. 删除事件调度器
DROP EVENT IF EXISTS update_last_login;
29. 创建分区表
CREATE TABLE sales (
id INT NOT NULL,
sale_date DATE,
amount DECIMAL(10,2),
PRIMARY KEY (id)
)
PARTITION BY RANGE (YEAR(sale_date)) (
PARTITION p0 VALUES LESS THAN (2010),
PARTITION p1 VALUES LESS THAN (2020),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
以上是在MySQL中使用分区表对数据进行逻辑分隔的例子。
30. 修改表引擎
ALTER TABLE table_name ENGINE=InnoDB;
更改表的存储引擎,例如从MyISAM改为InnoDB。
以上只是MySQL部分高级功能的简单展示,实际使用时请根据具体需求和场景选择合适的功能,并结合官方文档深入学习。
python推荐学习汇总连接:
50个开发必备的Python经典脚本(1-10)
50个开发必备的Python经典脚本(11-20)
50个开发必备的Python经典脚本(21-30)
50个开发必备的Python经典脚本(31-40)
50个开发必备的Python经典脚本(41-50)
————————————————
最后我们放松一下眼睛