MySQL命令大全和实例

文章目录

      • [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 BYHAVING删除重复项:

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)

50个开发必备的Python经典脚本(11-20)

50个开发必备的Python经典脚本(21-30)

50个开发必备的Python经典脚本(31-40)

50个开发必备的Python经典脚本(41-50)


​最后我们放松一下眼睛

相关推荐
MrJson-架构师5 分钟前
4.银河麒麟V10(ARM) 离线安装 MySQL
arm开发·mysql
中草药z21 分钟前
【Spring】深入解析 Spring 原理:Bean 的多方面剖析(源码阅读)
java·数据库·spring boot·spring·bean·源码阅读
地球资源数据云22 分钟前
全国30米分辨率逐年植被覆盖度(FVC)数据集
大数据·运维·服务器·数据库·均值算法
Ahern_1 小时前
Oracle 普通表至分区表的分区交换
大数据·数据库·sql·oracle
夜半被帅醒1 小时前
MySQL 数据库优化详解【Java数据库调优】
java·数据库·mysql
不爱学习的啊Biao2 小时前
【13】MySQL如何选择合适的索引?
android·数据库·mysql
破 风2 小时前
SpringBoot 集成 MongoDB
数据库·mongodb
Rverdoser2 小时前
MySQL-MVCC(多版本并发控制)
数据库·mysql
醒了就刷牙2 小时前
黑马Java面试教程_P9_MySQL
java·mysql·面试
m0_748233642 小时前
SQL数组常用函数记录(Map篇)
java·数据库·sql