表的创建修改及增删改查-DML操作(二)
表结构还在,不写日志,无法找回删除的记录,速度快。DDL语句
truncate TABLE student;
truncate table
这样默认会回收 Extent 的,应该会慢的。
如果是 truncate table resuse storage ,这样快
truncate表时如遇到主外键约束引起的报错,可以临时关闭相应约束。
SQL> truncate table table_name;
truncate table table_name * ERROR 位于第 1 行: ORA-02266: 表中的唯一/主键被启用的外部关键字引用
SQL> alter table dorm_employee disableprimary key cascade; 表已更改。
SQL> truncate table dorm_employee; 表已截掉。
SQL> alter table dorm_employee enableprimary key; 表已更改。
10.还原点的设置和使用
提交COMMIT或ROLLBACK后,所有还原点失效。
设置还原点
Savepoint a;
进行修改操作
Savepoint b;
进行删除操作
Savepoint c;
插入操作;
Rollback to a/b/c
可以回滚到设置还原点的状态。
11.分页的操作可以按rowid,RK分析函数。Rownum来分页
下面最主要介绍第三种:按rownum来分
1. rownum 分页
SELECT * FROM emp;
2. 显示rownum[oracle分配的]
SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e;
rn相当于
Oracle分配的行的ID号
3.挑选出6—10条记录
先查出1-10条记录
SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e WHERE ROWNUM <=10;
如果后面加上rownum>=6是不行的,
4. 然后查出6-10条记录
SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e WHEREROWNUM <= 10) WHERE rn >= 6;
5. 几个查询变化
a. 指定查询列,只需要修改最里层的子查询
只查询雇员的编号和工资
SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT ename, sal FROMemp) e WHERE ROWNUM <= 10) WHERE rn >= 6;
b. 排序查询,只需要修改最里层的子查询
工资排序后查询6-10条数据
SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT ename, sal FROMemp ORDER by sal) e WHERE ROWNUM <= 10) WHERE rn >= 6;