8、update 数据更新

1、update 语句数据更新

(1) 更新(修改)表中的数据。

语法:

update 表名 set 字段1=新值,字段2=新值,... where 条件;   #更新一行多列

update语句以where子句结束,where条件告诉MySQL更新哪一行,若没有指定where子句,则更新表中所有的行。

(2) 更新多行数据

update结合case,when和then一起使用

语法:

update 表名 set 字段1=case id
                                 when id1 then 新值1
                                 when id2 then 新值2
                                         ...
                                 when idn then 新值n                 -- 注意有多个字段时,每个字段之间的 end 后都有逗号( ,) 隔开,最后一个 end 不需要逗号
                                  end,
                 字段2=case id
                                 when id1 then 新值1
                                 when id2 then 新值2
                                         ...
                                 when idn then 新值n
                                  end
                 where   id   in (id1,id2,...idn);              -- 同时更新多行多列,in 操作符指定id的范围

更新字段1,字段2等字段的值,若id=1,则字段1=新值1,字段2=新值1

-- 功能:更新表中现有记录
-- 节点解析:
-- UPDATE - 指定要更新的表
-- SET - 设置要修改的列和新值
-- WHERE - 指定更新条件(重要!避免误更新全部数据)
UPDATE employees 
SET salary = salary * 1.1,           -- 工资增加10%
    last_raise_date = CURRENT_DATE   -- 更新最后加薪日期
WHERE department_id = 10             -- 只更新部门10的员工
AND hire_date < '2020-01-01';        -- 且入职早于2020年的员工

-- 危险示例:没有WHERE子句会更新所有记录!
-- UPDATE employees SET salary = 50000; -- 这会更新所有员工工资!

2、删除数据

delete 语句从表中删除数据

语法:

delete  from 表名  where 条件         -- 删除特定的行
delete  from 表名                     -- 删除所有的行

注:delete 只删除表中数据,不删除表。

-- 功能:从表中删除记录
-- 节点解析:
-- DELETE FROM - 指定要删除数据的表
-- WHERE - 删除条件(重要!避免误删全部数据)
DELETE FROM employees 
WHERE termination_date IS NOT NULL   -- 只删除已离职员工
AND termination_date < '2022-01-01'; -- 且离职时间早于2022年

-- 分批次删除大数据量(避免锁表)
DELETE FROM large_table 
WHERE condition = true
LIMIT 1000;  -- 每次只删除1000条

 

truncate  table 表名;     -- 删除原来的表,并重新建立一张同名的表

 

posted @ 2021-03-25 22:27  chao_xiong  阅读(593)  评论(0)    收藏  举报