数据操作 DML

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 平时写 SQL,插入、更新、删除这几个操作用得可太频繁了。这篇文章就带你一步步练一下,怎么往表里加数据,怎么改字段,怎么删指定行,顺便聊聊 truncate 快速清空表的用法。例子简单清楚,还有对应的练习题,跟着敲一遍就会用啦~

作者:IvanCodes
日期:2025年6月6日

核心目标: 学习如何在表中插入、更新和删除数据行。

前提: 操作前需使用 use database_name; 选择目标数据库。以下示例假设已选定数据库。

示例表结构 (供参考):

create table students (
student_id int,
first_name varchar(50),
last_name varchar(50),
major varchar(50),
gpa decimal(4, 2)
);

create table products (
product_id int,
product_name varchar(100),
price decimal(10, 2),
stock_quantity int
);
AI 代码解读

一、插入数据 (insert)

  • 作用: 向表中添加新的数据行。

  • 指定列插入 (推荐):
    明确指定要插入数据的列名和对应的值。列与值的顺序必须一致。

insert into table_name (column1, column2, ...)
values (value1, value2, ...);
AI 代码解读

示例:

insert into students (student_id, first_name, last_name, major, gpa)
values (101, '张', '三', '计算机科学', 3.50);

insert into products (product_id, product_name, price)
values (501, '笔记本电脑', 5999.99); -- stock_quantity 会是 NULL 或默认值
AI 代码解读
  • 按表结构顺序插入所有列 (不推荐):
    不指定列名,按表定义顺序提供所有列的值。
insert into table_name values (value_for_col1, value_for_col2, ...);
AI 代码解读

示例: (假设 students 列顺序为 id, first, last, major, gpa)

insert into students values (102, '李', '四', '物理学', 3.20);
AI 代码解读
  • 一次插入多行 (效率更高):
    values 后提供多个用逗号分隔的值元组。
insert into table_name (column1, column2, ...)
values
(value1a, value2a, ...),
(value1b, value2b, ...),
(value1c, value2c, ...);
AI 代码解读

示例:

insert into products (product_id, product_name, price, stock_quantity)
values
(502, '无线鼠标', 129.00, 150),
(503, '机械键盘', 499.50, 80),
(504, '显示器', 1200.00, 50);
AI 代码解读

二、更新数据 (update)

  • 作用: 修改表中已存在的数据行。

  • 语法:

update table_name
set column1 = new_value1,
column2 = new_value2,
...
[where condition;] -- !!! 极其重要:指定要更新哪些行 !!!
AI 代码解读
  • !!! 警告:如果省略 where 子句,将更新表中的 所有 行!务必万分小心 !!!

  • 示例:

-- 更新学号为 101 的学生的专业
update students
set major = '软件工程'
where student_id = 101;

-- 将所有计算机科学专业学生的 GPA 增加 0.1
update students
set gpa = gpa + 0.1
where major = '计算机科学';

-- 更新产品 ID 为 502 的价格和库存
update products
set price = 135.00,
stock_quantity = stock_quantity - 10
where product_id = 502;

-- !!! 危险示例:将所有产品价格设为 0 (因为没有 WHERE) !!!
-- update products set price = 0.00; -- 极度危险操作!
AI 代码解读

三、删除数据 (delete)

  • 作用: 从表中删除数据行。

  • 语法:

delete from table_name [where condition]; -- !!! 极其重要:指定要删除哪些行 !!!
AI 代码解读
  • !!! 警告:如果省略 where 子句,将删除表中的 所有 行!务必万分小心 !!!

  • 示例:

-- 删除学号为 102 的学生记录
delete from students where student_id = 102;

-- 删除所有 GPA 低于 2.0 的学生记录
delete from students where gpa < 2.0;

-- 删除库存为 0 的产品记录
delete from products where stock_quantity = 0;

-- !!! 危险示例:删除 students 表中的所有记录 (因为没有 WHERE) !!!
-- delete from students; -- 极度危险操作!
AI 代码解读

四、清空表数据 (truncate table)

  • 作用: 快速删除表中的 所有 行。通常比无 where 条件的 delete 更快。

  • 语法:

truncate table table_name;
AI 代码解读
  • 特点:

    • 速度快。
    • 通常会重置自增列的计数器。
    • 操作可能无法回滚(属于 DDL 特性)。
    • 不触发 delete 触发器。
  • 示例:

-- 快速清空临时日志表
truncate table temp_logs;
AI 代码解读

练习题

假设你已创建 studentsproducts 表,并可能已插入部分数据。

初始数据参考 (仅供理解题目背景):

students 表 (可能包含):

student_id first_name last_name major gpa
101 计算机科学 3.50
103 计算机科学 3.80
104 化学 2.90

products 表 (可能包含):

product_id product_name price stock_quantity
501 笔记本电脑 5999.99 20
502 无线鼠标 129.00 150
503 机械键盘 499.50 80
505 U盘 64GB 65.00 200

请编写 SQL 语句完成以下 DML 操作:

  1. students 表插入一条新记录:学号 107,姓名 '钱 七',专业 '金融学',GPA 3.75。
insert into students (student_id, first_name, last_name, major, gpa) values (107, '钱', '七', '金融学', 3.75);
AI 代码解读
  1. products 表一次性插入两条记录:

    • 产品 ID 506, 名称 '蓝牙耳机', 价格 299.00, 库存 120
    • 产品 ID 507, 名称 '充电宝', 价格 150.00, 库存 300
insert into products (product_id, product_name, price, stock_quantity) values
(506, '蓝牙耳机', 299.00, 120),
(507, '充电宝', 150.00, 300);
AI 代码解读
  1. students 表中学号为 103 的学生的 GPA 更新为 3.90。
