dba从另一个用户的表下复制表
create table 表名 as select * from 用户名.表名
视图:提供了一个查询窗口,所有的数据来源于原表
本质:封装了一个SQL语句,查询的时候执行的的是子查询
语法:create view 视图名称 as 子查询 with ready only
索引:在表的列上构建一个二叉树,提高查询效率,但是影响效率。创建索引的时候,全表扫描,创建二叉树,将数据添加到结点中
应用场景:百万级别的数据量,常用而不修改的列上
单列索引:
create index idx_ename on emp(ename)
复合索引:
create index idx_enamejob on emp(ename,job)
索引的触发条件:
单列:条件必须是索引列中的原始数据
复合:第一列为优先检索
变量的声明:declare :=
变量类型:就是给变量一个类型/占用内存的大小
基本,
引用/对应列的类型 , emp.ename%type 变量类型跟ename一样
记录/对象 emp%rowtype 表示的是对应的一行数据
逻辑内容:begin…end;
变量的赋值:
基本类型:i varcher(32) :=‘tom’;
引用类型:select ename into 变量名
记录类型:select * into 变量名
if分支 逻辑运算符 = != <> i=i+1 i++
模板
if 条件 then 执行语句; 事务;
[elsif 条件 then 执行语句;事务;]
[else 执行语句 事务;]
end if;
循环loop
while while 条件 loop 执行语句 end loop;
exit loop exit when条件;执行语句;end loop;
for for 变量 in 1…10 loop 执行 end loop;
游标:存放多个对象,多个记录的一个集合
使用步骤
1 定义
cursor 游标名(形参,变量类型) is 子查询
2 打开
open 游标名(实参);
3 循环提取
loop fetch 游标名 into 变量;
exit when 有表明%notfound;
SQL语句
事务;
4 关闭游标 close 游标名称
记忆:
1 定义游标,并定义游标存储的数据类型
2 打开游标,给形参赋值
3 循环提取,直到没有退出
4 关闭游标
sql中的方法:提前将已经准备好的一段SQL语句,放在数据库中,可以直接被调用,一般都是固定的业务步骤
储存过程:就是没有返回值的一个函数,用于增删改
语法:
create or replace procedure 过程名(arg in/out Type)
as/is
变量声明(用在sql语句的参数)
begin
PLSQL子程序体
end;
存储函数:
create or replace function 函数名(arg Type)
return Type
is
变量声明(用在sql语句的参数)
begin
PLSQL子程序体
return 变量
end;
存储结果实例:
create or replace function f_yearsal(eno number)
return number
is
s number;
begin
select sal*12+nvl(comm,0) into s from emp where empno=eno;
return s;
end;
declare
s number;
begin
s:=f_yearsal(7788);
dbms_output.put_line(s);
end;
存储过程实例:
create or replace procedure p_yearsal(eno number,yearsal out number)
is
s number;
c number;
begin
select sal*12,nvl(comm,0) into s,c from emp where empno=eno;
yearsal:=c+s;
end;
declare
yearsal number;
begin
p_yearsal(7788,yearsal);
dbms_output.put_line(yearsal);
end;
存储过程和存储结果
和java的方法相似,
过程是返回值为void的方法,也就是没有返回值,所以不用return ,
而结果是方法声明的时候是要声明返回值类型 第一个return是类型,结果的返回值是具体的值