PostgreSQL教程

PostgreSQL Insert

在本节中,我们将学习 PostgreSQL插入命令和示例,使用default关键字插入日期,并从其中插入数据到PostgreSQL pgAdmin和SQL Shell(psql)中的另一个表。
在PostgreSQL中,INSERT命令用于将新行插入表中。我们可以一次在单个表中插入单行或多行值。

PostgreSQL插入命令的语法

INSERT INTO TABLE_NAME 
(column1, 
column2, 
column3, ……columnN)  
VALUES (value1, value2, value3, ….. valueN);  

使用默认值关键字插入单个记录

如果我们使用默认值关键字插入单个记录, INSERT命令的语法如下如下:
INSERT INTO table
(column1, column2, ... )
default VALUES;

使用子选择插入多条记录

如果我们使用子选择插入多条记录,插入命令语法如下:
INSERT INTO table_name
(column1, column2, ... )
SELECT expression1, expression2, ...
FROM source_table
[WHERE conditions];
下表显示了插入表语法中使用的参数或参数:
参数 说明
Table_name 它用来表示现有的表名。
column1,column2…columnN 这些是我们要在其中插入数据的表中的列的名称。
WHERE conditions 这是一个可选参数,在第三种语法中使用。这些是插入记录必须发生的条件。
DEFAULT VALUES 所有列均将使用其默认值进行定义。它用于第二种语法。
source_table 当我们要从另一个表插入数据时使用。它用在第三种语法中。
expression1 | DEFAULT, expression2 | DEFAULT 这些是分配给表中各列的值。
如果指定了 expression1 ,则将授予 column1 值为 expression1, column2 将被赋予expression2的值,依此类推。
如果指定了 DEFAULT ,则一致的列将被其默认值占据。它用在第一种语法中。
注意
如果我们要使用 PostgreSQL insert 命令将记录插入表中,则必须提供每个 NOT NULL 列值。 如果该列允许使用NULL值,我们可以忽略PostgreSQL插入命令中的一列。
输出
下表显示了输出消息及其含义:
输出消息 说明
INSERT Oid 1 如果仅插入一行并且Oid是插入的行的数字OID。
INSERT 0 # 如果插入了多行,并且#是插入的行数,则会出现此消息。

PostgreSQL插入命令

我们可以通过两种方式执行PostgreSQL插入命令:
使用UI(pgAdmin)的PostgreSQL插入语句 使用SQL Shell的PostgreSQL插入语句

使用UI的PostgreSQL插入语句

我们来看一个示例,看看如何在表中插入值。在这里,我们有一个名为 Student 的表。

示例1: VALUES关键字

用于创建 PostgreSQL INSERT 命令以列出值,我们将使用 VALUES 关键字。
PostgreSQL插入
要在 学生 表中插入值,我们将按照以下步骤操作:
Step1
首先,我们将选择学生表,然后右键单击它,然后从给定列表中选择脚本选项,然后单击 INSERT脚本选项,如下面的屏幕截图所示: PostgreSQL插入
Step2
一旦我们点击插入脚本,以下窗口就会出现在屏幕上: PostgreSQL插入
Step3
现在,我们将值插入'?'的位置,然后单击 execute/refresh/刷新按钮以执行特定命令,然后将记录添加到 学生 表格。
INSERT INTO myschema."Student"(
"St_id", "St_Name", "St_age", "St_address", "St_blood_group")
VALUES(101, 'John', 24, 'New York', 'A+')
(102, 'Mike', 22, 'Chicago', 'B-'),
(103, 'Emily', 24, 'Boston', 'A-'),
(104, 'James', 20, 'Philadelphia', 'O+'),
(105, 'Sophia', 21, 'New York', 'B+');

PgAdmin4中的SQL查询

在以下屏幕截图中,我们可以在pgAdmin4中看到以上命令:
PostgreSQL插入

表的结构/输出

执行 Insert命令后,我们可以看到通过单击 view table 选项, Student 表的输出,如下面的屏幕截图所示:
PostgreSQL插入

Example2

首先,我们将创建一个新表以了解插入的用法PostgreSQL中的命令。
注意: 我们也可以参考下面的链接在PostgreSQL中创建一个新表。
现在,我们将在以下命令的帮助下创建一个department表:
CREATE TABLE department (
dept_ID serial PRIMARY KEY,
Dept_name VARCHAR (255) NOT null,
description VARCHAR (255),
location VARCHAR(50)
);
执行上述命令后,我们将获得以下消息,表明已创建department表:
PostgreSQL插入

示例: 在表中插入单行值

