【PostgreSQL 17】12 DML语句

插入数据

指定字段

INSERT INTO dept(department_id, department_name)
VALUES(10, 'Administration');

为所有字段顺序指定值 可省略字段名

INSERT INTO dept
VALUES(20, 'Design');

多行 VALUES之后逗号分隔

INSERT INTO dept
VALUES
	(30, 'Software'),
	(40, 'Sale');

复制数据

可以将一个查询语句的结果插入表中

CREATE TABLE dept1 (LIKE dept);

INSERT INTO dept1
SELECT * FROM dept;

SELECT * FROM dept1;

返回插入结果

INSERT INTO dept
VALUES (50, 'Purchasing')
RETURNING department_id, department_name;

image

更新数据

单表更新

UPDATE dept
SET department_id = department_id + 100;

跨表更新

UPDATE dept1 t1
SET department_name = t.department_name
FROM dept t
WHERE t.department_id = t1.department_id;

返回更新后的数据

UPDATE dept1
SET department_name='No';

UPDATE dept1 t1
SET department_name = t.department_name
FROM dept t
WHERE t.department_id = t1.department_id
RETURNING *;

image

删除数据

单表删除

DELETE FROM dept
WHERE department_id = 10;

TABLE dept;

跨表删除

DELETE FROM dept1 t1
USING dept t
WHERE t.department_id = t1.department_id;

返回所删除的记录

DELETE FROM dept 
WHERE department_id > 20
RETURNING *;

合并数据

INSERT INTO ON CONFLICT

INSERT INTO dept
VALUES (10, 'Design')
ON CONFLICT (department_id)
DO NOTHING;

参考资料

[1] 不剪发的Tony老师【PostgreSQL开发指南】第37节

posted @ 2025-12-09 13:58  苦涩如影相随固  阅读(8)  评论(0)    收藏  举报