菜鸟科技网

如何命令MySQL数据库?

命令MySQL数据库是数据库管理中的核心操作,涵盖了数据定义、数据操作、数据查询、数据控制等多个方面,MySQL作为全球最受欢迎的开源关系型数据库管理系统,其命令行工具(mysql)提供了高效、灵活的交互式操作方式,适用于开发、测试、运维等多种场景,以下将从基础命令到高级应用,详细解析MySQL数据库的常用操作及注意事项。

如何命令MySQL数据库?-图1
(图片来源网络,侵删)

连接与退出MySQL数据库

在使用MySQL命令前,首先需要建立与数据库服务器的连接,通过命令行工具连接MySQL的基本语法为:

mysql -h 主机名 -u 用户名 -p密码

连接到本地MySQL服务器的root用户(无密码时可直接回车):

mysql -h localhost -u root -p

连接成功后,会显示欢迎信息及mysql>提示符,若要退出MySQL,可执行以下命令之一:

exit;
quit;
Ctrl+D

数据库操作

创建数据库

使用CREATE DATABASE语句创建新数据库,需指定数据库名称和字符集(推荐使用utf8mb4以支持完整Unicode字符):

如何命令MySQL数据库?-图2
(图片来源网络,侵删)
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

查看数据库列表

SHOW DATABASES;

该命令会列出MySQL服务器中所有数据库的名称,可通过LIKE关键字过滤结果,

SHOW DATABASES LIKE 'my%';

选择数据库

执行任何数据库操作前,需先选择目标数据库:

USE mydb;

若切换成功,会提示Database changed

删除数据库

警告:删除操作不可逆,将永久删除数据库及所有数据!

DROP DATABASE mydb;

数据表操作

创建数据表

使用CREATE TABLE语句定义表结构,需指定列名、数据类型、约束条件(如主键、外键、非空等),例如创建用户表:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  • AUTO_INCREMENT:自动递增,通常用于主键。
  • PRIMARY KEY:主键约束,确保唯一性。
  • UNIQUE:唯一约束,防止重复值。
  • DEFAULT CURRENT_TIMESTAMP:默认值为当前时间。

查看表结构

DESCRIBE users;

SHOW COLUMNS FROM users;

修改表结构

  • 添加列:
    ALTER TABLE users ADD COLUMN age INT DEFAULT 18;
  • 修改列类型:
    ALTER TABLE users MODIFY COLUMN username VARCHAR(100);
  • 删除列:
    ALTER TABLE users DROP COLUMN age;

删除数据表

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;

条件查询(WHERE子句):

SELECT * FROM users WHERE age > 25;

排序(ORDER BY):

SELECT * FROM users ORDER BY created_at DESC;

分页(LIMIT):

SELECT * FROM users LIMIT 10 OFFSET 20;  -- 跳过前20条,返回10条

更新数据(UPDATE)

UPDATE users SET email = 'new_email@example.com' WHERE id = 1;

注意:务必添加WHERE条件,否则将更新全表数据!

删除数据(DELETE)

DELETE FROM users WHERE id = 1;

同样需注意WHERE条件,避免误删全表数据。

数据查询高级技巧

聚合函数

MySQL支持多种聚合函数,如COUNT()SUM()AVG()MAX()MIN(),例如统计用户总数:

SELECT COUNT(*) AS total_users FROM users;

分组查询(GROUP BY)

按性别统计用户数量(假设表中有gender列):

SELECT gender, COUNT(*) AS count FROM users GROUP BY gender;

多表连接查询

假设存在订单表(orders),查询用户及其订单:

SELECT u.username, o.order_id 
FROM users u 
JOIN orders o ON u.id = o.user_id;

子查询

查询年龄大于平均年龄的用户:

SELECT * FROM users WHERE age > (SELECT AVG(age) FROM users);

用户与权限管理

创建用户

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

授权

GRANT SELECT, INSERT ON mydb.* TO 'newuser'@'localhost';

刷新权限

FLUSH PRIVILEGES;

撤销权限

REVOKE INSERT ON mydb.* FROM 'newuser'@'localhost';

数据备份与恢复

备份数据库

使用mysqldump工具:

mysqldump -u root -p mydb > mydb_backup.sql

恢复数据库

mysql -u root -p mydb < mydb_backup.sql

性能优化建议

  1. 索引优化:为常用查询条件的列创建索引,
    CREATE INDEX idx_email ON users(email);
  2. **避免SELECT ***:只查询必要的列,减少数据传输量。
  3. 分页优化:对于深度分页(如LIMIT 100000, 10),使用子查询或游标优化。

常见错误与解决

  1. Access denied:检查用户名、密码及主机权限配置。
  2. Unknown column:确认表结构是否正确,列名拼写是否无误。

相关问答FAQs

Q1: 如何查看MySQL当前版本?
A1: 在MySQL命令行中执行以下语句之一:

SELECT VERSION();

或通过命令行工具查看:

mysql --version

Q2: 如何重置MySQL root密码?
A2: 1. 停止MySQL服务(sudo systemctl stop mysql);
2. 跳过权限表启动:sudo mysqld_safe --skip-grant-tables &
3. 无密码登录并更新密码:

   UPDATE mysql.user SET authentication_string=PASSWORD('newpassword') WHERE User='root';
   FLUSH PRIVILEGES;

重启MySQL服务并验证新密码。

分享:
扫描分享到社交APP
上一篇
下一篇