以下命令用于插入 dept_name,位置值添加到department表中:
INSERT INTO department (dept_name, location)
VALUES ('RESEARCH', 'Newyork');
我们可以使用SELECT命令检查特定表中的插入行:
SELECT * FROM department;
输出
一旦执行上述 select 命令,我们将获得以下输出:
PostgreSQL插入
如果要插入字符数据,必须将其用单引号(' )
例如" RESEARCH"
PostgreSQL反复为 serial列提供值;因此,不需要在串行列中插入值。

示例: 使用子选择

在这里,我们将使用sub-select将各个行的值插入到特定表中。
例如: 在以下命令中,我们将插入多行在department表的dept_name中,位置列:
INSERT INTO department (dept_name, location)
VALUES ('ACCOUNTING', 'Boston'),
('OPERATIONS','Florida'),
('SALES','Chicago');
一旦执行了上述命令,我们将收到以下消息,指出三个值已插入 dept_name department中>表的位置列:
PostgreSQL插入
我们可以在帮助下检查特定表中的插入行 SELECT 命令:
SELECT * FROM department;
输出
一旦执行了上述选择命令,我们将获得以下输出:
PostgreSQL插入

示例: 使用Default关键字将日期插入表中

首先,我们将添加一个名为 last_update 进入department表,并将其默认值设置为 current_date ,如下面的命令所示:
ALTER TABLE department ADD COLUMN last_update Date;
ALTER TABLE department ALTER COLUMN last_update
SET default CURRENT_DATE;
执行上述命令后, department 表被更改,并且 last_column 已创建。
PostgreSQL插入
以下命令用于在 department中插入新行以定义日期 表。
注意: 在PostgreSQL中,日期格式为YYYY-MM-DD。
INSERT INTO department ( Dept_name, last_update)
VALUES ('FINANCE','2020-07-02');
输出
执行上述命令后,我们将获得消息窗口:
PostgreSQL插入
要为日期列或其他任何列设置默认值,我们还可以使用 DEFAULT关键字作为我们可以在以下命令中看到:
INSERT INTO department (Dept_name, last_update)
VALUES('HR',DEFAULT);
输出
执行上述命令后,我们将获得以下消息窗口,其中特定值已插入 department 表:
PostgreSQL插入
要检查department表中插入的记录,我们将使用SELECT命令:
Select * from department;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL插入

示例: 从另一个表插入数据

要从另一个表插入数据,我们将执行以下步骤:
Step1
首先,我们创建另一个名为 department_tmp 的表,该表具有与 department 类似的表结构>表格:
CREATE TABLE department_tmp (LIKE department);
department_tmp 已在执行以下命令后创建:
PostgreSQL插入
Step2
创建表后,我们将插入department表中的行,这些行的值日期列中的不为空:
INSERT INTO department_tmp 
SELECT *
FROM
department
WHERE
last_update IS NOT null;
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示已成功插入特定值。
PostgreSQL插入
Step3
之后,我们将检查插入操作使用 department_tmp 表中的SELECT命令:
SELECT * FROM department_tmp;
输出
执行上述命令后,我们将获得以下输出:
如果要获取最后插入的内容department表中的dept_id ,我们将执行以下过程:
插入命令中插入新行后,将使用 RETURNING子句(SQL的PostgreSQL扩展)。
以下命令将在department表中插入新行,并返回最后插入的 Dept_id:
INSERT INTO department (dept_name, last_update)
VALUES('IT',DEFAULT)
RETURNING Dept_id;
输出
一旦执行了上述命令,我们将获得Dept_id = 7、
PostgreSQL插入
在那之后,我们将使用Select命令检查 dept_id 是否正确。
Select * from department;
输出
执行Select命令后,我们可以看到,一旦创建了customer表,我们将在其中插入一行一行以下命令的帮助: Dept_id匹配department表中的最后插入的Dept_ id
PostgreSQL插入

PostgreSQL插入命令使用psql

在SQL Shell(psql)中,我们将首先创建一个名为 Customer table的表 lidihuo数据库中,借助以下命令:
CREATE TABLE Customer(
Cust_Id int PRIMARY KEY NOT null,
Cust_Name TEXT NOT null,  
Cust_Address CHAR(30), 
Cust_Age int NOT null Unique
);
一旦创建了 customer 表,我们将在以下命令的帮助下向 Customer 表中插入一行。
insert into customer (Cust_Id ,cust_name, Cust_address,Cust_age)  
values(101, 'john', 'boston',22);
此后,我们将在特定表中插入多行,如下面的命令所示:
INSERT INTO Customer
(Cust_Id ,cust_name, Cust_address,Cust_age) 
VALUES (102, 'mike', 'newyork',24),
(103,'emily', 'newyork',23), 
 (104, 'harvey', 'florida',26);
我们将使用SELECT命令检查是否在客户表中插入了上述值。
Select* from customer;
输出
执行上述命令后,我们将获得以下输出:
PostgreSQL插入
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4