MySQL命令是管理和操作MySQL数据库的核心工具,通过命令行界面(CLI)或脚本执行,涵盖了数据库创建、表管理、数据操作、权限控制等全流程功能,以下从基础操作到进阶应用,结合实例和表格详细说明MySQL命令的使用方法。

基础连接与退出
首先需要连接到MySQL服务器,常用命令为mysql
,可通过参数指定主机、用户、密码等:
mysql -h localhost -u root -p
参数说明:
-h
:主机名,默认为localhost-u
:用户名,root为超级管理员-p
:提示输入密码,也可直接在命令后写密码(不安全,不推荐) 连接成功后,MySQL会显示mysql>
提示符,输入exit
或quit
可退出当前会话。
数据库操作
创建数据库
使用CREATE DATABASE
命令,可指定字符集和排序规则:
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看数据库
- 显示所有数据库:
SHOW DATABASES;
- 查看当前数据库:
SELECT DATABASE();
切换数据库
USE mydb;
(后续操作将在此数据库下执行)(图片来源网络,侵删)删除数据库
DROP DATABASE mydb;
(谨慎操作,不可逆)
表操作
创建表
需先选择数据库,使用CREATE TABLE
,可定义字段名、类型、约束等:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, age TINYINT UNSIGNED, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
常用数据类型: | 类型 | 说明 | 示例 | |---------------|--------------------------|--------------------| | INT | 整数 | age INT | | VARCHAR(n) | 可变长度字符串 | username VARCHAR(50)| | TEXT | 长文本 | content TEXT | | DATETIME | 日期时间 | created_at DATETIME| | DECIMAL(m,d) | 定点数 | price DECIMAL(10,2)| | BOOLEAN/BOOL | 布尔值 | is_active BOOLEAN |
查看表结构
SHOW TABLES;
:显示当前数据库的所有表DESCRIBE users;
或SHOW COLUMNS FROM users;
:查看表字段详情
修改表
- 添加字段:
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
- 修改字段:
ALTER TABLE users MODIFY COLUMN age INT;
- 删除字段:
ALTER TABLE users DROP COLUMN phone;
- 重命名表:
RENAME TABLE users TO customers;
删除表
DROP TABLE users;

数据操作(CRUD)
插入数据(INSERT)
INSERT INTO users (username, email, age) VALUES ('Alice', 'alice@example.com', 25);
批量插入:
INSERT INTO users (username, email, age) VALUES ('Bob', 'bob@example.com', 30), ('Charlie', 'charlie@example.com', 28);
查询数据(SELECT)
基础查询:
SELECT * FROM users; -- 查询所有字段 SELECT username, email FROM users; -- 指定字段 SELECT * FROM users WHERE age > 25; -- 条件查询 SELECT * FROM users ORDER BY age DESC; -- 排序 SELECT * FROM users LIMIT 10; -- 限制结果数
聚合函数:
SELECT COUNT(*) FROM users; -- 记录数 SELECT AVG(age) FROM users; -- 平均年龄 SELECT MAX(age) FROM users; -- 最大年龄
更新数据(UPDATE)
UPDATE users SET age = 26 WHERE username = 'Alice';
注意:务必添加WHERE条件,否则会更新全表数据。
删除数据(DELETE)
DELETE FROM users WHERE username = 'Bob';
同样需谨慎使用WHERE条件,避免误删。
用户与权限管理
创建用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
授权
GRANT SELECT, INSERT ON mydb.* TO 'newuser'@'localhost'; -- 授予mydb库的查询和插入权限 GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION; -- 超级管理员权限
刷新权限
FLUSH PRIVILEGES;
(授权后需执行使权限生效)
撤销权限
REVOKE INSERT ON mydb.* FROM 'newuser'@'localhost';
删除用户
DROP USER 'newuser'@'localhost';
数据备份与恢复
备份数据库
mysqldump -u root -p mydb > mydb_backup.sql
恢复数据库
mysql -u root -p mydb < mydb_backup.sql
实用技巧
- 分页查询:
SELECT * FROM users LIMIT 10 OFFSET 20;
(从第21条开始取10条) - 模糊查询:
SELECT * FROM users WHERE email LIKE '%@example.com';
- 多表连接:
SELECT users.name, orders.amount FROM users JOIN orders ON users.id = orders.user_id;
- 事务处理:
START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- 或 ROLLBACK; 回滚
相关问答FAQs
Q1: 如何修改MySQL用户密码?
A1: 使用ALTER USER
命令,ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
执行后需运行FLUSH PRIVILEGES;
使密码生效,若忘记root密码,可通过跳过权限表的方式启动MySQL服务并重置密码。
Q2: MySQL中NULL和空字符串的区别是什么?
A2: NULL表示“未知”或“不存在”,不占用存储空间,且任何与NULL的比较结果均为NULL(需用IS NULL
或IS NOT NULL
判断);空字符串是长度为0的有效字符串,占用存储空间,可直接参与比较(如WHERE email = ''
)。NULL = NULL
结果为NULL,而结果为1(TRUE)。