PostgreSQL插入-PostgreSQL教程|
PostgreSQL 插入
在本节中,我们将学习PostgreSQL 插入命令和示例,使用 default 关键字插入日期,并在 PostgreSQL pgAdmin 和 SQL shell (psql)**中将数据从一个表插入到另一个表**。
在 PostgreSQL 中,INSERT 命令用于向表中插入新行。我们可以一次将单行或多行值插入到特定表中。
PostgreSQL 插入命令的语法
INSERT INTO TABLE_NAME
(column1,
column2,
column3, ……columnN)
VALUES (value1, value2, value3, ….. valueN);
使用默认值关键字插入单条记录
如果我们使用 default values 关键字插入单个记录,则INSERT 命令的语法如下:
INSERT INTO table
(column1, column2, ... )
DEFAULT VALUES;
使用子选择插入多条记录
如果我们使用子选择插入多条记录,插入命令语法如下:
INSERT INTO table_name
(column1, column2, ... )
SELECT expression1, expression2, ...
FROM source_table
[WHERE conditions];
下表显示了插入表语法中使用的参数或参数:
范围 | 描述 | ||
---|---|---|---|
表名 | 它用于表示现有的表名。 | ||
第 1 列、第 2 列…第 N 列 | 这些是表中我们要插入数据的列的名称。 | ||
WHERE 条件 | 它是一个可选参数,用于第三种语法。这些是插入记录必须发生的条件。 | ||
默认值 | 所有列都将使用其默认值进行定义。它用于第二种语法。 | ||
源表 | 当我们想从另一个表插入数据时使用它。它用于第三种语法。 | ||
表达式1 | 默认,表达式 2 | 默认 | 这些是分配给表中列的值。 如果指定了expression1,则column1将被赋予expression1的值,column2将被赋予 expression2 的值,依此类推。 如果指定了DEFAULT,则一致性列将被其默认值占用。它用于第一种语法。 |
**笔记
- 如果我们使用PostgreSQL insert命令将记录插入到表中,我们必须提供每个NOT NULL列值。
- 如果列允许 NULL 值,我们可以忽略来自 PostgreSQL 插入命令的列。
输出
下表显示了输出消息及其含义:
输出消息 | 描述 |
---|---|
插入 Oid 1 | 如果只插入了一行并且 Oid 是插入行的数字 OID。 |
插入 0 # | 如果插入了多行,则会出现此消息,#是插入的行数。 |
PostgreSQL 插入命令
我们可以通过两种方式执行 PostgreSQL 插入命令:
- 使用 UI (pgAdmin) 的 PostgreSQL 插入语句
- 使用 SQL shell 的 PostgreSQL Insert 语句
使用 UI 的 PostgreSQL 插入语句
让我们举个例子来看看如何在表中插入值。在这里,我们有一个名为Student的表。
示例 1:VALUES 关键字
为了创建一个PostgreSQL INSERT命令来列出值,我们将使用VALUES关键字。
要在Student表中插入值,我们将按照以下步骤操作:
步骤1
- 首先,我们将选择Student 表,然后右键单击它,然后从给定的列表中选择Script选项,然后从另一个列表中单击INSERT Script选项,如下面的屏幕截图所示:
第2步
- 一旦我们点击Insert Script,下面的窗口就会出现在屏幕上:
Step3
- 现在,我们在'?'的位置插入值。然后单击执行/刷新按钮以执行特定命令,并将记录添加到学生表中。
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 中看到上面的命令:
表结构/输出
执行插入命令后,我们可以通过单击查看表选项来查看学生表的输出,如下面的屏幕截图所示:
例2
首先,我们将创建一个新表,以了解 PostgreSQL 中插入命令的用法。
注意:我们也可以参考下面的链接在 PostgreSQL 中创建一个新表。
现在,我们将借助以下命令创建一个部门表:
CREATE TABLE department (
dept_ID serial PRIMARY KEY,
Dept_name VARCHAR (255) NOT NULL,
description VARCHAR (255),
location VARCHAR(50)
);
执行上述命令后,我们将得到以下消息,表明部门表已创建:
示例:在表中插入一行值
下面的命令用于将dept_name、location值插入到部门表中:
INSERT INTO department (dept_name, location)
VALUES ('RESEARCH', 'Newyork');
我们可以使用 SELECT 命令检查特定表中插入的行:
SELECT * FROM department;
输出
一旦我们执行了上面的select命令,我们将得到以下输出:
如果我们想插入字符数据,我们必须将它括在单引号 (') 中。
例如, 'RESEARCH'。
PostgreSQL重复为串行列提供值;因此,不需要在串行列中插入值。
示例:使用子选择插入多行
在这里,我们将使用 sub-select 将各种行值插入到特定表中。
例如:在下面的命令中,我们将在部门表的dept_name、location 列中插入多行:
INSERT INTO department (dept_name, location)
VALUES ('ACCOUNTING', 'Boston'),
('OPERATIONS','Florida'),
('SALES','Chicago');
执行上述命令后,我们将收到以下消息,表明三个值已插入到dept_name和部门表的位置列中:
我们可以在SELECT命令的帮助下检查特定表中插入的行:
SELECT * FROM department;
输出
一旦我们实现了上面的 select 命令,我们将得到以下输出:
示例:使用 Default 关键字将日期插入表中
首先,我们将在部门表中添加一个名为last_update的新列,并将其默认值设置为current_date,如我们在以下命令中所见:
ALTER TABLE department ADD COLUMN last_update Date;
ALTER TABLE department ALTER COLUMN last_update
SET DEFAULT CURRENT_DATE;
执行上述命令后,部门表被修改,last_column已经创建。
下面的命令用于插入一个新行来定义部门表中的日期。
注意:在 PostgreSQL 中,日期格式为 YYYY-MM-DD。
INSERT INTO department ( Dept_name, last_update)
VALUES ('FINANCE','2020-07-02');
输出
执行完上面的命令后,我们会得到消息窗口:
要为日期列或任何其他列设置默认值,我们还可以使用DEFAULT 关键字,如下面的命令所示:
INSERT INTO department (Dept_name, last_update)
VALUES('HR',DEFAULT);
输出
执行上述命令后,我们将得到以下消息窗口,表明特定值已插入部门表中:
要检查部门表中插入的记录,我们将使用 SELECT 命令:
Select * from department;
输出
执行上述命令后,我们将得到以下结果:
示例:从另一个表插入数据
要从另一个表插入数据,我们将按照以下步骤操作:
步骤1
首先,我们创建另一个表,名为Department_tmp,它具有与部门表类似的表结构:
CREATE TABLE department_tmp (LIKE department);
执行上述命令后,department_tmp已经创建完毕:
第2步
创建表后,我们将从部门表中插入日期列值不为NULL 的行:
INSERT INTO department_tmp
SELECT *
FROM
department
WHERE
last_update IS NOT NULL;
输出
执行上述命令后,我们将得到以下消息窗口,显示特定值已成功插入。
Step3
之后,我们将使用department_tmp表中的SELECT命令检查插入操作:
SELECT * FROM department_tmp;
输出
执行上述命令后,我们将得到以下输出:
如果我们想从部门表中获取最后插入的dept_id,我们将遵循以下过程:
在插入命令中插入新行后,我们将使用RETURNING 子句,这是 SQL 的 PostgreSQL 扩展。
以下命令在部门表中插入一个新行并返回最后插入的Dept_id:
INSERT INTO department (dept_name, last_update)
VALUES('IT',DEFAULT)
RETURNING Dept_id;
输出
一旦我们执行了上面的命令,我们就会得到 Dept_id=7。
之后,我们将使用 Select 命令来检查dept_id是否正确。
Select * from department;
输出
一旦我们执行Select命令,我们可以看到,一旦我们创建的客户表,我们将插入一个行对客户表下面命令的帮助:DEPTID比赛**最后插入Dept ID在部门**表。
PostgreSQL 插入命令使用 psql
在 SQL shell(psql) 中,我们将首先借助以下命令在javatpoint 数据库中创建一个名为Customer table 的表:
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
);
一旦我们创建了客户表,我们将在以下命令的帮助下将一行插入到客户表中:
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 命令检查上述值是否插入Customer 表中。
Select* from customer;
输出
执行上述命令后,我们将得到以下输出:
相关文章:
- [PostgreSQL教程]PostgreSQL特性-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL版本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL语法-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL序列-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL数字-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL字符-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL文本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL变量-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL整数-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL串行-PostgreSQL教程|
相关推荐:
- [PostgreSQL教程]PostgreSQL与SQLite-PostgreSQL教程|
- [PostgreSQL教程]MongoDB与PostgreSQL-PostgreSQL教程|
- [PostgreSQL教程]psqlcommands-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLDate&TimeFunction-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLFunctions-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL禁用触发器-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL左连接-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLANDCondition-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL获取子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQL与SQLServer-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLEXCEPT-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- psqlcommands-PostgreSQL教程|
- PostgreSQLDate&TimeFunction-PostgreSQL教程|
- PostgreSQL删除触发器-PostgreSQL教程|
- PostgreSQLOrderby子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLAlias-PostgreSQL教程|
- PostgreSQLNot-NullConstraint-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- PostgreSQL左连接-PostgreSQL教程|