命令行操作数据库是开发者和管理员日常工作中不可或缺的技能,它通过文本界面直接与数据库交互,具有高效、灵活且自动化程度高的特点,无论是快速查询数据、管理数据库结构,还是执行批量操作,命令行都能提供比图形化界面更直接的控制力,本文将以MySQL为例,详细介绍命令行操作数据库的核心步骤、常用命令及实用技巧,帮助读者掌握这一高效工具。

连接与退出数据库
需要通过命令行连接到MySQL服务器,打开终端(Windows下使用CMD或PowerShell,Linux/macOS使用Terminal),输入以下命令:
mysql -u 用户名 -p
系统会提示输入密码,正确验证后即可进入MySQL命令行环境,若需连接到远程服务器,可添加-h
参数指定主机地址,例如mysql -u root -p -h 192.168.1.100
,退出数据库则使用exit
或quit
命令,或按Ctrl+D
快捷键。
数据库的基本操作
连接成功后,首先需要选择或创建数据库,使用SHOW DATABASES;
命令可查看所有数据库列表,创建数据库通过CREATE DATABASE 数据库名;
实现,例如CREATE DATABASE mydb;
,若需避免重复创建,可使用CREATE DATABASE IF NOT EXISTS mydb;
,选择数据库则使用USE 数据库名;
,例如USE mydb;
,之后的所有操作都将针对该数据库。
表的创建与管理
数据库的核心是表,创建表需定义字段名、数据类型和约束,创建一个用户表:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
INT
为整数类型,VARCHAR
为可变字符串,AUTO_INCREMENT
表示自增主键,UNIQUE
确保字段值唯一,查看表结构使用DESCRIBE users;
,修改表结构通过ALTER TABLE
命令,例如添加字段:ALTER TABLE users ADD COLUMN age INT;
,删除表则使用DROP TABLE users;
。

数据的增删改查(CRUD)
数据的增删改查是数据库操作的核心。
- 插入数据(INSERT):
INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com');
若需批量插入,可使用多值列表:INSERT INTO users (username, email) VALUES ('bob', 'bob@example.com'), ('charlie', 'charlie@example.com');
- 查询数据(SELECT):
基础查询:SELECT * FROM users;
查询所有字段;条件查询:SELECT * FROM users WHERE age > 18;
;排序查询:SELECT * FROM users ORDER BY created_at DESC;
(按创建时间降序)。 - 更新数据(UPDATE):
UPDATE users SET age = 25 WHERE username = 'alice';
注意:务必添加WHERE
条件,否则会更新全表数据。 - 删除数据(DELETE):
DELETE FROM users WHERE username = 'bob';
同样需谨慎使用WHERE
,避免误删数据。
高级查询与实用技巧
复杂查询通常需要结合多个条件或函数,使用LIKE
进行模糊查询:SELECT * FROM users WHERE email LIKE '%@gmail.com';
(查询所有Gmail用户),聚合函数如COUNT()
、SUM()
、AVG()
可用于统计,例如SELECT COUNT(*) FROM users;
统计用户总数,多表查询通过JOIN
实现,
SELECT users.username, orders.total FROM users JOIN orders ON users.id = orders.user_id;
命令行支持脚本执行,通过source
命令运行SQL文件:source /path/to/script.sql;
,适合批量执行操作。
常用命令速查表
功能 | 命令示例 |
---|---|
查看所有数据库 | SHOW DATABASES; |
创建数据库 | CREATE DATABASE mydb; |
选择数据库 | USE mydb; |
查看所有表 | SHOW TABLES; |
查看表结构 | DESCRIBE users; |
插入数据 | INSERT INTO users VALUES (1, 'name'); |
查询数据 | SELECT * FROM users WHERE id = 1; |
更新数据 | UPDATE users SET name = 'new' WHERE id = 1; |
删除数据 | DELETE FROM users WHERE id = 1; |
删除表 | DROP TABLE users; |
相关问答FAQs
Q1: 忘记MySQL root密码怎么办?
A1: 可通过以下步骤重置密码:

- 停止MySQL服务:
sudo systemctl stop mysql
(Linux)或通过任务管理器停止(Windows)。 - 以安全模式启动MySQL:
sudo mysqld_safe --skip-grant-tables
。 - 另开终端,无密码登录:
mysql -u root
。 - 执行以下命令更新密码(替换'new_password'):
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES;
- 重启MySQL服务,使用新密码登录。
Q2: 如何在命令行中导出和导入数据库?
A2: 导出数据库使用mysqldump
命令,
- 导出整个数据库:
mysqldump -u root -p mydb > mydb_backup.sql
- 导出特定表:
mysqldump -u root -p mydb users > users_backup.sql
导入数据库则使用mysql
命令:mysql -u root -p mydb < mydb_backup.sql
,注意:导入时目标数据库需已存在。