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 的咖啡产品。