50条常用的MySQL命令汇总
一、数据库操作
创建数据库
CREATE DATABASE database_name;
创建数据库并指定字符集
CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看所有数据库
SHOW DATABASES;
选择/使用数据库
USE database_name;
查看当前使用的数据库
SELECT DATABASE();
删除数据库
DROP DATABASE database_name;
删除数据库(如果存在)
DROP DATABASE IF EXISTS database_name;
修改数据库字符集
ALTER DATABASE database_name CHARACTER SET utf8mb4;
查看数据库创建语句
SHOW CREATE DATABASE database_name;
二、表操作
创建表
CREATE TABLE table_name ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
查看所有表
SHOW TABLES;
查看表结构
DESCRIBE table_name; -- 或 DESC table_name; -- 或 SHOW COLUMNS FROM table_name;
查看表的创建语句
SHOW CREATE TABLE table_name;
重命名表
RENAME TABLE old_table_name TO new_table_name;
添加列
ALTER TABLE table_name ADD COLUMN column_name VARCHAR(100);
删除列
ALTER TABLE table_name DROP COLUMN column_name;
修改列定义
ALTER TABLE table_name MODIFY COLUMN column_name INT NOT NULL;
修改列名
ALTER TABLE table_name CHANGE old_column_name new_column_name VARCHAR(100);
添加主键
ALTER TABLE table_name ADD PRIMARY KEY (id);
删除主键
ALTER TABLE table_name DROP PRIMARY KEY;
添加唯一索引
ALTER TABLE table_name ADD UNIQUE (column_name);
添加普通索引
ALTER TABLE table_name ADD INDEX idx_name (column_name);
添加复合索引
ALTER TABLE table_name ADD INDEX idx_composite (col1, col2);
删除索引
DROP INDEX index_name ON table_name;
删除表
DROP TABLE table_name;
清空表(删除所有数据)
TRUNCATE TABLE table_name;
查看表索引
SHOW INDEX FROM table_name;
三、数据操作
插入单条数据
INSERT INTO table_name (col1, col2) VALUES ('value1', 'value2');
插入多条数据
INSERT INTO table_name (col1, col2) VALUES ('v1', 'v2'), ('v3', 'v4');
插入数据(忽略重复)
INSERT IGNORE INTO table_name (col1, col2) VALUES ('value1', 'value2');
插入或更新(存在则更新)
INSERT INTO table_name (id, name) VALUES (1, 'Alice') ON DUPLICATE KEY UPDATE name='Alice';
更新数据
UPDATE table_name SET column_name = 'new_value' WHERE id = 1;
更新多列
UPDATE table_name SET col1 = 'v1', col2 = 'v2' WHERE condition;
删除数据
DELETE FROM table_name WHERE id = 1;
删除所有数据(不重置自增)
DELETE FROM table_name;
查询所有数据
SELECT * FROM table_name;
查询指定列
SELECT col1, col2 FROM table_name;
带条件查询
SELECT * FROM table_name WHERE age > 18;
模糊查询
SELECT * FROM table_name WHERE name LIKE '%张%';
范围查询
SELECT * FROM table_name WHERE age BETWEEN 18 AND 30;
IN 查询
SELECT * FROM table_name WHERE id IN (1, 2, 3);
排序查询
SELECT * FROM table_name ORDER BY age DESC;
分页查询
SELECT * FROM table_name LIMIT 10 OFFSET 0; -- 或 SELECT * FROM table_name LIMIT 0, 10;
去重查询
SELECT DISTINCT column_name FROM table_name;
聚合函数查询
SELECT COUNT(*), AVG(age), MAX(age), MIN(age), SUM(age) FROM table_name;
分组查询
SELECT department, COUNT(*) FROM employees GROUP BY department;
分组后筛选(HAVING)
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5;
多表连接查询(INNER JOIN)
SELECT u.name, o.order_id FROM users u INNER JOIN orders o ON u.id = o.user_id;
左连接查询(LEFT JOIN)
SELECT u.name, o.order_id FROM users u LEFT JOIN orders o ON u.id = o.user_id;
子查询
SELECT * 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日常使用的核心,熟练掌握将极大提升数据库操作效率。