50条常用的MySQL命令汇总
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日常使用的核心,熟练掌握将极大提升数据库操作效率。