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