PostgreSQL INSERT:向表中插入数据
PostgreSQL INSERT 语句
在 PostgreSQL 中,insert 语句用于将新行或行插入到表中。您可以插入由值表达式指定的行,零行或多行查询结果。
PostgreSQL INSERT INTO 语法
INSERT INTO TABLE_NAME (column1, column2, ...columnN) VALUES (value1, value2,...valueN);
您可以在上述语法中看到,列 1 到 N 是您要插入数据的表中的列名。目标列需要按任何特定顺序排列。由查询或 values 子句提供的值是列的相应值。
查询执行后,您可以看到输出消息。
Insert oid 1
如果只插入了一行,将显示此输出消息,oid 是分配给已插入行的数字 OID。
PostgreSQL Insert Into 表示例
考虑以下具有两列的表“tutorials”。
“id” integer DEFAULT value 1
“tutorial_name” text DEFAULT value postgre
并且没有约束
以下是 PostgreSQL insert into table 的步骤
第 1 步) 插入一行到
INSERT INTO tutorials(id, tutorial_name) VALUES (1, 'postgre');
注意:插入行时,只有字符或日期值需要用单引号括起来。
第 2 步) 但是,如果您向所有列插入数据,则可以省略列名。相同的 insert 语句也可以写成:
INSERT INTO tutorials VALUES (1, 'postgre');
第 3 步) 数据值按列在表中的顺序排列,并用逗号分隔。
上述语法存在一个问题,即您需要知道表中列的顺序。为了解决这个问题,您也可以显式列出列。
例如,以下两个命令都具有与下面显示的相同的效果
INSERT INTO tutorials(id, tutorial_name) VALUES (1, 'postgre'); INSERT INTO tutorials(tutorial_name, id) VALUES ('postgre',1);
第 4 步) 在此示例中,您可以看到,如果您没有所有列的值,则可以省略其中的一些。
在这种情况下,如果指定了默认值,则列将自动用其默认值填充。
INSERT INTO tutorials(id) VALUES (5);
第 5 步) 您还可以为单个列或整个行请求默认值
INSERT INTO tutorials(id, tutorial_name) VALUES (1, DEFAULT); INSERT INTO tutorials DEFAULT VALUES;
第 6 步) 您可以使用单个命令插入多行
INSERT INTO tutorials(id, tutorial_name) VALUES (1, 'postgre'), (2, 'oracle'), (3, 'mysql'), (4, 'mongo');
第 7 步) 在 PostgreSQL 中,插入查询结果(可能为零行、一行或多行)也是可行的
INSERT INTO tutorials (id, tutorial_name) SELECT id, tutorial_name FROM tutorials WHERE tutorial_name = 'mysql';
使用 pgAdmin 的 PostgreSQL Insert 语句
以下是使用 pgAdmin in Postgre SQL 进行 Insert 语句的步骤
第 1 步) 在对象树中
- 右键单击要插入数据的表
- 选择 Scripts
- INSERT Script
第 2 步) 在 Insert Panel 中
- 编辑查询
- 单击闪电按钮
- 观察输出
第 3 步) 您也可以转到 Tools > Query Tools 来打开 Query Editor,但您不会得到默认的 insert 查询。
摘要
代码/参数/提示 | 描述 |
---|---|
INSERT INTO TABLE_NAME (column1, column2, …columnN) VALUES (value1, value2,…valueN); |
用于将值插入表中 |
INSERT INTO tutorials(id, tutorial_name) VALUES (1, ‘postgre’); INSERT INTO tutorials(tutorial_name, id) VALUES (‘postgre’,1); |
列的顺序不重要。两者都将产生相同的影响。 |
INSERT INTO tutorials VALUES (1, ‘postgre’); | 如果您为所有列提供值,则无需指定 |
INSERT INTO tutorials (id, tutorial_name) SELECT id, tutorial_name FROM tutorials WHERE tutorial_name = ‘mysql’; |
您可以在 INSERT 查询中指定一个或多个通过名称引用的子查询。 |
DEFAULT VALUES | 使用此子句用其默认值填充所有列。 |
expression | 应分配给相应列的值和表达式。 |
omeDEFAULT | 当相应列用其默认值填充时,使用 default 子句。 |