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

SQL:DML的基本语法

目录

插入数据 (INSERT)

查询数据  (SELECT)

 更新数据 (UPDATE)

🚨 什么是 sql_safe_updates?

删除数据 (DELETE)

插入数据 (INSERT)

MySQL 中的“表”是由字段(列)组成的结构化数据集合。插入的记录(行)必须匹配这些字段的定义。

✅ 基本语法: 

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

说明:

  • table_name 是你要插入数据的表名;

  • column1, column2... 是你要插入的字段名;

  • value1, value2... 是对应字段的值,类型要匹配。

--举例
CREATE TABLE products(
	id INT auto_increment PRIMARY KEY, 
	name VARCHAR(30),
	price DECIMAL(3,2),
    coffee_orgin VARCHAR(30)
);

🌱 插入一条记录(省略 id,由系统生成) 

#插入一条记录
INSERT INTO products (name, price, offee_orgin)
VALUES ('Espresso', 2.99, 'Ethiopia');

🌿 一次插入多条记录(推荐批量) 

INSERT INTO products (name, price, offee_orgin)
VALUES 
  ('Latte', 3.45, 'Colombia'),
  ('Cappuccino', 3.25, 'Brazil'),
  ('Americano', 2.75, 'Kenya');

插入后,我们还可以对products进行查询 。

查询数据  (SELECT)

SELECT * FROM products;

🔍 这条语句的含义是什么?

  • SELECT:告诉数据库你要“选择”数据

  • *:表示“选择所有字段”

  • FROM products:数据来自 products

📥 最终结果:

返回 products 表中所有行、所有字段的数据。

🔒 注意事项

  • 如果数据量大,SELECT * 会很慢、不推荐用于生产代码

  • 更推荐指定字段名,这样能减少网络传输、提升性能。

SELECT name, price FROM products;

 更新数据 (UPDATE)

🛠️ UPDATE 基本语法 

UPDATE 表名
SET 列1 = 新值1, 列2 = 新值2, ...
WHERE 条件;

关键点:

  • UPDATE:指定要修改的表

  • SET:指定要修改的字段及其新值

  • WHERE:限定修改哪些行(非常重要!不然会全表更新)

✅ 示例:更新某个咖啡价格

假设你想把 Espresso 的价格从 2.99 改为 3.20,语句如下:

UPDATE products
SET price = 3.20
WHERE name = 'Espresso';

如果忘记加WHERE,会把整张表的 price 都改成 3.20,生产环境很容易翻车。 

🌟 更复杂的更新

1️⃣ 同时更新多个字段:

UPDATE products
SET price = 3.50,
    offee_orgin = 'Rwanda'
WHERE name = 'Latte';

2️⃣ 条件更新 + 范围判断:

UPDATE products
SET price = price + 0.50
WHERE price < 3.00;

这个语句会把所有低于 3 元的咖啡都涨价 0.50 元。

🚨 什么是 sql_safe_updates

sql_safe_updates 是 MySQL 客户端的一个安全保护机制,默认在某些客户端(如 MySQL Workbench)中启用,用来防止“无意更新或删除整个表”的风险。

🧪 示例对比

✅ 正常更新(有 WHERE)

UPDATE products
SET price = 4.00
WHERE name = 'Latte';

这条语句指定了明确的条件,哪怕开启 sql_safe_updates,也允许执行。 

❌ 被拦截的操作(无 WHERE) 

UPDATE products
SET price = 4.00;

如果你开启了 sql_safe_updates(= TRUE),这条语句会报错: 

原因:

  • 没有 WHERE 条件

  • 没有使用主键或索引字段限定范围

  • 所以被系统阻止执行(防止误操作)

✅ 临时关闭它 

SET sql_safe_updates = FALSE;

含义是:关闭安全更新限制,允许执行不带 WHERE 的 UPDATE/DELETE 语句。

⚠️ 慎用! 这种设置通常是临时关闭,操作完后建议再打开。

删除数据 (DELETE)

🔨 DELETE 基本语法 

DELETE FROM 表名
WHERE 条件;
  • DELETE FROM:告诉数据库你要从哪个表中删除数据

  • WHERE:指定删除哪些行(⚠️ 没有它就是删除整个表的内容)

☕ 示例:删除某个咖啡产品 

DELETE FROM products
WHERE name = 'Espresso';

这个操作会从 products 表中,删除所有名称为 Espresso 的记录。 

🧨 小心!没有 WHERE 就是全删! 

DELETE FROM products;

⚠️ 这将删除整张表中的所有记录(但保留表结构) 

✅ 带多个条件的删除 

DELETE FROM products
WHERE price < 3.00 AND offee_orgin = 'Kenya';

 删除所有价格小于 3 的,并且产地是 Kenya 的咖啡产品。

相关文章:

  • android wifi通过命令行打开2.4G热点
  • 网络安全·第二天·ARP协议安全分析
  • 从代码学习深度学习 - 注意力汇聚:注意力评分函数(加性和点积注意力) PyTorch 版
  • SQL问题分析与诊断(8)——其他工具和技术
  • ECMAScript 7~10 新特性
  • RLAgent note
  • 数据结构与算法-动态规划-线性动态规划,0-1背包,多重背包,完全背包,有依赖的背包,分组背包,背包计数,背包路径
  • 取消echarts地图悬浮时默认黄色高亮
  • Sigma-Delta ADC调制器的拓扑结构分类
  • java中的JNI调用c库
  • 若依微服务集成Flowable仿钉钉工作流
  • 【JavaScript】十八、页面加载事件和页面滚动事件
  • 基于AI的Web应用防火墙(AppWall)实战:漏洞拦截与威胁情报集成
  • 深入理解Java反射
  • 导入 Excel 批量替换文件名称及扩展名
  • react中通过 EventEmitter 在组件间传递状态
  • QTreeWidget 手动设置选中项后不高亮的问题
  • rbd块设备的id修改
  • 纳米软件储能电源模块自动化测试深度解析
  • Git版本管理系列:(三)远程仓库
  • 湖南网站建设制作/网站都有哪些
  • wordpress后台地址更改/长沙网站seo报价
  • 东莞数据线厂家东莞网站建设/百度收录教程
  • dedecms 手机网站模板/新站如何快速收录
  • php开源企业网站/百度指数网
  • 做网赚的网站/百度云官网