目录
一、DML概述
数据操作语言(Data Manipulation Language, DML)是SQL的核心组成部分,用于对数据库中的数据进行增删改查操作。Oracle中的主要DML命令包括INSERT、UPDATE、DELETE和MERGE,这些命令构成了日常数据库操作的基础。
DML命令的主要特点
- 需要显式提交:DML操作不会自动提交,需要显式执行COMMIT
- 可回滚:在提交前可以使用ROLLBACK撤销操作
- 产生重做日志:会生成重做日志以保证数据可恢复性
- 锁定资源:操作期间会锁定受影响的数据行
二、INSERT命令详解
INSERT命令用于向表中添加新行数据,是最基本的数据操作之一。
1. 基本INSERT语法
INSERT INTO table_name [(column1, column2, ..., columnN)]
VALUES (value1, value2, ..., valueN);
示例1:向员工表插入单条记录
INSERT INTO employees (emp_id, emp_name, hire_date, salary, dept_id)
VALUES (1001, '张伟', TO_DATE('2023-01-15', 'YYYY-MM-DD'), 8500, 10);
示例2:插入部分列数据
INSERT INTO employees (emp_id, emp_name, dept_id)
VALUES (1002, '李娜', 20);
2. 多行插入技术
Oracle提供了多种方式实现多行插入:
方法1:使用多个INSERT语句
INSERT INTO employees VALUES (1003, '王强', SYSDATE, 9200, 10);
INSERT INTO employees VALUES (1004, '赵敏', SYSDATE, 7800, 20);
INSERT INTO employees VALUES (1005, '刘芳', SYSDATE, 10500, 30);
方法2:使用INSERT ALL语法
INSERT ALL
INTO employees VALUES (1006, '陈晨', SYSDATE, 8800, 10)
INTO employees VALUES (1007, '杨光', SYSDATE, 9500, 20)
INTO employees VALUES (1008, '周涛', SYSDATE, 11500, 30)
SELECT * FROM dual;
方法3:使用子查询插入
INSERT INTO new_employees
SELECT * FROM employees WHERE hire_date > TO_DATE('2023-01-01', 'YYYY-MM-DD');
3. 高级INSERT技术
使用DEFAULT值
INSERT INTO employees (emp_id, emp_name, hire_date, salary)
VALUES (1009, '吴迪', DEFAULT, 7500);
使用RETURNING子句获取生成值
INSERT INTO employees (emp_id, emp_name, salary)
VALUES (emp_seq.NEXTVAL, '郑凯', 8200)
RETURNING emp_id INTO v_emp_id;
使用WITH CHECK OPTION插入
INSERT INTO (SELECT emp_id, emp_name, salary FROM employees WHERE dept_id = 10 WITH CHECK OPTION)
VALUES (1010, '孙伟', 9000);
三、UPDATE命令详解
UPDATE命令用于修改表中已存在的数据行。
1. 基本UPDATE语法
UPDATE table_name
SET column1 = value1, column2 = value2, ..., columnN = valueN
[WHERE condition];
示例1:更新单个员工薪资
UPDATE employees
SET salary = 9500
WHERE emp_id = 1001;
示例2:基于表达式更新
UPDATE employees
SET salary = salary * 1.1 -- 涨薪10%

6104

被折叠的 条评论
为什么被折叠?



