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

从入门到熟练掌握MySQL:聚焦增删改查操作

目录

    • 一、入门:基础操作
      • (一)创建数据库和表
      • (二)插入数据(Create)
      • (三)查询数据(Read)
      • (四)更新数据(Update)
      • (五)删除数据(Delete)
    • 二、进阶:优化增删改查操作
      • (一)批量操作
      • (二)使用事务
      • (三)索引优化
      • (四)查询优化
    • 三、高级:结合实际应用
      • (一)分页查询
      • (二)联合查询
      • (三)视图和存储过程
    • 四、总结

在数据库管理中,增删改查(CRUD,即Create、Read、Update、Delete)是核心操作。无论是初学者还是资深开发者,熟练掌握这些操作都是至关重要的。本文将从MySQL的基础操作入手,逐步深入,帮助你从入门到熟练掌握增删改查操作。

一、入门:基础操作

(一)创建数据库和表

在开始增删改查之前,我们需要创建一个数据库和表。假设我们要管理一个学生信息表,包含学号、姓名和年龄。

  1. 创建数据库

    CREATE DATABASE studentdb;
    

    这行代码创建了一个名为studentdb的数据库。

  2. 选择数据库

    USE studentdb;
    

    使用USE语句选择我们刚刚创建的数据库。

  3. 创建表

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

    这里我们创建了一个名为students的表,包含三个字段:id(主键,唯一标识每个学生)、name(学生姓名)和age(学生年龄)。

(二)插入数据(Create)

插入数据是数据库操作中最常见的任务之一。向表中添加新记录时,使用INSERT INTO语句。

  1. 插入单条数据

    INSERT INTO students (id, name, age) VALUES (1, '张三', 18);
    

    这行代码向students表中插入了一条记录,学号为1,姓名为“张三”,年龄为18。

  2. 插入多条数据

    INSERT INTO students (id, name, age) VALUES (2, '李四', 20), (3, '王五', 19);
    

    这行代码一次性插入了两条记录,分别是学号为2的“李四”和学号为3的“王五”。

(三)查询数据(Read)

查询数据是数据库操作中另一个重要任务。使用SELECT语句可以检索表中的数据。

  1. 查询所有数据

    SELECT * FROM students;
    

    这行代码查询students表中的所有记录,返回所有字段的数据。

  2. 查询特定字段

    SELECT name, age FROM students;
    

    这行代码只查询students表中的nameage字段。

  3. 条件查询

    SELECT * FROM students WHERE age > 18;
    

    这行代码查询年龄大于18的学生记录。

(四)更新数据(Update)

更新数据用于修改表中已存在的记录。使用UPDATE语句可以实现这一点。

  1. 更新单条数据

    UPDATE students SET age = 20 WHERE id = 1;
    

    这行代码将学号为1的学生的年龄更新为20。

  2. 更新多条数据

    UPDATE students SET age = age + 1 WHERE age < 20;
    

    这行代码将所有年龄小于20的学生的年龄增加1岁。

(五)删除数据(Delete)

删除数据用于从表中移除记录。使用DELETE语句可以删除指定的记录。

  1. 删除单条数据

    DELETE FROM students WHERE id = 2;
    

    这行代码删除学号为2的学生记录。

  2. 删除多条数据

    DELETE FROM students WHERE age > 19;
    

    这行代码删除所有年龄大于19的学生记录。

二、进阶:优化增删改查操作

(一)批量操作

在实际应用中,我们经常需要批量插入、更新或删除数据。MySQL提供了多种方式来优化这些操作。

  1. 批量插入

    INSERT INTO students (id, name, age) VALUES 
    (4, '赵六', 21),
    (5, '钱七', 22),
    (6, '孙八', 23);
    

    这行代码一次性插入了三条记录,提高了插入效率。

  2. 批量更新

    UPDATE students 
    SET age = CASE idWHEN 4 THEN 22WHEN 5 THEN 23WHEN 6 THEN 24
    END
    WHERE id IN (4, 5, 6);
    

    这行代码根据学号批量更新学生的年龄。

  3. 批量删除

    DELETE FROM students WHERE id IN (4, 5, 6);
    

    这行代码删除学号为4、5、6的学生记录。

(二)使用事务

事务是数据库操作中用于保证数据一致性的机制。通过事务,可以将多个操作组合成一个逻辑单元,要么全部成功,要么全部失败。

  1. 开启事务

    START TRANSACTION;
    
  2. 执行多个操作

    INSERT INTO students (id, name, age) VALUES (7, '周九', 25);
    UPDATE students SET age = 26 WHERE id = 7;
    
  3. 提交事务

    COMMIT;
    

    如果所有操作都成功,使用COMMIT提交事务,使更改生效。

  4. 回滚事务

    ROLLBACK;
    

    如果在操作过程中出现问题,使用ROLLBACK回滚事务,撤销所有更改。

(三)索引优化

索引是提高查询效率的关键。合理使用索引可以显著加快查询速度。

  1. 创建索引

    CREATE INDEX idx_age ON students(age);
    

    这行代码在students表的age字段上创建了一个索引,名为idx_age

  2. 查看索引

    SHOW INDEX FROM students;
    
  3. 删除索引

    DROP INDEX idx_age ON students;
    

(四)查询优化

查询优化是提高数据库性能的重要环节。通过优化查询语句,可以减少查询时间,提高系统响应速度。

  1. 使用EXPLAIN分析查询

    EXPLAIN SELECT * FROM students WHERE age > 18;
    

    这行代码使用EXPLAIN分析查询计划,帮助我们了解查询的执行过程。

  2. 优化查询语句

    • 避免使用SELECT *,只查询需要的字段。
    • 使用索引字段进行查询条件。
    • 避免在查询条件中使用函数,如WHERE YEAR(birthdate) = 2000

