MySQL 基础语法,新增、修改、删除数据相关。

0. 数据表

接下来的示例会使用一个 world 数据表,表中存储了世界上的所有国家的相关信息。

name:国家名称

continent:洲份

area:面积

population:人口

gdp:国内生产总值

1. INSERT 数据插入语句

SELECT 语句是最常用的 SQL 语句,除此之外的就是 INSERT 语句了。INSERT 语句是用来插入(或添加)行到数据库表的。

// 使用 INSERT 语句添加数据到数据库表中

// 添加中国的数据到world表
INSERT INTO world VALUES ('China', 'Asia', '9600000', '1400000000', NULL);

VALUES 后面跟随的是需要插入的列数据,需要包含所有列的数据(不希望添加的列可以添加 NULL 值),次序与定义表时的次序一致。

由于这种语法高度依赖表中列的定义次序,并且表结构改变时不能保证定义次序不发生改变。所以 这种语法是不安全的,应该避免使用这种语法。

除此之外,还有一种更安全的 INSERT 语法。

// 使用 INSERT 语句添加数据到数据库表中

// 添加中国的数据到world表
INSERT INTO world(name, continent, area, population)
VALUES ('China', 'Asia', '9600000', '1400000000');

与前一种语法相比,在表名后面明确说明了列的次序,VALUES 后面的值将根据给出的次序进行填充。除此之外,不希望添加的列可以直接省略。

INSERT 语句插入多行

如果希望同时添加多行数据,可以使用多条 INSERT 语句一次提交。

// 使用 INSERT 添加多行数据

// 添加两个国家
INSERT INTO world(name, continent, area, population, gdp)
VALUES ('Afghanistan', 'Asia', '652230', '25500100', '20343000000');
INSERT INTO world(name, continent, area, population, gdp)
VALUES ('Albania', 'Europe', '28748', '2831741', '12960000000');

也可以将多条 INSERT 语句组合起来,在 VALUES 后使用逗号分隔多行的数据。

// 使用 INSERT 添加多行数据

// 添加两个国家
INSERT INTO world(name, continent, area, population, gdp)
VALUES ('Afghanistan', 'Asia', '652230', '25500100', '20343000000'),
('Albania', 'Europe', '28748', '2831741', '12960000000');

对比两种语法,使用单条 INSERT 语句处理多个插入 比使用多条 INSERT 语句 更快。

INSERT SELECT 插入查询出的数据

除了可以插入给出的数据,还可以将 SELECT 查询出来的结果插入表。这由一条 INSERT 语句和 SELECT 语句组成。

// 使用 INSERT SELECT 插入数据

// 将new_world表的数据插入到world表
INSERT INTO world(name, continent, area, population, gdp)
SELECT name, continent, area, population, gdp FROM new_world;

两个表的字段可以不相同 ,因为 MySQL 是根据给出的列次序填充数据的。

要注意的是, 如果主键值重复会导致后续的 INSERT 操作失败。

2. UPDATE 更新数据语句

为了修改(更新)表中的数据,我们还需要使用到 UPDATE 语句。

// 使用 UPDATE 更新数据

// 更新中国的数据
UPDATE world SET population = '1400000000', gdp = '99086500000000'
WHERE name = 'China';

使用 SET 指定需要修改的列名与修改值,多个修改值使用逗号分隔。

每一条 UPDATE 语句都应该使用 WHERE 子句告诉 MySQL 更新哪一行。 如果省略 WHERE 子句将会更新表中所有的行。

IGNORE 关键字

如果 UPDATE 在更新一行或多行数据时出现了错误,整条 UPDATE 语句都会被取消。使用 IGNORE 关键字,即使出现了错误也会继续更新。

UPDATE IGNORE world ...

3. DELETE 删除数据语句

为了删除表中的数据,我们还需要使用到 DELETE 语句。

// 使用 DELETE 删除数据

// 删除name为空的数据
DELETE FROM world WHERE name IS NULL;

同样的, 如果省略 WHERE 子句,DELETE 将删除表中的所有行。 如果确实想清空表的数据,还可以使用 TRUNCATE TABLE 语句,该语句比 DELETE 更快(TRUNCATE TABLE 会先删除表,再重建表)。

评论