一小时速通MySQL:零基础入门到精通,看这篇就够了(下篇)

时间:2025-09-23 23:21

接上篇,这篇继续为大家介绍一些MySQL 命令指南

四、 数据操作 (CRUD)**

1. 插入数据 (INSERT)

```sql

INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);

-- 示例 1:插入一条完整记录(为所有列赋值)

INSERT INTO users (username, email, age) VALUES ('john_doe', 'john@example.com', 25);

-- 示例 2:插入多条记录

INSERT INTO users (username, email, age) VALUES

('alice', 'alice@example.com', 30),

('bob', 'bob@example.com', 28);

```

2. 查询数据 (SELECT)

```sql

-- 查询所有列的所有数据

SELECT * FROM 表名;

-- 查询特定列

SELECT 列1, 列2 FROM 表名;

SELECT username, email FROM users; -- 示例

-- 带条件的查询 (WHERE)

SELECT * FROM 表名 WHERE 条件;

SELECT * FROM users WHERE age > 25; -- 示例:年龄大于25的用户

SELECT * FROM users WHERE username = 'john_doe'; -- 示例:用户名为 john_doe

-- 排序 (ORDER BY)

SELECT * FROM 表名 ORDER BY 列名 [ASC|DESC]; -- ASC 升序 (默认), DESC 降序

SELECT * FROM users ORDER BY created_at DESC; -- 示例:按创建时间降序(最新在前)

-- 限制结果数量 (LIMIT)

SELECT * FROM 表名 LIMIT 数量;

SELECT * FROM users LIMIT 5; -- 示例:只取前5条

SELECT * FROM users LIMIT 5, 10; -- 示例:跳过前5条,取接下来的10条(常用于分页)

-- 模糊查询 (LIKE)

SELECT * FROM 表名 WHERE 列名 LIKE '模式';

SELECT * FROM users WHERE email LIKE '%@example.com'; -- 示例:查找 example.com 结尾的邮箱

-- % 代表任意多个字符,_ 代表一个任意字符

```

3. 更新数据 (UPDATE)

```sql

UPDATE 表名 SET 列1 = 新值1, 列2 = 新值2 WHERE 条件;

-- 示例:将用户 john_doe 的年龄更新为 26

UPDATE users SET age = 26 WHERE username = 'john_doe';

-- **警告:如果不加 WHERE 条件,会更新表中所有记录!**

```

4. 删除数据 (DELETE)

```sql

DELETE FROM 表名 WHERE 条件;

-- 示例:删除用户名为 bob 的用户

DELETE FROM users WHERE username = 'bob';

-- **警告:如果不加 WHERE 条件,会删除表中所有记录!**

-- 清空表(删除所有数据,但保留表结构)通常使用 TRUNCATE,更快

TRUNCATE TABLE 表名;

```

---

五、 用户与权限管理**

1. 创建用户

```sql

CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; -- 示例:本地连接

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword'; -- 示例:允许任何主机连接

```

2. 授予权限

```sql

GRANT 权限类型 ON 数据库名.表名 TO '用户名'@'主机';

-- 示例 1:授予用户对 mydb 数据库所有表的所有权限

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

-- 示例 2:授予用户对特定表的 SELECT, INSERT, UPDATE 权限

GRANT SELECT, INSERT, UPDATE ON mydb.users TO 'myuser'@'localhost';

-- 授予权限后必须刷新权限

FLUSH PRIVILEGES;

```

3. 查看用户权限

```sql

SHOW GRANTS FOR '用户名'@'主机';

```

4. 撤销权限

```sql

REVOKE 权限类型 ON 数据库名.表名 FROM '用户名'@'主机';

REVOKE ALL PRIVILEGES ON mydb.* FROM 'myuser'@'localhost'; -- 示例

FLUSH PRIVILEGES;

```

5. 删除用户

```sql

DROP USER '用户名'@'主机';

```

---

六、 其他实用命令**

1. 查看 MySQL 版本

```sql

SELECT VERSION();

```

2. 显示当前状态信息

```sql

STATUS;

```

3. 执行 SQL 脚本文件

在 MySQL 命令行中:

```sql

SOURCE /path/to/your/file.sql;

```

在系统 Shell 中:

```bash

mysql -u root -p 数据库名 < /path/to/your/file.sql

```

4. 将查询结果导出到文件

在 MySQL 命令行中:

```sql

SELECT * FROM users INTO OUTFILE '/tmp/users.csv'

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

LINES TERMINATED BY '\n';

```

(需要 `FILE` 权限,且输出路径 MySQL 要有写入权限)

---

**总结与注意事项**

1. **分号是必须的**:绝大多数 SQL 语句必须以分号 `;` 结尾才能执行。

2. **大小写**:SQL 关键字(如 `SELECT`, `FROM`) 不区分大小写。但数据库名、表名、列名在 Linux/Unix 系统下是**区分大小写**的,在 Windows 下不区分。建议始终保持一致,使用小写和下划线是一种好习惯(如 `my_database`)。

3. **反引号 ``**:如果数据库/表/列名是 MySQL 的保留字(如 `order`, `user`),必须用反引号括起来。

```sql

CREATE TABLE `order` (`id` INT, `user` VARCHAR(50)); -- 正确

CREATE TABLE order (id INT, user VARCHAR(50)); -- 会报错

```

4. **WHERE 子句**:在执行 `UPDATE` 和 `DELETE` 时,**务必**仔细检查 `WHERE` 条件,否则可能误修改或误删大量数据。

5. **备份!备份!备份!**:在执行任何可能破坏数据的操作(如 `DROP`, `DELETE`, `UPDATE`)前,确保你有可用的备份。

另外搭配一款非常便捷的MYSQL备份工具,可定时备份、异地备份,MYSQL导出导入。可本地连接LINUX里的MYSQL,简单便捷。可以大大地提高工作效率喔。


MySQL处理中文排序,除了拼音还能怎么办?一文掌握拼音与笔画排序的所有奥秘
一小时速通MySQL:零基础入门到精通,看这篇就够了(下篇)
一小时速通MySQL:零基础入门到精通,看这篇就够了(上篇)
MySQL小白下载指南 (以 Windows 为例)
MySQL安装太难?看完这篇就够了!小白专属下载安装指南
MySQL清空表数据,你用DELETE还是TRUNCATE?一文讲清两者核心差异与正确使用场景
从查询崩溃到丝滑流畅:详解MySQL性能优化的核心路径与高频实战技巧
MySQL性能优化漫谈:从金字塔法则到避坑指南,一位老DBA的架构思维与实践总结
千万级数据何去何从?一文读懂MySQL分库分表面试与工程实践的核心要点
mysql2,用于与 MySQL 数据库进行交互