当前位置: 首页 > article >正文

滚雪球学MySQL[2.2讲]:基本数据操作详解:插入、查询、更新与删除

全文目录:

    • 前言
    • 2.2 基本数据操作
      • 1. 插入数据(INSERT)
        • 基本语法
        • 示例1:向所有列插入数据
        • 示例2:插入部分列的数据
      • 2. 查询数据(SELECT)
        • 基本语法
        • 示例1:查询所有数据
        • 示例2:查询特定列的数据
        • 示例3:使用条件过滤查询
      • 3. 更新数据(UPDATE)
        • 基本语法
        • 示例1:更新特定行的数据
        • 示例2:更新多列数据
        • 小心误区
      • 4. 删除数据(DELETE)
        • 基本语法
        • 示例1:删除特定行的数据
        • 示例2:删除符合条件的多行数据
        • 示例3:删除所有数据
    • 拓展:批量操作与事务管理
        • 示例:事务的使用
    • 结语与下期预告

前言

在上一期的学习中,我们深入探讨了MySQL数据库与表的基本操作(2.1),从创建数据库、创建表到修改表结构等基础内容。通过这些操作,我们为存储和管理数据打下了基础。掌握了数据库和表的操作后,下一步就是如何在这些表中进行数据的增删改查,这也是数据库管理中最为核心的部分。

本期内容将重点介绍MySQL中的基本数据操作,包括插入数据(INSERT)、查询数据(SELECT)、更新数据(UPDATE)和删除数据(DELETE)。这四种操作在日常开发中非常常见,通过本篇内容,你将全面掌握如何操作数据库中的数据,并通过具体的案例帮助你更好地理解与实践。

在本期内容的学习结束后,下一期将进一步探讨MySQL中的数据过滤与排序(2.3),帮助你更高效地从数据库中提取所需信息。

2.2 基本数据操作

在数据库操作中,数据的增删改查是最基础的功能,通常使用SQL语句来进行这些操作。MySQL提供了多种灵活的方式来操作数据,我们将逐一介绍这些基本操作,并通过示例进行深入讲解。

1. 插入数据(INSERT)

INSERT语句用于向数据库表中插入新的数据行。它有两种常见的使用方式:一种是向所有列插入数据,另一种是向指定列插入数据。

基本语法
INSERT INTO 表名 (1,2, ...) VALUES (1,2, ...);
示例1:向所有列插入数据

假设我们有一个名为students的表,其结构如下:

CREATE TABLE students (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50),
  age INT,
  major VARCHAR(50)
);

students表中插入一行数据:

INSERT INTO students (name, age, major) VALUES ('Alice', 20, 'Computer Science');

在这个例子中,我们指定了nameagemajor三列的值,数据库会自动为id列生成唯一的值(因为id是自增的)。

示例2:插入部分列的数据

如果你不需要插入所有列的数据,可以只为部分列提供值,其他未指定的列会被设置为默认值(如果存在默认值)。

INSERT INTO students (name, major) VALUES ('Bob', 'Mathematics');

在此示例中,age列将使用默认值或为空值(NULL),而id列仍然会自动递增。

2. 查询数据(SELECT)

SELECT语句用于从数据库表中查询数据,是最常用的SQL语句之一。它可以灵活地根据条件从数据库中提取数据,并且支持排序、分组、聚合等功能。

基本语法
SELECT1,2, ... FROM 表名 WHERE 条件;
示例1:查询所有数据

查询students表中的所有数据:

SELECT * FROM students;

*表示选择所有列,执行结果会显示表中的所有记录。

示例2:查询特定列的数据

如果只想查询特定列,可以指定列名:

SELECT name, major FROM students;

这个查询将返回students表中的namemajor列,其他列则不会显示。

示例3:使用条件过滤查询

你还可以在查询中使用WHERE子句来过滤数据。例如,查询所有age大于20的学生:

SELECT * FROM students WHERE age > 20;

这个查询只会返回那些age大于20的记录。

3. 更新数据(UPDATE)

UPDATE语句用于更新表中已有的数据。你可以指定更新哪些行,并为这些行设置新的值。使用UPDATE时必须小心,避免在没有WHERE条件的情况下更新所有记录。

基本语法
UPDATE 表名 SET1 =1,2 =2, ... WHERE 条件;
示例1:更新特定行的数据

假设我们想要更新students表中id为1的学生的年龄:

UPDATE students SET age = 21 WHERE id = 1;

这个语句将id为1的那一行的age列值更新为21。

示例2:更新多列数据

