MySQL更新和删除表中数据

目录

1、更新表中数据

 UPDATE语法:

更新表中的所有行特定列:(不建议运行)

 更新表中的特定行特定列:

SET支持子查询、计算字段等方式

2、删除表中数据

从表中删除特定的行:

从表中删除所有行:

3、更新和删除的指导原则

4、小结


博主用的是mysql8 DBMS,附上示例资料:

百度网盘链接: https://pan.baidu.com/s/1XaWi3Y7hpXbs_uHq2cPI6Q

提取码: fpnx

1、更新表中数据

更新数据需要确定三个部分:更新的表、列名和新值、需要过滤的行

  •  UPDATE语法:

-- UPDATE语法
UPDATE [表名]
SET [列名] = [新值]   -- 多个列之间用,分隔。在更新多个列时,只需要使用一条 SET 命令
WHERE [过滤条件];
  • 更新表中的所有行特定列:(不建议运行)

-- 使用update来删除列数据,只需要列值 = NULL即可,NULL表示没有值
-- where过滤时使用的是IS NULL
UPDATE Customers 
SET cust_email = NULL 
  •  更新表中的特定行特定列:

-- 更改多个列值,只需要在列名+值之间以逗号分隔
-- 对于表的操作,都可以叫做查询,使用UPDATE时也会读取表的内容以进行过滤等操作
UPDATE customers
SET cust_email = 'kim@thetoystore.com',
		cust_country = 'China'
WHERE cust_id = '10005';
  • SET支持子查询、计算字段等方式

在update中使用子查询,使用子查询检索出的数据更新列数据

表结构:
employees表:
employee_id:员工编号(主键)
salary:员工工资

salary_adjustments表:
employee_id:员工编号
adjustment_amount:工资调整金额

目标是根据salary_adjustments表中的调整金额更新employees表中的员工工资。

UPDATE employees
SET salary = salary + (
    SELECT adjustment_amount
    FROM salary_adjustments sa
     WHERE sa.employee_id = employees.employee_id
)
WHERE EXISTS (                          -- 可以使用尝试IN
    SELECT 1
    FROM salary_adjustments sa
    WHERE sa.employee_id = employees.employee_id
);

2、删除表中数据

  • 从表中删除特定的行:

-- DELETE 删除表中的行数据,尽量加上FROM,保持可移植性
DELETE FROM Customers 
WHERE cust_id = '1000000006';
  • 从表中删除所有行:

-- DELETE 删除表中的行数据,尽量加上FROM,保持可移植性
DELETE FROM Customers;

DELETE FROM 要求指定从中删除数据的表名,WHERE 子句过滤要删除的行。

提示:更快的删除

如果想从表中删除所有行,不要使用 DELETE。可使用 TRUNCATE TABLE语句,它完成相同的工作,而速度更快(因为不记录数据的变动)

TRUNCATE TABLE orders_new;

3、更新和删除的指导原则

  • 除非对表中所有行进行操作,否则一定要带上WHERE子句
  • 每一个表要指定主键
  • UPDATE和DELETE前,先用SELECT看看数据是否符合预期
  • 使用强制实施引用完整性的数据库(比如MySQL不允许删除键与其他表有关联的行

4、小结

  1. UPDATE的语法:update + set + where
  2. DELETE的语法:delete from + where
  3. TRUNCATE清空表:truncate table
  4. 进行更新和删除操作前,先使用select查看数据过滤是否达到要求;尽量加上where。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值