①INSERT 语句语法
insert into emp1 values(1001,'AA',sysdate,10000);
insert into emp1 values(1002,'BB',to_date('1998-12-21','yyyy-mm-dd'),20000);
--指定需要赋值的列
insert into emp1(employee_id,last_name,hire_date) values(1004,'DD',to_date('1999-12-21','yyyy-mm-dd'));
②从其它表中拷贝数据
insert into emp1(employee_id,hire_date,last_name,salary) select employee_id,hire_date,last_name,salary from employees where department_id=80;
③创建脚本
insert into emp1(employee_id,last_name,salary,hire_date)values(&id,'&name',&salary,'&hire_date');
④UPDATE 语句语法更新数据
可以一次更新多条数据
--指定更新的数据
update emp1 set salary = 12000 where employee_id = 179;
--更新 114号员工的工作和工资使其与205号员工相同
update employees1 set job_id=(select job_id from employees1 where employee_id=205),salary =(select salary from employees where employee_id=205)where employee_id=114;
--调整与employee_id 为200的员工job_id相同的员工的department_id为employee_id为100的员工的department_id。
update employees1 set department_id=(select department_id from employees1 where employee_id=100)where job_id=(select job_id from employees1 where employee_id =200);
⑤DELETE 语句删除数据(可以回滚)
使用 WHERE 子句删除指定的记录,如果省略 WHERE 子句,则表中的全部数据将被删除
--从employees1表中删除dept1部门名称中含Public字符的部门id
delete from employees1 where department_id=(select department_id from departments where department_name like 'Public%');
⑥数据库事务
事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。
①数据库事务由以下的部分组成:
一个或多个DML 语句
一个 DDL(Data Definition Language – 数据定义语言) 语句
一个 DCL(Data Control Language – 数据控制语言) 语句
②以第一个 DML 语句的执行作为开始
③以下面的其中之一作为结束:
COMMIT 或 ROLLBACK 语句
DDL 语句(自动提交)
用户会话正常结束
系统异常终止
COMMIT和ROLLBACK语句的优点:
使用COMMIT 和 ROLLBACK语句,可以:
确保数据完整性。
数据改变被提交之前预览。
将逻辑上相关的操作分组。
如下作为额演示:
第一步:
update employees1 set last_name = 'abc' where employee_id = 206;
第二步:
commit;(此时修改的数据已被固定,无法rollback)
第三步:
update employees1 set last_name = 'abcd' where employee_id = 206;
执行完上述语句,如果不使用commit,此时使用rollback,可以回退到第一步执行之后的数据
⑦回滚到保存点
使用 SAVEPOINT 语句在当前事务中创建保存点。
使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。
事务进程:
自动提交在以下情况中执行:
DDL 语句。
DCL 语句。
不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话。
会话异常结束或系统异常会导致自动回滚
提交或回滚前的数据状态:
改变前的数据状态是可以恢复的
执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正
其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
DML语句所涉及到的行被锁定, 其他用户不能操作。
提交后的数据状态:
数据的改变已经被保存到数据库中。
改变前的数据已经丢失。
所有用户可以看到结果。
锁被释放,其他用户可以操作涉及到的数据。
所有保存点被释放。
第一步:
delete from employees1 where employee_id = 205;
第二步:
savepoint A;
第三步:
delete from employees1 where employee_id = 204;
第四步:
savepoint B;
第五步:
rollback to savepoint A;