admin 管理员组

文章数量: 1086019


2024年2月24日发(作者:linux找回误删的文件)

pg库insert语句

在pg库中,insert语句是用来往表中插入数据的常用语句。下面是一些常见的insert语句及相关的知识点。

1. 插入单行数据

语法格式:

```

INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);

```

示例:

```

INSERT INTO users (name, age, gender) VALUES ('张三', 25, '男');

```

说明:

- INSERT INTO:插入数据的关键字;

- 表名:要插入数据的表名;

- 列名:要插入数据的列名;

- 值:要插入的数据。

2. 插入多行数据

语法格式:

```

INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...), (值1, 值2, 值3, ...), ...;

```

示例:

```

INSERT INTO users (name, age, gender) VALUES ('张三', 25, '男'), ('李四', 30, '男'), ('王五', 28, '女');

```

说明:

- 插入多行数据的格式与插入单行数据的格式相似,只需在VALUES后面添加多个括号即可。

3. 插入部分数据

有时候,我们只需要插入表中的部分数据。这时可以使用以下语法:

语法格式:

```

INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);

```

示例:

```

INSERT INTO users (name, age) VALUES ('张三', 25);

```

说明:

- 如果不想插入某些列的数据,可以在INSERT INTO后面的列名中省略相应的列名。

4. 插入查询结果

有时候,我们需要将查询结果插入到表中。这时可以使用以下语法:

语法格式:

```

INSERT INTO 表名 (列1, 列2, ...) SELECT 列1, 列2, ... FROM 表名 WHERE 条件;

```

示例:

```

INSERT INTO users (name, age, gender) SELECT name, age,

gender FROM temp_users WHERE age > 25;

```

说明:

- SELECT语句可以返回任意数量的列;

- WHERE子句用来筛选需要插入的数据。

5. 插入默认值

如果要插入表中的默认值,可以使用以下语法:

语法格式:

```

INSERT INTO 表名 DEFAULT VALUES;

```

示例:

```

INSERT INTO users DEFAULT VALUES;

```

说明:

- 如果表中有默认值,可以使用这种方式插入数据。

6. 插入序列值

有时候,我们需要自动生成序列值并插入到表中。这时可以使用以下语法:

语法格式:

```

INSERT INTO 表名 (列1, 列2, ...) VALUES (nextval('序列名'), 值2, ...);

```

示例:

```

INSERT INTO users (id, name, age, gender) VALUES

(nextval('users_id_seq'), '张三', 25, '男');

```

说明:

- nextval()函数用来获取序列的下一个值。

7. 插入重复数据

如果插入的数据重复,可以使用以下语法替换旧数据:

语法格式:

```

INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...) ON

CONFLICT (列名) DO UPDATE SET 列1=值1, 列2=值2, ...;

```

示例:

```

INSERT INTO users (name, age, gender) VALUES ('张三', 25, '男') ON CONFLICT (name) DO UPDATE SET age=26, gender='女';

```

说明:

- ON CONFLICT子句用来指定冲突处理方式;

- DO UPDATE子句用来指定更新操作。

8. 插入忽略重复数据

如果插入的数据重复,可以使用以下语法忽略重复数据:

语法格式:

```

INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...) ON

CONFLICT (列名) DO NOTHING;

```

示例:

```

INSERT INTO users (name, age, gender) VALUES ('张三', 25, '男') ON CONFLICT (name) DO NOTHING;

```

说明:

- DO NOTHING子句用来指定忽略重复数据操作。

9. 插入时间戳

如果需要插入当前时间戳,可以使用以下语法:

语法格式:

```

INSERT INTO 表名 (列1, 列2, ..., 列n, create_at) VALUES (值1,

值2, ..., 值n, now());

```

示例:

```

INSERT INTO users (name, age, gender, create_at) VALUES ('张三', 25, '男', now());

```

说明:

- now()函数用来获取当前时间戳。

10. 插入JSON数据

如果需要插入JSON数据,可以使用以下语法:

语法格式:

```

INSERT INTO 表名 (列1, 列2, ..., 列n, json_column) VALUES (值1, 值2, ..., 值n, '{"key1": "value1", "key2": "value2", ...}');

```

示例:

```

INSERT INTO users (name, age, gender, json_data) VALUES ('张三', 25, '男', '{"address": "北京市海淀区", "phone":

"138****8888"}');

```

说明:

- json_data列的类型为json,需要使用JSON格式的字符串插入数据。

总结

insert语句是往表中插入数据的常用语句,掌握其语法和用法非常重要。在使用insert语句时,需要注意数据类型、列名和值的对应关系,以及可能出现的重复数据和冲突处理方式。


本文标签: 插入 数据 需要 语句 语法