PostgreSQL DML语句详解:INSERT, UPDATE, DELETE与INSERT ON CONFLICT
113 浏览量
更新于2024-08-29
收藏 68KB PDF 举报
"《PostgreSQL开发指南》的第22篇专注于DML(Data Manipulation Language)语句,即用于管理数据库中数据的SQL命令。本文档主要讲解了如何使用INSERT、UPDATE、DELETE以及INSERT ON CONFLICT这四种语句来对表中的数据进行增、改、删操作。通过两个示例表——dept和emp,详细阐述了这些语句的具体应用。"
在PostgreSQL中,DML语句是数据库操作的核心部分,它们允许我们与数据库进行交互,修改其内容。首先,我们来看创建表的语法,创建了两个表:`dept`用于存储部门信息,`emp`用于存储员工信息。`dept`表有`department_id`和`department_name`两列,其中`department_id`为主键。`emp`表包含`employee_id`、`first_name`、`last_name`、`hire_date`、`salary`、`manager_id`和`department_id`,其中`employee_id`为主键,`department_id`和`manager_id`为外键,分别引用`dept`表和`emp`表的`department_id`,并且设定了级联删除。
接着,我们探讨如何使用DML语句:
1. INSERT语句:用于向表中插入新数据。例如,要向`dept`表中插入一条新的部门记录,我们可以使用以下语句:
```sql
INSERT INTO dept(department_id, department_name) VALUES(10, 'Administration');
```
这将在`dept`表中创建一个新记录,`department_id`为10,`department_name`为'Administration'。
2. UPDATE语句:用于修改表中已存在的数据。如果我们想更改某个部门的名称,可以这样写:
```sql
UPDATE emp SET last_name = 'Smith' WHERE employee_id = 1;
```
这将找到`employee_id`为1的员工,并将其`last_name`更改为'Smith'。
3. DELETE语句:用于删除表中的记录。例如,要删除`dept`表中`department_id`为10的部门,我们可以执行:
```sql
DELETE FROM dept WHERE department_id = 10;
```
这会删除`dept`表中所有`department_id`为10的记录。
4. INSERT ON CONFLICT语句:这是一种特殊的插入操作,当尝试插入的记录与现有记录冲突时,可以根据设定的策略进行处理。例如,如果尝试插入一个已经存在的`employee_id`,我们可以使用`ON CONFLICT DO NOTHING`或`ON CONFLICT DO UPDATE`来避免错误。假设我们希望在冲突时更新`salary`,可以写成:
```sql
INSERT INTO emp(employee_id, salary) VALUES(1, 50000) ON CONFLICT (employee_id) DO UPDATE SET salary = EXCLUDED.salary;
```
这会检查`employee_id`是否已存在,如果存在,则更新相应的`salary`。
以上就是对`dept`和`emp`表进行DML操作的基本方法。理解并熟练掌握这些语句,将有助于我们在实际的数据库管理中更加高效地操作数据。对于初学者来说,通过实践和练习,可以更好地理解和运用这些概念。
2007-08-20 上传
2020-05-26 上传
2023-10-12 上传
2023-05-10 上传
2023-05-10 上传
2023-09-13 上传
2024-01-29 上传
2023-06-08 上传
2023-03-30 上传
weixin_38703468
- 粉丝: 14
- 资源: 950
最新资源
- 十种常见电感线圈电感量计算公式详解
- 军用车辆:CAN总线的集成与优势
- CAN总线在汽车智能换档系统中的作用与实现
- CAN总线数据超载问题及解决策略
- 汽车车身系统CAN总线设计与应用
- SAP企业需求深度剖析:财务会计与供应链的关键流程与改进策略
- CAN总线在发动机电控系统中的通信设计实践
- Spring与iBATIS整合:快速开发与比较分析
- CAN总线驱动的整车管理系统硬件设计详解
- CAN总线通讯智能节点设计与实现
- DSP实现电动汽车CAN总线通讯技术
- CAN协议网关设计:自动位速率检测与互连
- Xcode免证书调试iPad程序开发指南
- 分布式数据库查询优化算法探讨
- Win7安装VC++6.0完全指南:解决兼容性与Office冲突
- MFC实现学生信息管理系统:登录与数据库操作