update students set gpa = 3.90 where student_id = 103;
AI 代码解读
  1. products 表中所有价格低于 200 元的产品的库存量增加 50。
update products set stock_quantity = stock_quantity + 50 where price < 200.00;
AI 代码解读
  1. products 表中产品 ID 为 503 '机械键盘' 的价格降低 50 元,同时名称修改为 '游戏机械键盘'。
update products set price = price - 50, product_name = '游戏机械键盘' where product_id = 503;
AI 代码解读
  1. 删除 students 表中学号为 104 的学生记录。
delete from students where student_id = 104;
AI 代码解读
  1. 删除 products 表中库存量少于 100 的所有产品记录。
delete from products where stock_quantity < 100;
AI 代码解读
  1. (如果需要练习清空) 使用 truncate 命令清空 students 表。
-- truncate table students;
AI 代码解读
目录
打赏
0
1
1
0
1
分享
相关文章
|
3月前
|
2025 版 Java 零基础入门到精通实操指南
这篇文章为零基础学习者提供了Java入门的全面指南。首先介绍了Java的特点和用途,然后详细讲解了环境搭建步骤(JDK安装、环境变量配置和IDE选择),并以&quot;Hello World&quot;程序为例演示了开发流程。文章还系统性地讲解了Java核心语法,包括变量与数据类型、运算符、控制流语句、数组和方法等基础知识,以及面向对象编程和异常处理的概念。通过代码示例帮助读者理解和实践,最后建议掌握基础后可进一步学习Java高级特性和框架。文中还提供了代码获取方式和关注入口,适合Java初学者系统学习。
631 2
端午出游高定:通义灵码+高德 MCP 10 分钟定制出游攻略
本文介绍了如何使用通义灵码编程智能体和高德MCP 2.0制作北京端午3天旅行攻略页面。首先需下载通义灵码AI IDE并获取高德申请的key,通过添加MCP服务、生成travel_tips.html文件完成初步攻略制作。用户可自定义页面风格、固定基础功能页面生成,并扩展MCP服务以满足多样化需求。文章还详细描述了开发专属MCP服务的过程,包括借助通义灵码编写代码、部署服务及调用工具,最终实现个性化旅游攻略生成。此外,提供了相关资料和参考链接,方便读者深入了解和实践。
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发四
本文介绍了Web组件开发与性能优化的相关内容。在Web组件开发部分,涵盖创建组件、设置样式与属性、添加事件和方法以及场景示例,如动态播放视频。性能提升方面,推荐使用数据懒加载、条件渲染替代显隐控制、Column/Row替代Flex、设置List组件宽高及调整cachedCount减少滑动白块等方法,以优化应用性能与用户体验。
164 56
成功解决centos7安装docker时 报缺 少container-selinux和fuse-overlayfs包
成功解决centos7安装docker时 报缺 少container-selinux和fuse-overlayfs包
5520 0
成功解决centos7安装docker时 报缺 少container-selinux和fuse-overlayfs包
数据控制语言 DCL
本篇文章详细介绍了 MySQL 中 DCL(数据控制语言)的核心命令,包括用户账户的创建、修改、删除 (CREATE USER, ALTER USER, DROP USER),以及数据库权限的授予与撤销 (GRANT, REVOKE)。文章通过清晰语法和实际示例,指导读者如何设置强密码、限制登录主机、精细授权数据库对象,帮助构建更安全可控的数据库系统。结合最佳实践与练习题,本教程适合 DBA 入门者和开发人员快速掌握 MySQL 权限管理能力。
124 1
MySQL 常用函数
我们这次全面梳理 MySQL 中的常用函数,涵盖 聚合函数、字符串函数、日期时间函数、数学函数 和 控制流函数 等五大类。每类函数均配有语法说明与实用示例,帮助读者提升数据处理能力,如统计分析、文本处理、日期计算、条件判断等。文章结尾提供了丰富的实战练习,帮助读者巩固和应用函数技巧,是进阶 SQL 编程与数据分析的实用工具手册。
248 2
一、数据库和表的基本操作 DDL
在使用 MySQL 做项目或写业务逻辑时,离不开对数据库和数据表的基本操作。我们这次从创建数据库讲起,一步步带你掌握如何新建表、查看表结构、修改字段、重命名、删除等常用命令。每一个知识点都有示例代码可直接上手,还准备了一套完整的动手练习,帮助你把概念变成熟练技能。如果你刚入门 SQL,或者想系统梳理一遍 DDL 基础,这篇会是不错的起点。
208 0
Sentinelone如何防范供应链攻击
供应链攻击是一种针对供应链薄弱环节的网络安全威胁,通过破坏信任关系,攻击者间接入侵企业系统。此类攻击利用软件更新、硬件生产或第三方供应商的漏洞,潜伏时间长且影响广泛。例如,塔吉特数据泄露事件中,黑客通过暖通空调供应商侵入系统,导致4000万张信用卡信息被盗。为防范此类攻击,企业需强化特权访问管理、实施零信任架构、培训员工并使用身份访问管理(IAM)解决方案。通过部署蜜罐令牌和持续监控网络流量,可早期检测异常行为。供应链攻击因利用信任关系且影响范围广而极具危险性,企业应主动防御以降低风险。
176 6
第三方API的稳定性如何保障?
第三方API的稳定性对电商至关重要,直接影响业务连续性和用户体验。为确保稳定,可采取以下措施:选择可靠提供商、评估技术架构高可用性、实现限流重试机制、实时监控预警、充分测试、优化网络连接、使用API网关、保持与提供商沟通、制定应急预案及定期评估改进。这些方法能有效提升API稳定性,保障业务高效运行和用户满意度。
94 0
在MySQL Shell里 重启MySQL 8.4实例
在MySQL Shell里 重启MySQL 8.4实例
131 2

数据库

+关注
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问