三、高级:结合实际应用

(一)分页查询

在处理大量数据时,分页查询是常见的需求。通过LIMITOFFSET可以实现分页。

  1. 分页查询

    SELECT * FROM students LIMIT 10 OFFSET 0;
    

    这行代码查询students表的前10条记录,从第0条开始。

  2. 多页查询

    SELECT * FROM students LIMIT 10 OFFSET 10;
    

    这行代码查询students表的第11到20条记录。

(二)联合查询

联合查询用于从多个表中检索数据。使用JOIN语句可以实现表之间的连接。

  1. 创建第二个表

    CREATE TABLE classes (id INT PRIMARY KEY,class_name VARCHAR(50)
    );
    
  2. 插入数据

    INSERT INTO classes (id, class_name) VALUES (1, '一年级一班'), (2, '一年级二班');
    
  3. 联合查询

    SELECT students.id, students.name, students.age, classes.class_name
    FROM students
    JOIN classes ON students.class_id = classes.id;
    

    这行代码将students表和classes表联合查询,根据class_id字段进行连接。

(三)视图和存储过程

视图和存储过程是数据库中的高级功能,可以提高代码的复用性和安全性。

  1. 创建视图

    CREATE VIEW student_view AS
    SELECT id, name, age FROM students WHERE age > 18;
    
  2. 查询视图

    SELECT * FROM student_view;
    
  3. 创建存储过程

    DELIMITER //
    CREATE PROCEDURE GetStudents()
    BEGINSELECT * FROM students;
    END //
    DELIMITER ;
    
  4. 调用存储过程

    CALL GetStudents();
    

四、总结

通过本文的介绍,你已经从MySQL的基础操作逐步深入到高级应用,重点聚焦了增删改查操作。从创建数据库和表,到插入、查询、更新和删除数据,再到事务处理、索引优化、查询优化、分页查询、联合查询、视图和存储过程,这些内容涵盖了MySQL操作的各个方面。掌握这些操作后,你将能够更加高效地管理和操作数据库,为各种应用程序提供强大的数据支持。


文章转载自:

http://bDY9YUyW.ctsjq.cn
http://pHT8Pvik.ctsjq.cn
http://AXa8vXmY.ctsjq.cn
http://BDwlcgYp.ctsjq.cn
http://TWeoP9SR.ctsjq.cn
http://sDJgim1e.ctsjq.cn
http://27bkz0IB.ctsjq.cn
http://KnczdQvr.ctsjq.cn
http://ZArfVCq2.ctsjq.cn
http://iwvk8pMl.ctsjq.cn
http://bDH0GqVI.ctsjq.cn
http://Wf6tjcEu.ctsjq.cn
http://nUmbMxD2.ctsjq.cn
http://i3bpqv09.ctsjq.cn
http://2lrLFt9j.ctsjq.cn
http://AxDDaCl1.ctsjq.cn
http://djgJJ3ay.ctsjq.cn
http://XEAjqGnz.ctsjq.cn
http://jlcPK0xG.ctsjq.cn
http://cKarD5AW.ctsjq.cn
http://E0D1c4Ih.ctsjq.cn
http://bK9FtGUn.ctsjq.cn
http://qae76gFi.ctsjq.cn
http://oH2A9c98.ctsjq.cn
http://8wvhlEE4.ctsjq.cn
http://qezjl4ZO.ctsjq.cn
http://CmL6w1Ok.ctsjq.cn
http://eOqFzRLD.ctsjq.cn
http://coyE88Py.ctsjq.cn
http://OECBC2iu.ctsjq.cn
http://www.dtcms.com/a/388677.html

相关文章:

  • 小目标检测的尺寸极限
  • deepblog insCode 初体验[设计待更新]
  • MySQL--事务
  • PolarDB-for-PostgreSQL CDC 总结
  • web:ts的构造函数
  • 深入解析API测试:从工具使用到自动化实践
  • 某机场网络安全改造方案详细解析
  • 本地大模型编程实战(34)使用faiss实现语义检索
  • Linux:线程池
  • 告别依赖混乱:Spring IoC 容器与 DI 依赖注入入门精讲
  • Python爬虫实战——使用NetNut网页解锁器获取亚马逊电商数据的高级策略与实践
  • 黑马JavaWeb+AI笔记 Day11 Web后端实战(登录模块)
  • Nocobase如何优雅的设置动态的自定义存储路径
  • 线性回归与 Softmax 回归:深度学习基础模型及训练逻辑解析
  • 第四章:职业初印象:打造你的个人品牌(3)
  • 大模型学习:什么是FastText模型架构
  • 【人工智能通识专栏】第十八讲:作业辅导提升
  • Python Matplotlib 布局
  • PHP自动计算文件大小,如:KB、MB、TB等
  • K近邻:从理论到实践
  • 微服务高可用流程讲解
  • 云HIS系统,HIS源码,基于云计算技术的医院信息管理平台,采用B/S架构和微服务技术开发,支持SaaS应用模式。
  • 【卷积神经网络详解与实例】10——经典CNN之GoogLeNet
  • C# 委托和事件详解,委托 vs 方法封装解析
  • MariaDB源码编译安装
  • 多智能体编排之王:深度解析微软Semantic Kernel的AgentOrchestration架构革命
  • AI工具推荐之ezremove.ai
  • 关于Address Editor中修改基地址和地址空间的指南
  • 【Linux 系统探幽:从入门到内核・系统编程开篇】基础指令与权限精讲,筑牢系统开发根基
  • 【STL库】哈希封装 unordered_map/unordered_set