跳到主要内容

PostgreSQL 插入数据

在 PostgreSQL 中,插入数据是数据库操作的基础之一。无论是向表中添加新记录,还是从其他表中导入数据,INSERT 语句都是必不可少的工具。本文将详细介绍如何使用 INSERT 语句,并通过实际案例帮助你更好地理解其应用。

1. 什么是 INSERT 语句?

INSERT 语句用于向数据库表中添加新行。它允许你指定要插入的列以及对应的值。如果你不指定列名,PostgreSQL 会尝试将值插入到表中的所有列中。

基本语法

sql
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
  • table_name:要插入数据的表名。
  • column1, column2, column3, ...:要插入数据的列名(可选)。
  • value1, value2, value3, ...:要插入的具体值。
备注

如果省略列名,PostgreSQL 会尝试将值插入到表中的所有列中。因此,值的顺序必须与表中列的顺序一致。

2. 插入单行数据

让我们从一个简单的例子开始。假设我们有一个名为 employees 的表,其结构如下:

sql
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50),
salary NUMERIC
);

现在,我们想向 employees 表中插入一条新记录:

sql
INSERT INTO employees (name, department, salary)
VALUES ('John Doe', 'Engineering', 75000);

执行上述语句后,employees 表中将新增一行数据:

idnamedepartmentsalary
1John DoeEngineering75000
提示

id 列是 SERIAL 类型,PostgreSQL 会自动为其生成一个唯一的值。

3. 插入多行数据

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

sql
INSERT INTO employees (name, department, salary)
VALUES
('Jane Smith', 'Marketing', 65000),
('Alice Johnson', 'HR', 60000),
('Bob Brown', 'Sales', 70000);

执行后,employees 表将新增三行数据:

idnamedepartmentsalary
1John DoeEngineering75000
2Jane SmithMarketing65000
3Alice JohnsonHR60000
4Bob BrownSales70000

4. 插入默认值

如果你希望某些列使用默认值,可以在 INSERT 语句中省略这些列,或者显式地使用 DEFAULT 关键字。

例如,假设 salary 列有一个默认值 50000,你可以这样插入数据:

sql
INSERT INTO employees (name, department)
VALUES ('Charlie Davis', 'Support');

执行后,salary 列将使用默认值 50000

idnamedepartmentsalary
5Charlie DavisSupport50000

5. 从其他表插入数据

有时,你可能需要从一个表中查询数据并插入到另一个表中。这时可以使用 INSERT INTO ... SELECT 语句。

假设我们有一个 temp_employees 表,其中包含一些临时员工数据:

sql
CREATE TABLE temp_employees (
name VARCHAR(100),
department VARCHAR(50),
salary NUMERIC
);

INSERT INTO temp_employees (name, department, salary)
VALUES
('Eva Green', 'Finance', 80000),
('David Black', 'IT', 72000);

现在,我们可以将这些数据插入到 employees 表中:

sql
INSERT INTO employees (name, department, salary)
SELECT name, department, salary
FROM temp_employees;

执行后,employees 表将新增两行数据:

idnamedepartmentsalary
6Eva GreenFinance80000
7David BlackIT72000

6. 实际应用场景

场景 1:用户注册

假设你正在开发一个用户注册系统,用户注册时需要将他们的信息插入到 users 表中:

sql
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO users (username, email)
VALUES ('alice123', 'alice@example.com');

场景 2:订单系统

在一个订单系统中,当用户下单时,需要将订单信息插入到 orders 表中:

sql
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(user_id),
product_name VARCHAR(100),
quantity INT,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO orders (user_id, product_name, quantity)
VALUES (1, 'Laptop', 1);

7. 总结

在本文中,我们学习了如何在 PostgreSQL 中使用 INSERT 语句插入数据。我们涵盖了单行插入、多行插入、插入默认值以及从其他表插入数据的操作。通过这些知识,你可以轻松地向数据库表中添加新记录。

附加资源

练习

  1. 创建一个 products 表,并插入至少 5 条产品记录。
  2. 尝试从一个表中查询数据并插入到另一个表中。
  3. 使用 DEFAULT 关键字插入一条记录,观察默认值的效果。

通过练习,你将更加熟练地掌握 PostgreSQL 中的数据插入操作。祝你学习愉快!