PostgreSQL 插入 PostgreSQL ALTER 架构 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 ALTER 架构 PostgreSQL 选择