MySQL命令大全和实例

发布时间:2024年01月17日


当然,以下按照功能分类列举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 BYHAVING删除重复项:

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)
————————————————

?最后我们放松一下眼睛
在这里插入图片描述

文章来源:https://blog.csdn.net/qqrrjj2011/article/details/135644171
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。