MySQL数据库的增删改查(初阶)

目录

插入数据(Insert)

单行插入

批量插入

查询数据(Select)

基本查询

别名

去重:DISTINCT

条件查询

[排序:ORDER BY](#排序:ORDER BY)

分页查询:LIMIT

更新数据(Update)

删除数据(Delete)


插入数据(Insert)

单行插入

sql 复制代码
INSERT INTO students (name, age, grade) VALUES ('Alice', 25, 'A');

批量插入

sql 复制代码
INSERT INTO students (name, age, grade)
VALUES
    ('Bob', 30, 'B'),
    ('Charlie', 22, 'C'),
    ('David', 28, 'A');

查询数据(Select)

基本查询

基本查询使用SELECT语句,你可以检索表中的数据。

sql 复制代码
SELECT * FROM students;

上面的*代表的是查询所有列,如果要查询指定列如下:

比如我要查询一个stuId,stuName

sql 复制代码
SELECT stuId,stuName FROM students;

别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称:

sql 复制代码
SELECT id, name, chinese + math + english 总分 FROM exam_result;

去重:DISTINCT

使用DISTINCT关键字对某列数据进行去重:

sql 复制代码
-- 98 分重复了
SELECT math FROM exam_result;
+--------+
| math |
+--------+
|     98 |
|     78 |
|     98 |
|     84 |
|     85 |
|     73 |
|     65 |
+--------+

去重后面的结果:

sql 复制代码
-- 去重结果
SELECT DISTINCT math FROM exam_result;
+--------+
| math |
+--------+
|     98 |
|     78 |
|     84 |
|     85 |
|     73 |
|     65 |
+--------+

条件查询

条件查询使用WHERE子句来筛选数据。

sql 复制代码
SELECT * FROM students WHERE grade = 'A';

排序:ORDER BY

  1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

  2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

sql 复制代码
-- 查询同学姓名和 qq_mail,按 qq_mail 排序显示
SELECT name, qq_mail FROM student ORDER BY qq_mail;
SELECT name, qq_mail FROM student  ORDER BY qq_mail DESC;

使用表达式及别名排序:

sql 复制代码
-- 查询同学及总分,由高到低
SELECT name, chinese + english + math FROM exam_result 
 ORDER BY chinese + english + math DESC;
SELECT name, chinese + english + math total FROM exam_result 
 ORDER BY total DESC;

还可以对多个字段进行排序,排序优先级随书写顺序

sql 复制代码
-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result 
 ORDER BY math DESC, english, chinese;

分页查询:LIMIT

按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

sql 复制代码
-- 第 1 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 0;
-- 第 2 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 3;
-- 第 3 页,如果结果不足 3 个,不会有影响
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 6;

如果是只限制返回前三条数据,我们可以这样:

sql 复制代码
SELECT * FROM students ORDER BY age DESC LIMIT 3;

更新数据(Update)

使用UPDATE语句可以更新表中的数据。

sql 复制代码
UPDATE students SET age = 26 WHERE name = 'Alice';

删除数据(Delete)

使用DELETE语句可以从表中删除数据。

java 复制代码
DELETE FROM students WHERE name = 'Bob';

删除一整张表:

sql 复制代码
-- 删除整张表数据
-- 准备测试表
DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (
 id INT,
 name VARCHAR(20)
);
-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');
-- 删除整表数据
DELETE FROM for_delete;
相关推荐
杉之1 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
morris1311 小时前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁
hycccccch2 小时前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
bobz9652 小时前
k8s 怎么提供虚拟机更好
后端
这个懒人2 小时前
深入解析Translog机制:Elasticsearch的数据守护者
数据库·elasticsearch·nosql·translog
Yan-英杰3 小时前
【百日精通JAVA | SQL篇 | 第二篇】数据库操作
服务器·数据库·sql
bobz9653 小时前
nova compute 如何创建 ovs 端口
后端
用键盘当武器的秋刀鱼3 小时前
springBoot统一响应类型3.5.1版本
java·spring boot·后端
NineData3 小时前
NineData云原生智能数据管理平台新功能发布|2025年3月版
数据库
Asthenia04124 小时前
从迷宫到公式:为 NFA 构造正规式
后端