数据的增删改查
对数据表的操作我们已经学会了,接下来,我们就可以来学习对数据的操作,也就是对数据进行增删改查。
增删改查简称: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 命令可以读取一条或者多条记录。你可以使用:
- 星号
*
来代替其他字段,SELECT语句会返回表的所有字段数据; - 使用 WHERE 语句来包含任何条件。
- 使用 LIMIT 属性来设定返回的记录数。
- 通过
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)
当然,你也可以同时查询多个条件,只需要使用 AND
和 OR
来表示不同条件之间的关系即可,比如,查询成绩大于 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 = '李华';
注意
在实际开发中,因为数据具有一定的商业价值,在正常情况下,数据库中的数据是禁止删除的,所以,在实际开发中一般会通过一个是否显示字段来表示该记录已被删除,而不是删除掉该记录。
排序数据(ORDER BY)
:使用 ORDER BY 子句可以对查询结果进行排序。示例:
SELECT * FROM 表格名 ORDER BY 列名 排序方式
排序方式有升序(ASC)和降序(DESC)两种,默认为升序。我们可以使用排序让 students
中的数据按照 年龄
降序排列,代码如下:
SELECT * FROM students ORDER BY age DESC;