您的位置:

MySQL插入和更新操作

一、插入数据

插入数据是数据库基础操作之一,而MySQL插入操作的语法如下:


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

其中,table_name是要插入数据的表名,column1, column2, column3, ...指定要插入数据的列名,value1, value2, value3, ...指定要插入的值。

以下是一个插入数据的例子:


INSERT INTO Customers (CustomerName, ContactName, Country)
VALUES ('John Doe', 'John Doe Inc.', 'USA');

该语句会向Customers表中插入一条数据,包含CustomerNameContactNameCountry三列数据,对应的值分别为'John Doe''John Doe Inc.''USA'

二、更新数据

更新数据是数据库操作中非常常见的操作之一,MySQL更新操作的语法如下:


UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

其中,table_name是要更新数据的表名,column1 = value1, column2 = value2, ...指定要更新的列和对应的值,WHERE condition指定要更新的行,如果不加该条件,则会更新整个表。

以下是一个更新数据的例子:


UPDATE Customers
SET ContactName = 'Jane Doe'
WHERE CustomerID = 1;

该语句会将Customers表中CustomerID为1的行的ContactName列的值更新为'Jane Doe'

三、插入或更新数据

有时候需要插入一条数据,如果数据已经存在,则进行更新操作。MySQL提供了INSERT INTO ... ON DUPLICATE KEY UPDATE语法来实现这一功能。

语法如下:


INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...)
ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, ...;

如果要插入的数据在表中已经存在,则更新对应列的值。

以下是一个例子:


INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
VALUES (1, 'John Doe', 'John Doe Inc.', 'USA')
ON DUPLICATE KEY UPDATE ContactName = 'Jane Doe';

如果表中已经存在CustomerID为1的行,则会将该行ContactName列的值更新为'Jane Doe'。如果不存在,则会插入一条数据,包含CustomerIDCustomerNameContactNameCountry四列数据,对应的值分别为1'John Doe''John Doe Inc.''USA'

四、批量插入数据

如果需要插入大量数据,一条一条地插入是非常低效的。MySQL提供了INSERT INTO ... VALUES (),(),()...语法来实现批量插入。

语法如下:


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

可以一次性插入多个数据,加快插入效率。

以下是一个例子:


INSERT INTO Customers (CustomerName, ContactName, Country)
VALUES ('John Doe', 'John Doe Inc.', 'USA'),
       ('Jane Doe', 'Jane Doe Inc.', 'USA'),
       ('James Smith', 'James Smith Inc.', 'UK');

该语句会向Customers表中插入三条数据,分别为'John Doe''Jane Doe''James Smith'