3.5 MySQL数据的维护详解(插入数据、更新数据、删除数据)


MySQL插入数据

3.5.1 基本的INSERT语句

插入单个值

当你只需要向表中的一列插入一个值时,可以使用以下语法:

INSERT INTO table_name (column1) VALUES (value1);
  • table_name 是你要插入数据的表名。
  • column1 是你要插入数据的列名。
  • value1 是你要插入的值。
插入多列值

当你需要向表中的多个列插入数据时,可以使用以下语法:

INSERT INTO table_name (column1, column2) VALUES (value1, value2);
  • column1column2 是你要插入数据的列名。
  • value1value2 是对应列的值。
插入多行数据

如果你需要一次性插入多行数据,可以使用以下语法:

INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4);
  • 每对括号内的数据代表一行,可以连续插入多行。

2. 使用子查询向表中插入数据

插入子查询结果作为单行

当你需要从另一个表或子查询中获取数据并插入到当前表中时,可以使用以下语法:

INSERT INTO table_name (column1, column2)
SELECT columnA, columnB FROM another_table WHERE condition;
  • table_name 是你要插入数据的表名。
  • column1column2 是你要插入数据的列名。
  • another_table 是子查询中使用的表名。
  • columnAcolumnB 是子查询中选择的列名。
  • condition 是子查询中的条件,用于筛选数据。
插入子查询结果作为多行

如果你需要从子查询中获取多行数据并插入到当前表中,可以使用以下语法:

INSERT INTO table_name (column1, column2)
SELECT * FROM another_table WHERE condition;
  • * 表示选择 another_table 中的所有列。
  • 其他部分与上述相同。

注意事项

  • 确保插入的数据类型与表中的列类型相匹配。
  • 在使用子查询时,子查询的结果列数应该与插入表的列数相匹配。
  • 在插入数据之前,最好先备份数据,以防意外丢失。
  • 使用子查询插入数据时,子查询中不能包含 ORDER BY 子句,除非它是一个 SELECT INTO 语句。

3.5.2 MySQL更新数据

在MySQL中,更新数据通常使用 UPDATE 语句。以下是 UPDATE 语句的基本语法和一些使用示例:

基本语法

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • table_name 是你要更新数据的表名。
  • column1, column2, … 是你要更新的列名。
  • value1, value2, … 是你要设置的新值。
  • condition 是用于确定哪些行将被更新的条件。

示例

更新单列

如果只想更新表中的一列,可以这样做:

UPDATE employees
SET status = 'active'
WHERE id = 3;

这个例子将 employees 表中 id 为 3 的行的 status 列更新为 ‘active’。

更新多列

如果需要同时更新多个列,可以这样做:

UPDATE employees
SET first_name = 'Jane', last_name = 'Doe', salary = 50000
WHERE id = 3;

这个例子将 employees 表中 id 为 3 的行的 first_name, last_name, 和 salary 列分别更新为 ‘Jane’, ‘Doe’, 和 50000。

更新所有行

如果想要更新表中的所有行,可以省略 WHERE 子句:

UPDATE employees
SET status = 'active';

这个例子将 employees 表中所有行的 status 列更新为 ‘active’。请注意,这样做会更新表中的所有行,所以通常需要谨慎使用。

使用函数更新数据

也可以在 UPDATE 语句中使用函数来更新数据:

UPDATE employees
SET salary = salary * 1.10
WHERE department = 'Sales';

这个例子将 employees 表中 department 为 ‘Sales’ 的所有员工的 salary 增加10%。

基于其他表更新数据

还可以根据另一个表中的数据来更新当前表的数据:

UPDATE employees e
JOIN departments d ON e.department_id = d.id
SET e.department_name = d.name
WHERE d.location = 'New York';

这个例子将 employees 表中与 departments 表中 location 为 ‘New York’ 相匹配的 department_id 对应的行的 department_name 更新为 departments 表中的 name

注意事项

  • 在执行 UPDATE 语句之前,最好先执行 SELECT 查询来确认哪些行将被更新。
  • 如果不使用 WHERE 子句,UPDATE 语句将更新表中的所有行。
  • 在执行更新操作之前,建议备份数据库,以防意外更新导致数据丢失。

3.5.3 MySQL删除数据

在MySQL中,删除数据通常使用 DELETE 语句。以下是 DELETE 语句的基本语法和一些使用示例:

基本语法

DELETE FROM table_name
WHERE condition;
  • table_name 是你要删除数据的表名。
  • condition 是用于确定哪些行将被删除的条件。

示例

删除特定行

如果你只想删除表中的特定行,可以这样做:

DELETE FROM employees
WHERE id = 3;

这个例子将 employees 表中 id 为 3 的行删除。

删除多行

如果你需要根据某个条件删除多行数据,可以这样做:

DELETE FROM employees
WHERE department = 'Sales';

这个例子将 employees 表中所有 department 为 ‘Sales’ 的行删除。

删除所有行

如果你想要删除表中的所有行,可以省略 WHERE 子句:

DELETE FROM employees;

这个例子将 employees 表中的所有行删除。请注意,这样做不会删除表结构,只会删除数据。

使用 JOIN 删除数据

你还可以根据关联表中的数据来删除当前表的数据:

DELETE e
FROM employees e
JOIN departments d ON e.department_id = d.id
WHERE d.location = 'New York';

这个例子将 employees 表中与 departments 表中 location 为 ‘New York’ 相匹配的 department_id 对应的行删除。

注意事项

  • 在执行 DELETE 语句之前,最好先执行 SELECT 查询来确认哪些行将被删除。
  • 如果不使用 WHERE 子句,DELETE 语句将删除表中的所有行。
  • 在执行删除操作之前,建议备份数据库,以防意外删除导致数据丢失。
  • 使用 DELETE 语句时,如果涉及到外键约束,可能会遇到限制,需要考虑级联删除或先删除子表数据。

请谨慎使用 DELETE 语句,因为一旦数据被删除,如果没有备份,将很难恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值