你也可以同时更新多列:

UPDATE students SET age = 22, major = 'Physics' WHERE id = 2;

该语句会更新id为2的记录,将age设为22,将major设为Physics

小心误区

注意:如果忘记加WHERE子句,所有行的数据都会被更新。例如,以下语句会更新表中的所有记录,将每个学生的age都设为25:

UPDATE students SET age = 25;

因此,在执行UPDATE操作时,一定要慎重使用WHERE条件。

4. 删除数据(DELETE)

DELETE语句用于从表中删除指定的行数据。与UPDATE类似,删除操作也应该慎用,特别是在没有WHERE条件时,可能会删除表中的所有数据。

基本语法
DELETE FROM 表名 WHERE 条件;
示例1:删除特定行的数据

假设我们要删除id为3的学生记录:

DELETE FROM students WHERE id = 3;

此语句会删除students表中id为3的那一行。

示例2:删除符合条件的多行数据

如果需要删除多条符合条件的数据,比如删除所有age小于18的学生:

DELETE FROM students WHERE age < 18;

此操作会删除students表中所有age小于18的记录。

示例3:删除所有数据

慎重使用! 如果你要清空表中的所有数据,可以不加WHERE条件:

DELETE FROM students;

此语句将删除表中所有数据,但表的结构不会受影响。如果你想彻底清空表并重置自增主键,可以使用TRUNCATE

TRUNCATE TABLE students;

TRUNCATEDELETE速度更快,但会重置自增列计数。

拓展:批量操作与事务管理

在实际应用中,很多情况下你需要批量操作数据或确保一组操作要么全部成功,要么全部失败。MySQL通过事务(transaction)来保证这种操作的原子性。

示例:事务的使用

假设你在处理多个操作时,希望这些操作要么全部成功,要么全部撤销。例如,转账操作中涉及从一个账户扣款并向另一个账户存款:

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

COMMIT;

如果任何一步失败,都可以通过ROLLBACK撤销:

ROLLBACK;

事务确保了数据的一致性,是数据库操作中非常重要的功能。

结语与下期预告

通过本期的学习,你已经掌握了MySQL中最基本的四种数据操作:插入(INSERT)、查询(SELECT)、更新(UPDATE)和删除(DELETE)。这些操作是数据库日常操作中最常用的,也是掌握数据库管理的核心技能。

在下期内容中,我们将深入探讨MySQL中的数据过滤与排序(2.3),帮助你更精准地获取和管理数据。届时你将学习如何通过WHERE子句进行复杂条件过滤、如何使用ORDER BY对结果集排序以及如何通过LIMITOFFSET分页查询结果。敬请期待!


http://www.kler.cn/news/329167.html

相关文章:

  • Linux 线程同步
  • 影院管理革新:小徐的Spring Boot应用
  • java 选择排序
  • 【易社保-注册安全分析报告】
  • 【中间件】fastDFS的相关知识
  • oracle解决关联查询报invalid number问题
  • 鸿蒙NEXT开发-组件事件监听和状态管理(基于最新api12稳定版)
  • calibre-web默认左上角字体修改
  • 【分布式微服务云原生】有哪些流行的微服务架构以及各自的组件,怎么完成服务治理等。
  • Spring MVC 常用注解
  • 深度学习自编码器 - 分布式表示篇
  • 鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发
  • 《算法岗面试宝典》重磅发布!
  • Java之方法的使用
  • 《OpenCV》—— 指纹验证
  • DAY18||530.二叉搜索树的最小绝对值差 |501.二叉搜索树中的众数| 236.二叉树的最近公共祖先
  • 车辆重识别(2021ICML改进的去噪扩散概率模型)论文阅读2024/9/29
  • CS 工作笔记:SmartEdit 里创建的是 CMS Component
  • 【Spring】深入理解控制反转-IOC
  • Linux网络操作命令与函数全面总结
  • 机器视觉工程师一直做调试,维护岗位,想转岗软件方面C#从零开始,快则三年不到,慢则一辈子不会
  • YOLO11改进 | 检测头 | 小目标遮挡物性能提升的检测头Detect_MultiSEAM【完整代码】
  • 好玩的水表电表
  • we3.0里的钱包是什么?
  • Linux——pod的控制器
  • AR 眼镜之-蓝牙电话-来电铃声与系统音效
  • PO2GO、PO2Vec论文阅读与模型复现报告
  • 【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】
  • 【环保背景高管1009】2022顶刊论文数据,环保背景高管对投资的影响探究
  • 初识算法 · 双指针(1)