12-4 程宗武
Oracle
1.视图
--创建视图
CREATE VIEW 视图名称 AS 子查询
-- 查找视图
select * from 视图名称
-- 修改视图 (对表的直接修改)
update empview set sal = 900.0 where empno = 7369
-- 创建只读视图(不能对表进行修改)
CREATE VIEW 视图名称 AS 子查询 with read only;
2.索引
-- 创建单列索引
CREATE index 索引名 on 表名(列名)
-- 创建多列索引(在触发索引时会由左向右进行差法)
Create index 索引名 on 表名(列名1,列名2)
3. PL/SQL块
PL/SQL块结构
[DECLARE
--对变量或者常量的定义]
BEGIN
--执行指令
[EXCEPTION
--异常处理]
END;
--例
declare
i number(2):= 66; -- 变量名 数据类型 := 赋值
begin
dbms_output.put_line(i);
end;
-- 将数据库中查询出来的值赋给变量
declare
i number(10,2);
begin
select sal into i from emp where empno = 7788;
dbms_output.put_line(i);
end;
-- 常量的赋值(CONSTANT关键字声明为常量 ,可以使用:=赋值,也可以使用DEFAULT赋值)
pi CONSTANT number := 3.14;
属性数据类型
-- % ROWTYPE 引用一行记录作为数据类型,这一行记录相当于一个对象,可以使用.的方式访问
declare
emp_model emp%rowtype;
begin
select * into emp_model from emp where empno = 7788;
dbms_output.put_line('emp_model.sal = ' || emp_model.sal);
end;
--%TYPE 引用某列的数据类型或者变量的数据类型
--引用列的数据类型
mysal emp.sal%type;
--引用变量的数据类型
money number(4):=3000;
totalsal money%TYPE;
4.PL/SQL条件控制和循环控制
--条件控制
-- PL/SQL中IF语法
if 条件 then
-- 条件结构体
end if;
-- PL/SQL中IF语法
IF 条件 THEN
--条件成立结构体
ELSE
--条件不成立结构体
END IF;
IF 条件1 THEN
--条件1成立结构体
ELSIF 条件2 THEN
--条件2成立结构体
ELSE
--以上条件都不成立结构体
END IF;
CASE [selector]
WHEN 表达式1 THEN 语句序列1;
WHEN 表达式2 THEN 语句序列2;
WHEN 表达式3 THEN 语句序列3;
……
[ELSE 语句序列N];
END CASE;
--循环结构
LOOP
--循环体
END LOOP;
WHILE 条件 LOOP
--循环体
END LOOP;
FOR 循环变量 IN [REVERSE] 循环下限..循环上限 LOOP
--循环体
END LOOP;
游标Cursor
--游标可以存储查询返回的多条数据。
CURSOR 游标名 [ (参数名 数据类型,参数名 数据类型,...)] IS SELECT 语句;
declare
cursor pc is select * from emp; --将查询出来的结果集放到 游标pc中
pemp emp%rowtype; --将每一行的结果赋给pemp
begin
open pc; --打开游标执行查询
loop
fetch pc into pemp; --遍历
if pemp.deptno = 10 then
update emp
set emp.sal=emp.sal+1.0
where emp.deptno = 10;
end if;
commit;
exit when pc%notfound;
end loop;
close pc;
end;
点赞
评论留言