50条常用的MySQL命令汇总
一、数据库操作
-
创建数据库
sqlCREATE DATABASE database_name; -
创建数据库并指定字符集
sqlCREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -
查看所有数据库
sqlSHOW DATABASES; -
选择/使用数据库
sqlUSE database_name; -
查看当前使用的数据库
sqlSELECT DATABASE(); -
删除数据库
sqlDROP DATABASE database_name; -
删除数据库(如果存在)
sqlDROP DATABASE IF EXISTS database_name; -
修改数据库字符集
sqlALTER DATABASE database_name CHARACTER SET utf8mb4; -
查看数据库创建语句
sqlSHOW CREATE DATABASE database_name;
二、表操作
-
创建表
sqlCREATE TABLE table_name ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -
查看所有表
sqlSHOW TABLES; -
查看表结构
sqlDESCRIBE table_name; -- 或 DESC table_name; -- 或 SHOW COLUMNS FROM table_name; -
查看表的创建语句
sqlSHOW CREATE TABLE table_name; -
重命名表
sqlRENAME TABLE old_table_name TO new_table_name; -
添加列
sqlALTER TABLE table_name ADD COLUMN column_name VARCHAR(100); -
删除列
sqlALTER TABLE table_name DROP COLUMN column_name; -
修改列定义
sqlALTER TABLE table_name MODIFY COLUMN column_name INT NOT NULL; -
修改列名
sqlALTER TABLE table_name CHANGE old_column_name new_column_name VARCHAR(100); -
添加主键
sqlALTER TABLE table_name ADD PRIMARY KEY (id); -
删除主键
sqlALTER TABLE table_name DROP PRIMARY KEY; -
添加唯一索引
sqlALTER TABLE table_name ADD UNIQUE (column_name); -
添加普通索引
sqlALTER TABLE table_name ADD INDEX idx_name (column_name); -
添加复合索引
sqlALTER TABLE table_name ADD INDEX idx_composite (col1, col2); -
删除索引
sqlDROP INDEX index_name ON table_name; -
删除表
sqlDROP TABLE table_name; -
清空表(删除所有数据)
sqlTRUNCATE TABLE table_name; -
查看表索引
sqlSHOW INDEX FROM table_name;
三、数据操作
-
插入单条数据
sqlINSERT INTO table_name (col1, col2) VALUES ('value1', 'value2'); -
插入多条数据
sqlINSERT INTO table_name (col1, col2) VALUES ('v1', 'v2'), ('v3', 'v4'); -
插入数据(忽略重复)
sqlINSERT IGNORE INTO table_name (col1, col2) VALUES ('value1', 'value2'); -
插入或更新(存在则更新)
sqlINSERT INTO table_name (id, name) VALUES (1, 'Alice') ON DUPLICATE KEY UPDATE name='Alice'; -
更新数据
sqlUPDATE table_name SET column_name = 'new_value' WHERE id = 1; -
更新多列
sqlUPDATE table_name SET col1 = 'v1', col2 = 'v2' WHERE condition; -
删除数据
sqlDELETE FROM table_name WHERE id = 1; -
删除所有数据(不重置自增)
sqlDELETE FROM table_name; -
查询所有数据
sqlSELECT * FROM table_name; -
查询指定列
sqlSELECT col1, col2 FROM table_name; -
带条件查询
sqlSELECT * FROM table_name WHERE age > 18; -
模糊查询
sqlSELECT * FROM table_name WHERE name LIKE '%张%'; -
范围查询
sqlSELECT * FROM table_name WHERE age BETWEEN 18 AND 30; -
IN 查询
sqlSELECT * FROM table_name WHERE id IN (1, 2, 3); -
排序查询
sqlSELECT * FROM table_name ORDER BY age DESC; -
分页查询
sqlSELECT * FROM table_name LIMIT 10 OFFSET 0; -- 或 SELECT * FROM table_name LIMIT 0, 10; -
去重查询
sqlSELECT DISTINCT column_name FROM table_name; -
聚合函数查询
sqlSELECT COUNT(*), AVG(age), MAX(age), MIN(age), SUM(age) FROM table_name; -
分组查询
sqlSELECT department, COUNT(*) FROM employees GROUP BY department; -
分组后筛选(HAVING)
sqlSELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5; -
多表连接查询(INNER JOIN)
sqlSELECT u.name, o.order_id FROM users u INNER JOIN orders o ON u.id = o.user_id; -
左连接查询(LEFT JOIN)
sqlSELECT u.name, o.order_id FROM users u LEFT JOIN orders o ON u.id = o.user_id; -
子查询
sqlSELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);
补充说明
- 安全操作 :执行
DROP,DELETE,UPDATE等操作前,建议先备份数据或在测试环境验证。 - 性能优化 :合理使用索引、避免
SELECT *、优化WHERE条件可提升查询效率。 - 字符集 :推荐使用
utf8mb4字符集以支持完整的 Unicode(如 emoji)。 - 事务 :对于需要保证数据一致性的操作,使用
BEGIN,COMMIT,ROLLBACK控制事务。
这些命令是MySQL日常使用的核心,熟练掌握将极大提升数据库操作效率。