PostgreSQL数据操纵¶
Author:李东阳
1、插入数据(INSERT)¶
首先,我们先创建一张表(还是之前的那张产品表):
然后我们就可以往里面插入数据了:
当然你也可以显示的列出列,然后在插入数据:
推荐这么写!!!
如果你没有获得所有列的值,那么你可以省略其中的一些。在这种情况下,这些列将被填充为它们的缺省值。例如:
你还可以同时插入多行数据:
INSERT INTO products (product_no, name, price) VALUES
(1, 'Cheese', 9.99),
(2, 'Bread', 1.99),
(3, 'Milk', 2.99);
而且你也可以插入查询出来的结果:
INSERT INTO products (product_no, name, price)
SELECT product_no, name, price FROM new_products
WHERE release_date = 'today';
2、更新数据(UPDATE)¶
你可以更新单个行,也可以更新表中所有的行,还可以更新其中的一部分行。 我们可以独立地更新每个列,而其他的列则不受影响。
要更新现有的行,使用UPDATE命令。这需要提供三部分信息:
-
表的名字和要更新的列名
-
列的新值
-
要更新的是哪(些)行
所有价格为5的产品的价格更新为10:
关键字SET
, 后面跟着列名、一个等号以及新的列值。新的列值可以是任意标量表达式, 而不仅仅是常量。例如,如果你想把所有产品的价格提高 10%,你可以用:
3、删除数据(DELETE)¶
可以使用DELETE命令删除行,它的语法和UPDATE
命令非常类似。例如,要从产品表中删除所有价格为 10 的产品,使用:
如果你只是写:
那么表中所有行都会被删除!你小子注意点。
4、从修改的行中返回数据¶
有时在修改行的操作过程中获取数据很有用。INSERT
、 UPDATE
和DELETE
命令都有一个支持这个的可选的 RETURNING
子句。使用RETURNING
可以避免执行额外的数据库查询来收集数据,并且在否则难以可靠地识别修改的行时尤其有用。
在INSERT
中,可用于RETURNING
的数据是插入的行。 这在琐碎的插入中并不是很有用,因为它只会重复客户端提供的数据。 但依赖于计算出的默认值时可以非常方便。例如,当使用 serial
列来提供唯一标识符时, RETURNING
可以返回分配给新行的ID:
CREATE TABLE users (firstname text, lastname text, id serial primary key);
INSERT INTO users (firstname, lastname) VALUES ('Joe', 'Cool') RETURNING id;
RETURNING
子句对于INSERT ... SELECT
也非常有用。
在UPDATE
中,可用于RETURNING
的数据是被修改行的新内容。 例如:
在DELETE
中,可用于RETURNING
的数据是删除行的内容。例如: