数据的增删改查

罗大富 BigRich大约 4 分钟MySQL数据库

对数据表的操作我们已经学会了,接下来,我们就可以来学习对数据的操作,也就是对数据进行增删改查。

增删改查简称:CRUD(创建:Create, 读取:Read,更新:Update,删除: Delete)是对于存储的信息可以进行操作的同义词。是一个对四种操作持久化信息的基本操作的助记符。CRUD 通常是指适用于存于数据库或数据存储器上的信息的操作,不过也可以应用在高层级的应用操作,例如通过在设置状态字段并标记删除的而并非移除数据的伪删除。

在 MySQL 中,数据操作是对数据库中的数据进行增加、查询、修改和删除等操作,这些操作是数据库管理和维护的核心内容。MySQL 提供了一系列的数据操作命令,用于实现这些功能。以下是 MySQL 中常见的数据操作:

1. 插入数据(INSERT)

使用 INSERT INTO 命令可以向数据表中插入新的数据行。语法如下:

INSERT INTO 表名 (列名 1, 列名 2, ...) VALUES (value1, value2, ...);

之前我们创建了学生表,我们向学生表中插入一行数据,也就是一名学生的信息:李华,17岁,男,成绩 72.5 分

INSERT INTO students(id, name, age, score, gender) VALUES (1, '李华', 17, 72.5, TRUE);

注意

名字是字符串,所以 李华 应该被引号包裹。

mysql> INSERT INTO students(id, name, age, score, gender) VALUES (1, '李华', 17, 72.5, TRUE);
Query OK, 1 row affected (0.00 sec)

2. 查询数据(SELECT)

使用 SELECT 命令可以从数据表中检索数据。语法如下:

SELECT column1, column2, ... FROM table_name WHERE condition;

查询语句中你可以使用一个或者多个表,表之间使用逗号分割,并使用 WHERE 语句来设定查询条件。SELECT 命令可以读取一条或者多条记录。你可以使用:

  1. 星号 * 来代替其他字段,SELECT语句会返回表的所有字段数据;
  2. 使用 WHERE 语句来包含任何条件。
  3. 使用 LIMIT 属性来设定返回的记录数。
  4. 通过 OFFSET 指定 SELECT 语句开始查询的数据偏移量。默认情况下偏移量为 0。

比如,我们可以向 student 表中多插入几行数据,然后使用 select 命令,获取 students 表中所有的记录,代码如下:

INSERT INTO students(id, name, age, score, gender) VALUES (2, '王丽', 19, 92.5, FALSE);
INSERT INTO students(id, name, age, score, gender) VALUES (3, '李力', 15, 92.5, TRUE);
INSERT INTO students(id, name, age, score, gender) VALUES (4, '张三', 15, 62.5, TRUE);

SELECT * FROM students;

然后,我们就能获取到 students 表中所有的数据了。

mysql> SELECT * FROM students;
+------+--------+------+-------+--------+
| id   | name   | age  | score | gender |
+------+--------+------+-------+--------+
|    1 | 李华   |   17 |  72.5 |      1 |
|    2 | 李力   |   15 |  92.5 |      1 |
|    2 | 王丽   |   19 |  92.5 |      0 |
+------+--------+------+-------+--------+
3 rows in set (0.00 sec)

我们也可以使用 WHERE 命令设置查询条件,比如查询分数大于 90 分的,或者性别为女性的等等。

mysql> SELECT * FROM students WHERE score > 90;
+------+--------+------+-------+--------+
| id   | name   | age  | score | gender |
+------+--------+------+-------+--------+
|    2 | 李力   |   15 |  92.5 |      1 |
|    2 | 王丽   |   19 |  92.5 |      0 |
+------+--------+------+-------+--------+
2 rows in set (0.01 sec)

mysql> SELECT * FROM students WHERE gender = FALSE;
+------+--------+------+-------+--------+
| id   | name   | age  | score | gender |
+------+--------+------+-------+--------+
|    2 | 王丽   |   19 |  92.5 |      0 |
+------+--------+------+-------+--------+
1 row in set (0.00 sec)

当然,你也可以同时查询多个条件,只需要使用 ANDOR 来表示不同条件之间的关系即可,比如,查询成绩大于 90 的男生,

mysql> SELECT * FROM students WHERE gender = TRUE AND score > 90;
+------+--------+------+-------+--------+
| id   | name   | age  | score | gender |
+------+--------+------+-------+--------+
|    2 | 李力   |   15 |  92.5 |      1 |
+------+--------+------+-------+--------+
1 row in set (0.00 sec)

3. 更新数据(UPDATE)

使用 UPDATE 命令可以修改数据表中的现有数据行。语法如下:

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

比如,我们可以把李华的成绩改成 100 分,代码如下:

UPDATE students SET score = 100 WHERE name = '李华';

结果如下:

mysql> select * from students where name = '李华';
+------+--------+------+-------+--------+
| id   | name   | age  | score | gender |
+------+--------+------+-------+--------+
|    1 | 李华   |   17 |  72.5 |      1 |
+------+--------+------+-------+--------+
1 row in set (0.00 sec)

mysql> UPDATE students SET score = 100 WHERE name = '李华';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from students where name = '李华';
+------+--------+------+-------+--------+
| id   | name   | age  | score | gender |
+------+--------+------+-------+--------+
|    1 | 李华   |   17 |   100 |      1 |
+------+--------+------+-------+--------+
1 row in set (0.00 sec)

4. 删除数据(DELETE)

使用 DELETE FROM 命令可以从数据表中删除符合条件的数据行。请小心使用此命令,删除操作是不可逆的。语法如下:

DELETE FROM table_name WHERE condition;

比如,删除李华的个人信息:

DELETE FROM students WHERE name = '李华';

注意

在实际开发中,因为数据具有一定的商业价值,在正常情况下,数据库中的数据是禁止删除的,所以,在实际开发中一般会通过一个是否显示字段来表示该记录已被删除,而不是删除掉该记录。

  1. 排序数据(ORDER BY):使用 ORDER BY 子句可以对查询结果进行排序。示例:
SELECT * FROM 表格名 ORDER BY 列名 排序方式

排序方式有升序(ASC)和降序(DESC)两种,默认为升序。我们可以使用排序让 students 中的数据按照 年龄 降序排列,代码如下:

SELECT * FROM students ORDER BY age DESC;
上次编辑于:
贡献者: Luo