Oracle实践数据库笔记-4
Rehoni / 2018-03-13
PL/SQL QL(select)
循环 (sql中用斜杠/执行命令)
- 绝对循环
- while循环
- for循环
begin
for i in 1..10 loop
insert into t1 values(i);
end loop;
commit;
end;(功能结束就加分号,块结束)
块结构
- 声明部分(可选)
- 可执行部分(必须)
- 异常处理部分(可选)
- 匿名块:4个部分
- declare
- begin
- exception
- end
- 命名块:
create or replace procedure p1
as
begin
for i in 1..10 loop
insert into t1 values(i);
end loop;
commit;
end;
select a.id,b.id from t1 a,t1 b
where a.id+5=b.id;
或者where a.id+(select count(*) from t1)/2=b.id;
where a.id+round((select count(*) from t1)/2)=b.id; //round 四舍五入
不显示12的话,用外部语句
where a.id+round((select count(*) from t1)/2)=b.id(+); //报错
where a.id=b.id(+)-round((select count(*) from t1)/2);
and a.id<=round((select count(*) from t1)/2);
子查询
- 嵌套子查询
- 关联子查询
查询lastname,
条件老百姓,不要领导
select last_name from employees
where employee_id not in (select nvl(manager_id,0) from employees)
select last_name from employees e
where not exists
(select employee_id from employees
where e.employee_id = manager_id)
- &
- define
- &&
select empno,ename from emp where ename=upper(&xm);
define gh=7839; //undefine 取消定义
select empno,ename from emp where ename=&gh;
select empno,ename,&c3 from emp order by &c3;
select empno,ename,&&c3 from emp order by &c3;
DML(insert,update,delete.merge)
grant ...限制
select department_id from departments order by 1;
合并 读写一致性
回滚段的作用:
- 读一致性
- 回退
- 闪回回复