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;

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1