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

news/2024/10/4 23:24:38/

全文目录:

    • 前言
    • 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.ppmy.cn/news/1534647.html

相关文章

力扣10.1

983. 最低票价 在一个火车旅行很受欢迎的国度&#xff0c;你提前一年计划了一些火车旅行。在接下来的一年里&#xff0c;你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 火车票有 三种不同的销售方式 &#xff1a; 一张 为期一天 的通行证售…

ECCV 2024 | 融合跨模态先验与扩散模型,快手处理大模型让视频画面更清晰!

计算机视觉领域顶级会议 European Conference on Computer Vision&#xff08;ECCV 2024&#xff09;将于9月29日至10月4日在意大利米兰召开&#xff0c;快手音视频技术部联合清华大学所发表的题为《XPSR: Cross-modal Priors for Diffusion-based Image Super-Resolution》——…

Windows 开发工具使用技巧

Windows 开发工具使用技巧 1. Visual Studio 快捷键&#xff1a;掌握常用快捷键&#xff0c;比如 F5&#xff08;启动调试&#xff09;&#xff0c;Ctrl K, Ctrl C&#xff08;注释选择代码&#xff09;&#xff0c;Ctrl K, Ctrl U&#xff08;取消注释&#xff09;。 调…

Vue2如何在网页实现文字的逐个显现

目录 Blue留言&#xff1a; 效果图&#xff1a; 实现思路&#xff1a; 代码&#xff1a; 1、空字符串与需渲染的字符串的定义 2、vue的插值表达式 3、函数 4、mounted()函数调用 结语&#xff1a; Blue留言&#xff1a; 在国庆前夕&#xff0c;突发奇想&#xff0c;我想…

在C#中使用Redis实现高效消息队列

使用Redis实现C#中的消息队列 Redis是一种开源的内存数据结构存储系统,因其高性能和灵活性被广泛用于缓存、数据库和消息队列等场景。本文将详细介绍如何在C#中使用Redis实现一个简单的消息队列,涵盖环境准备、代码实现和使用示例。 1. 环境准备 1.1 安装Redis 首先,确保…

Linux驱动开发(速记版)--设备树插件

第六十八章 设备树插件介绍 Linux 4.4之后引入了动态设备树&#xff0c;其中的设备树插件&#xff08;Device Tree Overlay&#xff09;是一种扩展机制&#xff0c;允许在运行时动态添加、修改或删除设备节点和属性。 设备树插件机制通过DTS&#xff08;设备树源文件&#xff0…

C# Windows EventHandler事件的使用

在实现项目中有这样一个使用场景&#xff0c;在一个独立的类库中&#xff0c;它没有对其他类库的引用。所以它能调用的资源有限。这时想在这个类库的一个窗体中的一个按钮要实现一个功能时就会发现有很多要调用的资源没有&#xff0c;无法实现业务逻辑。这时怎么办&#xff1f;…

什么是 Angular 开发中的 Dumb components

Dumb components&#xff0c;在 Angular 开发中也被称为 Presentational components&#xff0c;它们的主要职责是通过展示数据和触发事件&#xff0c;把业务逻辑和 UI 表现分离开来。Dumb components 只通过 Input() 接收数据&#xff0c;Output() 向外发送事件&#xff0c;不…