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

MySQL从入门到精通(四):SQL语言—DML

目录

一、DML

(一)、表结构设计

1. 图书信息表 book

2. 订单记录表 book_order

(二)、创建数据库与表

(二)、INSERT 插入数据

2.1 给指定字段添加数据

2.2 给全部字段添加数据

2.3 批量添加数据

(三)、UPDATE 更新数据

(四)、DELETE 删除数据


一、DML

(一)、表结构设计

设计一个简化的在线书店数据库,包含图书信息表订单记录表,涵盖以下 DML 操作:

  • 插入数据(基础插入、批量插入、默认值处理)
  • 更新数据(单字段更新、多字段更新)
  • 删除数据(条件删除、全部删除)

1. 图书信息表 book

字段名数据类型允许为空默认值主键/外键注释
book_idINT-主键自增唯一标识
titleVARCHAR(100)--书名(必填)
authorVARCHAR(50)--作者(必填)
priceDECIMAL(10,2)--价格(必填,精确到小数点后两位)
stockINT0-库存量(默认为0)
publish_dateDATE'2025-01-01'-出版日期(默认未来日期)

2. 订单记录表 book_order

字段名数据类型允许为空默认值主键/外键注释
order_idINT-主键自增唯一标识
book_idINT-外键关联 book.book_id(图书ID)
quantityINT--购买数量(必填)
order_timeDATETIMECURRENT_TIMESTAMP-下单时间(默认为当前时间)
statusENUM('pending','shipped','cancelled')'pending'-订单状态(默认待处理)

(二)、创建数据库与表

-- 创建数据库
CREATE DATABASE IF NOT EXISTS online_bookstore DEFAULT CHARSET utf8mb4;
USE online_bookstore;-- 图书信息表(包含默认值、自增主键)
CREATE TABLE book (book_id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(100) NOT NULL,author VARCHAR(50) NOT NULL,price DECIMAL(10,2) NOT NULL,stock INT DEFAULT 0 COMMENT '库存量',publish_date DATE DEFAULT '2025-01-01'
) ENGINE=InnoDB;-- 订单记录表(外键约束、默认状态)
CREATE TABLE book_order (order_id INT PRIMARY KEY AUTO_INCREMENT,book_id INT NOT NULL,quantity INT NOT NULL,order_time DATETIME DEFAULT CURRENT_TIMESTAMP,status ENUM('pending', 'shipped', 'cancelled') DEFAULT 'pending',FOREIGN KEY (book_id) REFERENCES book(book_id)
) ENGINE=InnoDB;

(二)、INSERT 插入数据

2.1 给指定字段添加数据

  • 具体语法
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
-- 插入单条图书(指定部分字段,使用默认值)
INSERT INTO book (title, author, price) 
VALUES ('深入理解MySQL', '姜承尧', 89.99);

2.2 给全部字段添加数据

  • 具体语法
INSERT INTO 表名 VALUES (值1, 值2, ...);
-- 完全插入(手动设置所有字段,含自增占位)
INSERT INTO book
VALUES (NULL, 'MySQL 8.0 参考手册', '王健林', 89.99, 10, '2023-01-01')

2.3 批量添加数据

  • 具体语法
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值
1, 值2, ...) ;
INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;
  • 每条记录之间用 “,” 分割。
-- 批量插入图书
INSERT INTO book (title, author, price, stock) 
VALUES ('SQL必知必会', 'Ben Forta', 45.00, 30),('数据库系统概念', 'Abraham Silberschatz', 150.00, 20);
-- 批量插入 方法二 INSERT INTO book 
VALUES (DEFAULT, '高性能MySQL', 'Baron Schwartz', 129.50, 50, '2024-05-01'),
(DEFAULT, 'java程序设计', 'Schwartz', 271, 50, '2025-05-01');

注意事项:

• 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

• 字符串和日期型数据应该包含在引号中。

• 插入的数据大小,应该在字段的规定范围内。

(三)、UPDATE 更新数据

  • 具体语法
UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;
-- 更新单字段:减少库存(当订单生成时)
UPDATE book SET stock = stock - 2 WHERE book_id = 1;
-- 更新多字段:修改图书价格与出版日期
UPDATE book 
SET price = 99.99, publish_date = '2025-03-15' 
WHERE author = '姜承尧';
-- 订单状态更新为已发货
UPDATE book_order 
SET status = 'shipped' 
WHERE order_id = 1;

注意事项: 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

(四)、DELETE 删除数据

  • 具体语法
 DELETE FROM 表名 [ WHERE 条件 ] ;
-- 删除特定订单(条件删除)
DELETE FROM book_order WHERE status = 'cancelled';
-- 删除所有订单
DELETE FROM book_order;

注意事项:

• DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

• DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。 • 当进行删除全部数据操作时,datagrip会提示我们,询问是否确认删除,我们直接点击 Execute即可。

完结撒花🎉

http://www.xdnf.cn/news/333127.html

相关文章:

  • ts-node 深入讲解
  • Open CASCADE学习|ApplicationFramework 框架使用指南
  • linux查java进程CPU高的原因
  • 人工智能数据标注服务规范
  • SQL 更新U9C的请购单终止后不能转PO的问题
  • C++实现摩斯电码
  • 基于房屋框架结构的房屋布局大模型
  • Python操作MySQL
  • 大模型工具与案例:云服务器部署dify与使用
  • 《人工智能:如何重塑教育模式与学习图景》
  • MySQL5.6-5.7-8.0在线DDL操作锁表介绍
  • # 构建机器学习模型的桌面应用程序:从训练到部署
  • 前端实现简易 计时器
  • 多层PCB SMT贴装全流程指南:从物料准备到回流焊工艺控制
  • allegro出gerber时,单击Artwork并没有弹窗的问题
  • 数据分析案例(2)
  • 【AI落地应用实战】Amazon Bedrock 零门槛使用 DeepSeek-R1:在 Amazon Bedrock 上部署与调用的完整实践指南
  • 15_sysfsLinux内核模块
  • influxdb实战
  • CPU-GPU-NPU-TPU 概念
  • 统一返回JsonResult踩坑
  • 今日行情明日机会——20250507
  • 前端三大件--HTML
  • svn服务器迁移
  • BK精密电源操作软件 9130BA系列和手侧user manual
  • 文生图(Text-to-Image)的发展
  • 人工智能如何进行课堂管理?
  • 分布式爬虫去重:Python + Redis实现高效URL去重
  • 多账号管理、反追踪与自动化测试:我的浏览器实战笔记
  • string--OJ4